我正在测试STM32H7的SPI功能。为此,我使用了2个Nucleo-H743ZI板上STM32CubeH7中提供的SPI示例。我也许不会在自己的开发中保留此代码,现在的首要目标是了解SPI的工作方式以及在不同模式下(使用DMA,启用或不启用缓存等)可以得到的带宽。 / p>
我想分享一下我计算出的数字,因为它看起来不是很高。在此示例中,如果我理解正确,则CPU为@ 400Mhz,SPI总线频率为100MHz。
对于轮询模式,我已经测量了对函数HAL_SPI_TransmitReceive的调用的周期数。
对于DMA,我测量了在调用HAL_SPI_TransmitReceive_DMA与调用传输完成回调之间的时间。
使用SysTick在内部时钟上计时的周期测量。由于没有低耗电量,因此应该准确。
我刚刚修改了ST的示例,以发送1KB的缓冲区。
在轮询模式下,我获得了大约200.000个CPU周期,这意味着大约2MB / s
在DMA模式下约为3MB / s。
由于SPI时钟的运行频率为100Mhz,所以我会期望更多,尤其是在DMA模式下,您怎么看?我的测试程序有问题吗?