STM32L431之SPI时钟过高导致无法通信

[复制链接]
baicai 发表于 2018-8-14 10:03:17 | 显示全部楼层 |阅读模式
现象:

SPI的clock为2Mhz时通信正常,如果是4Mhz甚至更高则无法通信。卡死在

while (0 == (SPI1->SR & SPI_SR_TXE));

通过逻辑分析仪查看时钟时发现写数据时只出现4个时钟脉冲,后续一直为高。
如果查看SPI时钟频率2Mhz时的时钟如下图所示

可以发现第一个时钟的占空比还算正常,后续的占空比逐渐增加,到第八个时钟时已经达到88%。

原因

原理图上,SPI的时钟加了一个RC滤波电路

电容设计时为1nF,但是实际测量时偏大(10nF),导致截止频率下降,当时钟频率过高时就会被滤波。

解决方法

去掉电容或者换个540pF的电容,时钟频率提高之后通信依然正常。





上一篇:STM32L431之SPI从模式使用DMA时数据偏移3个字节
下一篇:STM32L431之SPI时钟翻倍问题

本版积分规则

QQ|Archiver|手机版|小黑屋|RD之家 - 研发工程师的伊甸园 ( 京ICP备18037383号 )
360导航 360安全浏览器 蚂蚁搜索 速搜全球 酷帝网站目录 搜狗导航 114啦网址导航

GMT+8, 2018-9-23 11:15

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表