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

来源:互联网 发布:单片机电源插口 编辑:程序博客网 时间:2024/06/04 18:27

现象:

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

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

通过逻辑分析仪查看时钟时发现写数据时只出现4个时钟脉冲,后续一直为高。
如果查看SPI时钟频率2Mhz时的时钟如下图所示
2Mhz时钟
可以发现第一个时钟的占空比还算正常,后续的占空比逐渐增加,到第八个时钟时已经达到88%。

原因

原理图上,SPI的时钟加了一个RC滤波电路
原理图
电容设计时为1nF,但是实际测量时偏大(10nF),导致截止频率下降,当时钟频率过高时就会被滤波。

解决方法

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

0 0
原创粉丝点击