
做为一个从事多年嵌入式的软件工程师,和大家分享一下在使用STM32时遇到的”坑“,其实后来发现是自己的能力不足。 1:在使用硬件IIC时:STM32的硬件I2C在某些工作频率下(如100kHz和400kHz)可能会出现卡住的现象。这可能是由于硬件设计或驱动程序的限制所导致的。在读取或发送数据时,如果有其他中断事件干扰,也可能导致硬件I2C卡住。我当时在使用的时候在驱动IIC的OLED屏幕时候,就发现了有时候屏幕会有花屏的现象。 解决办法:需要我们在实际应用中,尽量使用较低的工作频率,以减少卡住的风险。 确保在数据传输过程中没有其他中断事件的干扰。 如果可能的话,使用软件模拟I2C通信,以获得更灵活的控制和更好的兼容性。 2:在调试硬件SPI的时候,:SPI通信中的时钟极性(CPOL)和时钟相位(CPHA)是两个关键参数。它们定义了时钟信号在空闲状态下的电平和数据采样的时机。当时是利用硬件的SPI读取两个芯片,一个是存储芯片,一个是AD芯片,由于这个两个芯片的时序不一致,一个是在上升沿读取数据,另外一个是在下降沿读取数据,当时也是调试好久才发现,时序不一致,当初也是刚毕业,也没有太多的工作经验,还以为是芯片损坏,现在想起来还是真的小白了。后来工作时间久了才发现,影响SPI通讯不正常的原因有很多,需要注意硬件连接、通信协议与时序、数据传输等方面。 还有就是SPI驱动屏幕时候,对时序的要求真的是严格。 |
STM32MP1和STM32MP2有什么不同
STM32在ATE测试机上的测试方法
myst账号无法注册,邮箱确认链接点进后显示The validation link you have provided has expired or been
咨询STM32F407可以实现数字锁相环功能吗
stm32编程语言
IIS3DWB使用中遇到了问题
学习,大家是选择看书,还是看视频。
STM32F103突然下载不了程序,板子可以识别到,大佬可以帮我看下吗?
STM32G030 TIM14,TIM16,TIM17无法触发ADC采样?
用Kiel打开代码时,电脑显示只读。
对第1个问题有不同看法:
硬件IIC作为可独立运作的外设,只要初始化正确,应该不受其他同时工作的外设的影响才对,如果有问题那也应该是软件层面处理不当造成的。
[md]SPI 硬件IIC通讯使用起来会比软件模拟IIC性能更好一些,我使用IIC时候,驱动OLED屏幕,会出现屏幕显示不正常的情况,
难道是我代码配置的问题,不确定其他人在使用硬件IIC 驱动的时候 会不会有问题
另外说一点,SPI的这部分的时钟是可以拆分开的,当时做一个芯片从FPGA移植到STM32,读+写16位,理应是两个八位拼接起来,但是我和另一个同事以为是由一个16位的位宽,最后进示波器分析才发现这个问题
[md]这个我还真没测试过,一直都是直接发送数据,一般很少用示波器来抓取数据。主要是也不太会用示波器看数据