在Nucleo STM32F401RE上使用SPI DMA方式提高W5500传输速率
标准 SPI 模式 &SPI DMA 模式的性能比较
下面相关数据的源代码是用于loopback测试的例程。可以看到在标准SPI模式和SPI DMA模式中存在多大的性能差异。
标准SPI模式
在 spi_handler.h 中
#ifndef SPI_DMA
//#define SPI_DMA
#endif
如果你把“#define SPI_DMA” 行打上注释,你将在标准SPI模式下操作。
如果你在Nucleo板上编译之后下载了二进制文件,并用WIZnet提供的AX1.exe上做了loopback的测试,随后传输和接收就如下图所示分别能达到 1.6Mbps,我们可知SPI全速传输速率高达3.2Mbps。
这里, SPI 时钟是 24MHz,你可以清晰的看到在SPI数据间的空闲时间。
SPI DMA模式
#ifndef SPI_DMA
#define SPI_DMA
#endif
如上, 移去 “#define SPI_DMA”行注释.
接下来, 如果你下载二进制文件到 Nucleo, 然后你就能看到 SPI DMA 模式的传输速率。传输和接收的loopback测试性能可分别达到 4.3Mbps,并且 SPI全速传输速率超过 8Mbps。如果你使用自己的板子,并且有一个高速的外部时钟来代替Nucleo 板, 随之你就得到了更快的传输速率。
这里, 你可以看到无任何空闲时间的连续SPI通讯,如下图。
评论