本帖最后由 WIZnet_Katrina 于 2014-12-16 14:23 编辑
项目描述 WIZnet W5100芯片有很多有趣的特征,比如直接&间接内存访问,但是在SPI总线性能上有严重的限制。同样,W5100在硬件IPv4引擎中只支持4个端口。可增加的软件端口是无线的,通过端口0 在MACRAW中提供你自己的IP栈,但是这种方式不好弄。 W5100接口有两个主要问题。首先,SPI接口仅指定4MHz运行。其次,SPI接口只支持一个字节模式传输。 SPI速率4MHz的限制,意味着标准的16MHz Arduino板总线不能被高于SCK/4 的速度驱动。如果在规范内驱动W5100。20MHz板子,例如Goldilocks,规范内一定会掉到SCK/8. 同样,网络接口的每一位数据传入传出,W5100字节传输模式要求一个4字节的SPI总线处理。 W5100理论上(无法实现)的最佳传输速率,这意味着 4*8*4 = 128 系统时钟推移传送一个单字节数据!啊!太慢了。
该做点什么? 我猜想WIZnet肯定意识到了性能问题(更高性能的32位MCU跑一个更高系统时钟–而不是又慢又的8位AVR ATmega–的时候更明显)他们以及发布了W5200作为W5100的代替(特定SPI总线接口)。
WIZnet W5200 W5200 带来了一些新的性能,基于众所周知并被认可的W5100 IPv4网络引擎。下表是两个芯片的对比。 W5200 更小更容易固定在板子上,对SMD结构有兴趣的,更容易私自焊接。更重要的是网络性能,W5200 具有两倍的用于IP包的Tx/Rx缓存,同步支持8个硬件IP socket。这些特征使W5200性能比W5100增加了一大块,值得替换。可以看到下图中两个芯片大小的对比,左边是Elecrow的W5200,右边是老的 DF Robot W5100 v1.0.
然而,W5200最大的提升还是在SPI总线接口方面。WIZnet在W5100上已经放弃了直接寻址机制,制造了W5200 专门SPI接口,运行速度高达80MHz时钟。有20倍的增加。
另外,W5200支持SPI突发模式传输。这个意思是,全部的Tx/Rx缓存(32K字节)都可以一次性读/写入。 在Arduino情形中,W5200可以驱动为SCK/2,AVR ATmega MCU上可达到的最大SPI速度,每一位都占一个SPI字节来传输。这意味着,我们可以达到 2 * 8 * 1 = 16的系统时钟传输速率,来传送一字节数据。 这意味着用于Arduino时,W5200要快8倍,用于 Goldilocks 20MHz板子,要比W5100 快16倍 — 像猎豹一样快! 这里 有一个两个WIZnet芯片速率区别的实际分析。
易用 W5200易用,也易学。 我决定买一些Elecrow的 W5200 Shield。他们看起来比WIZnet版本好很多,因为Eleccrow用了5V转3.3V的稳压芯片来确保板载 SD 卡的安全,已经设计使用了Arduino R3标准。 Elecrow W5200 板最关键且独特的特点是,放低的RJ45的使用,这样就使Ethernet shield与其他板子之间没有间隙。
|