a)提升SOCKET的发送和接收缓冲区,实测采用8KB的缓冲和4KB的缓冲区,速度相差4倍左右,所以,将缓冲区加大,是提高W5100S传输速度的关键。这里需要提醒一个坑,作者前期也是踩到坑中而不自知。
官方驱动给的默认缓冲区分配使用的是 :
sysinit(0x55,0x55); ,即默认是2KB的发送缓冲和接收缓冲。
作者为了提升发送和接收缓冲区,想当然的使用了:
sysinit(0xff,0xff); 即每个SOCKET分配8KB的缓存空间
速度相对于2KB的缓存提升太多,达到0.66MB/S,即5.28Mb/s。但是收到的数据全是乱码,作者刚开始以为是SPI时钟太高导致的干扰,将故障源定位在SPI,最终一无所获,通过逻辑分析仪发现SPI传输的数据没有问题。
最终在W5100S的datasheet中找到答案,是4个独立的SOCKET共享8KB的发送或接收缓存,而不是每个SOCKET可以配置到8KB,如果将每个socket都分配8KB的缓冲区,就会出现乱码的情况。所以很多人接触一些芯片的时候总喜欢直接上马调试,其实仔细翻一下datasheet也是很重要的,有时候可以避坑,节省很多时间。
最终作者采用:
sysinit(0x0c,0x0c);
即将SOCKET1的发送和接收缓冲区设置为8KB,