Arduino DUE基于W5200以太网插板在SPI和SPI+DMA模式下的测试对比

Home / 博客 / Arduino DUE基于W5200以太网插板在SPI和SPI+DMA模式下的测试对比

原帖来源自Arduino官方论坛:http://arduino.cc/forum/index.php?PHPSESSID=e651ebd67330436435dd95bb65f4c29c&topic=139147.0

以往的大部分以太网扩展板使用的是WIZnet W5100芯片,我有个一WIZnet WIZ820io模块(使用W5200芯片),W5200有32KB的Buffer缓存(W5100的为16KB),在SPI模式下能运行速率能最大达到33.3Mbps(在W5100上为0.3Mbps)。我在hardware/arduino/sam/libraries/Ethernet/utility/中更新了W5100.cpp和W5100.h以兼容W5200(对于Ethernet.h也有略微改动)。这些更新文件和测试结果(wizperf.txt)能在以下网页获取
https://github.com/manitou48/DUEZoo

简单测试的结果是:从DUE发送出去的1000字节的UDP数据包会包含8字节的响应时延和一定的接收损失率。WIZnet的芯片在每次发送和接收时,会将2048字节的数据送入缓存/每个SOCKET。UDP协议不能保证可靠传输。与UDP协议相比,TCP协议下的数据传输通常较慢,但却能保证可靠传输,并能根据带宽自动调整传输速率。

结果包括在UNO和maple开发板上的测试。在maple和DUE上可以进行SPI+DMA模式下的测试。WIZnet为W5200在SPI模式下给出了33.3Mbps的参考速率。我在SPI时钟频率为28MHz时得到了可靠的结果,但是在42MHz下出错。

在使用DMA模式,且SPI时钟频率为28MHz的情况下,能达到将近16Mbps的速率,大约是只使用SPI传输模式的三倍。文件“w5100.cpp.dma1”是“w5100.cpp”的修正版本,能支持W5200以及DMA+SPI传输模式。详见以下网页中的“wizperf.txt”:https://github.com/manitou48/DUEZoo

 

相关信息: WIZnet开源硬件合作伙伴