[AT32F403/403A] SPI 主模式通信偶发数据

[复制链接]
3275|2
 楼主| 花开了相爱吧 发表于 2025-7-6 15:09 | 显示全部楼层 |阅读模式
[color=rgba(0, 0, 0, 0.85)]使用 AT32F403A 开发板时,SPI 主模式通信偶发数据丢失,示波器显示 SCK 信号在连续传输中出现短暂停顿。

当时检查硬件连接无误,上拉电阻阻值合规(10KΩ)。
后来发现检查 SPI 初始化配置,发现SPI_FIFOThreshold_8bit设置导致 FIFO 未充分利用。
需要禁用 SPI 中断,改用轮询模式仍未解决,排除中断服务函数影响。
根本原因:SPI 时钟分频系数过小(SPI_BaudRatePrescaler_2),导致 MCU 在高速通信下无法及时处理数据。
解决方案:将分频系数调整为SPI_BaudRatePrescaler_16,并添加适当延时函数。
AT32F4 SPI 高速模式需匹配合理分频比,建议先使用低速模式验证功能,再逐步提高速率。


幻境之眼 发表于 2025-8-6 17:49 | 显示全部楼层
这个只能试一下了,你加延时这个要做大量测试的,是否丢包。
玫瑰凋零日记 发表于 2025-10-7 16:02 | 显示全部楼层
AT32F403A的SPI主模式偶发数据丢失通常与时钟稳定性、软件配置和硬件布局相关。以下是常见原因:
​​时钟配置​​:SPI时钟分频系数设置过小(波特率过高),导致从设备采样建立时间不足。可适当降低时钟速度测试。
​​软件时序​​:在发送数据后未充分检查状态标志(如TXE、BUSY)就急于进行下一步操作,造成数据覆盖或提前关闭SPI。
​​硬件问题​​:PCB布线过长、线间干扰大,或未正确连接上拉电阻,导致SCK、MOSI信号质量差。
​​中断干扰​​:高优先级中断打断了SPI通信时序。
​​解决方向​​:优先降低SPI波特率,并加入超时等待和状态检查机制,同时检查硬件信号质量。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

296

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部