以太网 TCP 在 W5500 上的通讯性能测试author:ANGRY_KUA_MAXQQ:2518383357Time :2024-01-12本文为原创,请通知作者,文中代码,请勿用于商业用途!1.概述当前以太网在嵌入式系统中使用围越来越广,而一个性能稳定,高效率的以太网传输方式能大幅度降低产品开发周期与售后本钱。本文以作者工作环境中使用过的以太网芯片 W5500〔硬件协议栈〕与 LWIP〔软件协议栈〕作为测试对象,这次只测试 W5500 性能测试,下次再测试 LWIP。2.测试环境本次使用 STM32F107 搭配 W5500 进展带宽测试,W5500 使用 SPI 口通讯,时钟可以跑到 80M,即理论可以速率为 10MB;下次也使用 STM32F107 搭配 83848 跑 LWIP 做验证测试。〔使用一样的 MCU 做数据分析才有比照价值,提前透漏,LWIP 的性能比 W5500要强一点,但 W5500 价格偏低,占用资源也少一些〕STM32F107 与 W5500 的通讯,采纳 SPI 的 DMA 方式;初始化 W5500 为四个端口,各个收发缓存为〔8K,4K,2K,2K〕,缓存对收发速度有影响。测试的端口收发缓存为3.TCP 测试数据3.1. W5500 上传数据函数switch(getSn_SR(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(len>0) {len = (len > NET_BUF_RXSIZE)?NET_BUF_RXSIZE:len;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: break;default: break;}3.2. W5500 上传速率网络传输速率我们使用 IPOP 工具与 360 自带的加速球查看,其中 IPOP 软件以 bit 为单位,其实际的速度与 360 监测的一致〔6080/8=750KB〕,即 W5500 在 SPI 速率为 18 兆位/秒的速度下测试,测试出来的通讯速度可到达 750K 左右,作者使用 STM32F407 做测试,上传速率可以到达 3.5MB 以上,STM32F107 的通讯速率截图如下:3.3. W5500 下载数据函数While(1){switch(getSn_SR(NET_TYPE_TCP)){case SOCK_INIT: listen(NET_TYPE_TCP)...