ST意法半导体
直播中

远风

9年用户 1048经验值
擅长:MEMS/传感技术 模拟技术 存储技术
私信 关注
[问答]

Nucleo-H743ZI板上的SPI通信只有一位数据的移位会有何影响呢

我正在研究两个 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...
如果我将接收到的比特流向左移动,我会得到完全正确的结果。
它对你有什么影响吗?可能是由于配置错误吗?
显然,主从在相位和极性方面具有相同的配置(以及其他所有内容,因为源代码几乎相同)。



回帖(1)

张鑫

2022-12-12 15:39:24
您收到的帧数是否正确?最后没有剩余或遗漏位?
根据数据表,在您的设置中,SPI 最大时钟远高于 24 MHz。因此,由于简单地切换预分频器会导致问题出现,这可能是硬件问题。您是否将涉及的所有引脚的 OSPEEDR 设置为 11?长电线?(几乎)跳线断了,接触不良?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分