在Nucleo STM32F401RE上使用SPI DMA方式提高W5500傳輸速率
標(biāo)準(zhǔn) SPI 模式 &SPI DMA 模式的性能比較
下面相關(guān)數(shù)據(jù)的源代碼是用于loopback測試的例程。可以看到在標(biāo)準(zhǔn)SPI模式和SPI DMA模式中存在多大的性能差異。
標(biāo)準(zhǔn)SPI模式
在 spi_handler.h 中
#ifndef SPI_DMA
//#define SPI_DMA
#endif
如果你把“#define SPI_DMA” 行打上注釋,你將在標(biāo)準(zhǔn)SPI模式下操作。
如果你在Nucleo板上編譯之后下載了二進(jìn)制文件,并用WIZnet提供的AX1.exe上做了loopback的測試,隨后傳輸和接收就如下圖所示分別能達(dá)到 1.6Mbps,我們可知SPI全速傳輸速率高達(dá)3.2Mbps。
這里, SPI 時鐘是 24MHz,你可以清晰的看到在SPI數(shù)據(jù)間的空閑時間。
SPI DMA模式
#ifndef SPI_DMA
#define SPI_DMA
#endif
如上, 移去 “#define SPI_DMA”行注釋.
接下來, 如果你下載二進(jìn)制文件到 Nucleo, 然后你就能看到 SPI DMA 模式的傳輸速率。傳輸和接收的loopback測試性能可分別達(dá)到 4.3Mbps,并且 SPI全速傳輸速率超過 8Mbps。如果你使用自己的板子,并且有一個高速的外部時鐘來代替Nucleo 板, 隨之你就得到了更快的傳輸速率。
這里, 你可以看到無任何空閑時間的連續(xù)SPI通訊,如下圖。
評論