[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 高速模式需匹配合理分频比,建议先使用低速模式验证功能,再逐步提高速率。
|