1、W5500通讯性能测试 len = recv(NET_TYPE_TCP,net_rxbuf,len); if(len 0) while(1) /作死的发送 send(NET_TYPE_TCP,net_rxbuf,1460); /本函数为阻塞函数,发生成功后,本函数才会返回 break;case SOCK_FIN_WAIT:case SOCK_CLOSING:case SOCK_TIME_WAIT:case SOCK_CLOSE_WAIT:case SOCK_LAST_ACK:close(NET_TYPE_TCP); break;case SOCK_CLOSED: socket(NET_TYPE
2、_TCP,Sn_MR_TCP,net_sys_info-debug_save_.port,Sn_MR_ND); break;default: break;1.1.W5500上传速率网络传输速率我们使用IPOP工具与360自带的加速球查看,其中IPOP软件以bit为单位,其实际的速度与360监测的一致(6080/8=750KB),即W5500在SPI速率为18兆位/秒的速度下测试,测试出来的通讯速度可达到750K左右,作者使用STM32F407做测试,上传速率可以达到3.5MB以上,STM32F107的通讯速率截图如下:1.2.W5500下载数据函数While(1)switch(getSn_SR
3、(NET_TYPE_TCP)case SOCK_INIT: listen(NET_TYPE_TCP); break;case SOCK_ESTABLISHED: if(getSn_IR(NET_TYPE_TCP) & Sn_IR_CON) setSn_IR(NET_TYPE_TCP, Sn_IR_CON); len=getSn_RX_RSR(NET_TYPE_TCP); if(len0) len = (len NET_BUF_RXSIZE)?NET_BUF_RXSIZE:len; len = recv(NET_TYPE_TCP,net_rxbuf,len); if(len 0) memcpy(
4、net_tempbuf,net_rxbuf,len);/收到的数据保存 / break;case SOCK_FIN_WAIT:case SOCK_CLOSING:case SOCK_TIME_WAIT:case SOCK_CLOSE_WAIT:case SOCK_LAST_ACK:close(NET_TYPE_TCP); break;case SOCK_CLOSED: socket(NET_TYPE_TCP,Sn_MR_TCP,net_sys_info-debug_save_.port,Sn_MR_ND); break;default: break;1.3.W5500下载速率测试出来的通讯速度可达到600K左右,但实际波动比较大,受限制与MCU的性能。2.W5500的硬件Bug作者在使用W5500的过程中,发现使用其tcp的上传数据存在死机的Bug, MCU在主动传输数据给上位机,若此时将网线断开或者上位机直接关闭sock,则MCU直接死掉,而且是导致MCU直接死掉,使用看门狗都无法恢复的那种。至于为什么MCU会死掉,又怎么解决这个MCU死机的问题,欢迎联系讨论。