W5500通讯性能测试.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
以太网TCP在W5500上的通讯性能测试 author:ANGRY_KUA_MAX QQ :2518383357 Time :2018-01-12 本文为原创,转载请通知作者,文中代码,请勿用于商业用途! 概述 当前以太网在嵌入式系统中使用范围越来越广,而一个性能稳定,高效率的以太网传输方式能大幅度降低产品开发周期与售后成本。 本文以作者工作环境中使用过的以太网芯片W5500(硬件协议栈)与LWIP(软件协议栈)作为测试对象,这次只测试W5500性能测试,下次再测试LWIP。 测试环境 本次使用STM32F107搭配W5500进行带宽测试,W5500使用SPI口通讯,时钟可以跑到80M,即理论可以速率为10MB;下次也使用STM32F107搭配83848跑LWIP做验证测试。(使用相同的MCU做数据分析才有对比价值,提前透漏,LWIP的性能比W5500要强一点,但W5500价格偏低,占用资源也少一些) STM32F107与W5500的通讯,采用SPI的DMA方式;初始化W5500为四个端口,各个收发缓存为(8K,4K,2K,2K),缓存对收发速度有影响。测试的端口收发缓存为 TCP测试数据 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(len0) { 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: socket(NET_TYPE_TCP,Sn_MR_TCP,net_sys_info-debug_save_info.net.port,Sn_MR_ND); break; default: break; } W5500上传速率 网络传输速率我们使用IPOP工具与360自带的加速球查看,其中IPOP软件以bit为单位,其实际的速度与360监测的一致(6080/8=750KB),即W5500在SPI速率为18兆位/秒的速度下测试,测试出来的通讯速度可达到750K左右,作者使用STM32F407做测试,上传速率可以达到3.5MB以上,STM32F107的通讯速率截图如下: W5500下载数据函数 While(1) { 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(len0) { len = (len NET_BUF_RXSIZE)?NET_BUF_RXSIZE:len; len = recv(NET_TYPE_TCP,net_rxbuf,len); if(len 0) { memcpy(net_tempbuf,net_rxbuf,len);//收到的数据保存 // } } break; case SOCK_FIN_WAIT: case SOCK_CLOSING: case SOCK_TIME_WAIT: case SOCK_CLOSE_WAIT: case SOC

文档评论(0)

勤能补拙 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档