我正在研究两个Nucleo-H743ZI板之间的SPI通信。我正在使用ST的HAL和SPI轮询API HAL_SPI_TransmitReceive。
它可以正常工作,直到带宽为12 above /s (SPI内核时钟在200 the,预分频器16,CPU总是在400 the),但在上面失败(较小的预分频器)。
我想要理解,因为24或48 Mbit/s看起来并不多,即使在一个质量很差的软件的民意测验中。
当预分频器设置为8时,我没有SPI错误,比如溢出或其他(我直接在寄存器中签入),但是数据是不正确的。仔细看数据,我注意到只有一点变化。
更确切地说,我应该接收到: 0x30 0x31 0x32 .我收到0x180x99.
二进制数:
如果我将接收到的比特流向左移动,就会得到正确的结果。
它对你有什么影响吗?可能是因为配置不好吗?
显然,主从在相位和极性方面都有相同的配置(以及其他的配置,因为源代码大部分是相同的)。
发布于 2019-06-18 18:02:28
48 means意味着每秒6MB。即使你的uC是400兆赫,你只有50个时钟每字节。这远远不够。对于更高的速度,只有DMA是可能的,绝对不是轮询,特别是使用HAL库。
48兆赫的电缆也不容易。
https://stackoverflow.com/questions/56649880
复制相似问题