将我的代码从
STM32F407 迁移到 STM32F767 后,我在使用 SPI 时遇到了一个奇怪的问题。
SPI 配置为从设备,并作为主设备与另一个 STM32F406 MCU 接口。从机接收到的数据有时会移位一两个字节。我正在使用 CMSIS 中间件 API。相同的源代码在为另一个 STM32F406(这是我的原始目标)编译时运行没有问题。我注意到SPI的数据寄存器(SPIx_DR)有时会被填充到第二个字节,即使Datasize(CR2 DR[0:3])设置为8位,DMA中的MSIZE和PSIZE均为0(BYTE) . 与STM32F4主控相比,数据寄存器始终只使用低8位
我没有启用 D_CACHE,因此我使用 SPI_DCACHE=0 编译了 CMSIS 驱动程序。它启用了 CRC 计算,并且没有报告双方的任何数据损坏。
主站能够正确接收数据。