请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

分享一下调试 SPI的心得

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

收藏 评论4 发布时间:2025-3-13 11:06

举报

4个回答
zhoupxa 回答时间:2025-3-13 23:28:37

对第1个问题有不同看法:

硬件IIC作为可独立运作的外设,只要初始化正确,应该不受其他同时工作的外设的影响才对,如果有问题那也应该是软件层面处理不当造成的。

〃聪聪哥哥 回答时间:2025-3-14 08:42:15

zhoupxa 发表于 2025-3-13 23:28
对第1个问题有不同看法:</p>
<p>硬件IIC作为可独立运作的外设,只要初始化正确,应该不受其他同时工作的外设 ...

[md]SPI 硬件IIC通讯使用起来会比软件模拟IIC性能更好一些,我使用IIC时候,驱动OLED屏幕,会出现屏幕显示不正常的情况,

难道是我代码配置的问题,不确定其他人在使用硬件IIC 驱动的时候 会不会有问题

电子烂人 回答时间:2025-3-14 11:47:01

另外说一点,SPI的这部分的时钟是可以拆分开的,当时做一个芯片从FPGA移植到STM32,读+写16位,理应是两个八位拼接起来,但是我和另一个同事以为是由一个16位的位宽,最后进示波器分析才发现这个问题

〃聪聪哥哥 回答时间:2025-3-14 18:46:44
电子烂人 发表于 2025-3-14 11:47
另外说一点,SPI的这部分的时钟是可以拆分开的,当时做一个芯片从FPGA移植到STM32,读+写16位,理应是 ...

[md]这个我还真没测试过,一直都是直接发送数据,一般很少用示波器来抓取数据。主要是也不太会用示波器看数据
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版