我正在研究两个 Nucleo-H743ZI 板之间的 SPI
通信。我正在使用 ST 的 HAL 和 SPI 轮询 API HAL_SPI_TransmitReceive。
在 12Mbits/s 的带宽(SPI 内核时钟为 200Mhz 和预分频器 16,CPU 始终为 400Mhz)之前,它工作正常,但在高于(较小的预分频器)时失败。
我想了解,因为即使在使用质量较差的软件进行轮询时,24 或 48 Mbits/s 似乎也不算多。
预分频器设置为 8 时,我没有出现溢出或其他 SPI 错误(我直接在寄存器中检查),但是数据不正确。仔细观察数据,我注意到只有一位的移位。
更准确地说,我应该收到(六进制):0x30 0x31 0x32 ...我收到 0x18 0x18 0x99 ...
二进制:
- 预计 0011 0000 0011 0001 0011 0010 ...
- 收到 0001 1000 0001 1000 1001 1001...
如果我将接收到的比特流向左移动,我会得到完全正确的结果。
它对你有什么影响吗?可能是由于配置错误吗?
显然,主从在相位和极性方面具有相同的配置(以及其他所有内容,因为源代码几乎相同)。