假如你的SPI高速时接收数据异常

最近使用STM32F407 SPI采集ADS1274,之前采样率600Hz左右正常采集。项目需要数据采样率达到10kHz,经计算在ADS1274相应模式下需要将输入频率提升至5.26MHz,SPI的频率也设为5.26MHz。频率升高后,计算出来的结果正负乱跳。

排查发现:

1,从HAL_SPI_Recieve函数读取12个字节的数据错乱,作为第一通道高位的第0字节变化频繁,而第1字节稳定不变。观察234通道同样;

2,增大接收数据区,HAL_SPI_Recieve函数的接收字数增大,发现第一通道高位的第0字节内容变为00,第1字节稳定不变,第12字节不为00且反复变化。考虑是所有数据向后错了一个字节的位置;

3,减小频率到一定程度此问题会消失;

4,经尝试,若将SPI的模式从“主设备只接收”改为“全双工主设备”,虽然会多占用一个MOSI,但该问题消失,5.25M的SPI频率下数据读取位置正确;

5,查看HAL函数,估计是“主设备只接收”改为“全双工主设备”两种模式的接收过程有差异。具体没弄清楚。后续待查。

上一篇:STM32基于HAL库流水灯实验


下一篇:STM32学习笔记(CubeMX配HAL)(第七天:ADC的了解及应用)