做为一个从事多年嵌入式的软件工程师,和大家分享一下在使用STM32时遇到的”坑“,其实后来发现是自己的能力不足。
1:在使用硬件IIC时:STM32的硬件I2C在某些工作频率下(如100kHz和400kHz)可能会出现卡住的现象。这可能是由于硬件设计或驱动程序的限制所导致的。在读取或发送数据时,如果有其他中断事件干扰,也可能导致硬件I2C卡住。我当时在使用的时候在驱动IIC的OLED屏幕时候,就发现了有时候屏幕会有花屏的现象。
解决办法:需要我们在实际应用中,尽量使用较低的工作频率,以减少卡住的风险。
确保在数据传输过程中没有其他中断事件的干扰。
如果可能的话,使用软件模拟I2C通信,以获得更灵活的控制和更好的兼容性。
2:在调试硬件SPI的时候,:SPI通信中的时钟极性(CPOL)和时钟相位(CPHA)是两个关键参数。它们定义了时钟信号在空闲状态下的电平和数据采样的时机。当时是利用硬件的SPI读取两个芯片,一个是存储芯片(AT45DB041),一个是AD芯片(CS5530),由于这个两个芯片的读取数据的起始位不同,一个是在上升沿读取数据,另外一个是在下降沿读取数据,当时也是调试好久才发现,读取数据的位置不一致,当初也是刚毕业,也没有太多的工作经验,还以为是芯片损坏,现在想起来还是真的小白了。后来工作时间久了才发现,影响SPI通讯不正常的原因有很多,需要注意硬件连接、通信协议与时序、数据传输等方面。
最后,不过最后近几年国产32的崛起,让大家有了更多的选择,CW32,GD32,APM32,MM32,CH32,AT32,希望国内的软硬件工程师有闲暇之余多多关注国产的32芯片吧。。。。。。。。。。。。。。。。。
|