在很多应用领域都需要提高W5100与其它网络设备(如PC机)的通信速度。理论上讲,W5100的最大通信速度可以达到25Mbps,实际应用中,由于网络的原因、CPU与W5100之间通信速度的原因等等,使W5100的网络传输速度远远低于25Mbps。
这里抛开网络速度的影响,谈谈如何提高W5100的网络通信速度。
影响W5100的网络通信速度的最大因素是CPU与W5100之间的通信速度。因此要提高W5100的网络通信速度,必须提高CPU与W5100之间的通信速度。CPU与W5100之间的通信方式对W5100的网络通信速度影响很大。直接总线的速度最快,间接总线的速度次之,SPI总线的速度最慢。
W5100发送数据的速度直接受CPU与W5100之间的通信速度影响。因此提高CPU与W5100之间的速度是提高W5100网络发送数据的关键。
W5100接收数据的速度除了受CPU与W5100之间的通信速度影响外,还可以通过下面的方法提高数据的传输速度。
1. 在TCP方式(不管是客户端还是服务器),将Sn_MR寄存器设置为:S_MR_TCP|S_MR_MC。选择S_MR_MC的目的是当W5100接收到一个数据包后无延迟地回送一个ACK相应。在UDP模式下无效。
2. 将Socket的数据缓冲区扩大到4k或8k(这样允许2个Socket工作或1个Socket工作),这样接收到数据后,先读取Sn_RX_RSR和Sn_RX_RR,重新计算Sn_RX_RR,然后发送对Sn_CR寄存器S_CR_RECV命令。完成上面的操作后再读取数据。注意使用这种方法必须快速读取W5100接收缓冲区的数据,否则W5100接收缓冲区的数据就可能被覆盖。
通过以上方法的改进,我们在EVB-W5100/Cortex评估板上测试,极限通信速度可以达到23Mbps。(评估板上Cortex与W5100的接口采用间接总线,软件模拟总线的访问时序)。如果采用其它更快的CPU,这个速度还可以提高。