在Nucleo STM32F401RE上使用SPI DMA方式提高W5500傳輸速率
標準 SPI 模式 &SPI DMA 模式的性能比較
下面相關(guān)數(shù)據(jù)的源代碼是用于loopback測試的例程??梢钥吹皆跇藴蔛PI模式和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數(shù)據(jù)間的空閑時間。
SPI DMA模式
#ifndef SPI_DMA
#define SPI_DMA
#endif
如上, 移去 “#define SPI_DMA”行注釋.
接下來, 如果你下載二進制文件到 Nucleo, 然后你就能看到 SPI DMA 模式的傳輸速率。傳輸和接收的loopback測試性能可分別達到 4.3Mbps,并且 SPI全速傳輸速率超過 8Mbps。如果你使用自己的板子,并且有一個高速的外部時鐘來代替Nucleo 板, 隨之你就得到了更快的傳輸速率。
這里, 你可以看到無任何空閑時間的連續(xù)SPI通訊,如下圖。
評論