单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机
W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm? Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。
在封装规格上,W55MH32提供了两种选择:QFN100和QFN68。
W55MH32L采用QFN100封装版本,尺寸为12x12mm,其资源丰富,专为各种复杂工控场景设计。它拥有66个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、5个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN、1个USB2.0以及1个SDIO接口。如此丰富的外设资源,能够轻松应对工业控制中多样化的连接需求,无论是与各类传感器、执行器的通信,还是对复杂工业协议的支持,都能游刃有余,成为复杂工控领域的理想选择。同系列还有QFN68封装的W55MH32Q版本,该版本体积更小,仅为8x8mm,成本低,适合集成度高的网关模组等场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。
此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及 MQTT SSL等,为网络通信安全再添保障。
为助力开发者快速上手与深入开发,基于W55MH32L这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。
若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。
第二十八章 W55MH32 Ethernet_Rate_Test示例
本篇文章我们将详细介绍如何在W55MH32芯片上面实现太网测速功能,并通过实战例程,为大家讲解如何通过Jperf工具进行测速。
该例程用到的其他网络协议,例如DHCP请参考相关章节。有关W55MH32的初始化过程,请参考Network Install章节,这里将不再赘述。
1 Jperf简介
JPerf是一个基于 Java的图形化网络性能测试工具,它是 Iperf(一个常用的网络性能测试工具)的图形用户界面(GUI)版本。Iperf是一个流行的开源工具,广泛用于网络带宽、延迟和丢包等性能指标的测试,而 JPerf则通过图形化界面让用户更加方便地进行这些测试,而无需通过命令行操作。
2 Jperf特点
图形化界面: JPerf提供一个直观的用户界面,简化了 Iperf配置和运行过程,使得用户可以更加轻松地进行网络性能测试。
支持多种协议: JPerf 支持 TCP和 UDP协议,允许用户在测试过程中选择不同的协议来模拟不同类型的网络负载。
实时性能监控: JPerf 能够实时显示网络性能数据(如带宽、丢包率、延迟等),帮助用户分析网络状况。
易于配置: 用户可以通过图形化界面轻松配置测试参数,如测试时长、传输数据量、数据包大小等。
跨平台: 作为 Java应用程序,JPerf可以在多种操作系统平台上运行,包括 Windows、Linux 和 macOS。
3影响速率的几点原因
MCU主频
Socket缓存大小
单次传输数据长度
以太网差分线布线
4以太网测速流程
安装Jperf
下载地址:https://nchc.dl.sourceforge.net/project/iperf/jperf/jperf%202.0.0/jperf-2.0.0.zip?viasf=1
安装Jre
下载地址:Java Archive Downloads - Java SE 8u211 and later | Oracle 中国
打开jperf图形界面
注意:必须安装Jre才支持打开图形化界面。
jperf.bat位于Jperf安装目录下:
配置工作模式以及单位量程:
对端发送数据开始测速。
5实现过程
接下来,我们在W55MH32上实现以太网测速功能。
注意:测试实例需要PC端和W55MH32处于同一网段。
步骤1:填充测速数据
1. for(uint16_t i=0; i< ETHERNET_BUF_MAX_SIZE; i++) 2. { 3. ethernet_buf[i]?=?65?+ i?%?26; 4. }
步骤2:初始化socket缓存
1. uint8_t tx_size[_WIZCHIP_SOCK_NUM_] ={2,0,0,0,0,0,0,0}; 2. uint8_t rx_size[_WIZCHIP_SOCK_NUM_] ={2,0,0,0,0,0,0,0}; 3. /* Set socket0 send and receive cache to 16KB */ 4. wizchip_init(tx_size, rx_size); 5.
步骤3:主循环调用do_jperf()函数进行测速测试
do_jperf()函数如下:
1. void do_jperf(uint8_t sn,uint8_t*buffer_txst,uint8_t*des_ip,uint16_t des_port) 2. { 3. uint32_t len; 4. uint16_t port=50000; 5. switch(getSn_SR(sn)) 6. { 7. case SOCK_INIT: 8. connect(sn, des_ip, des_port); 9. printf("%d:Try to connect to the %d.%d.%d.%d : %drn", sn, des_ip[0], des_ip[1], des_ip[2], des_ip[3], des_port); 10. break; 11. case SOCK_ESTABLISHED: 12. if(getSn_IR(sn)&Sn_IR_CON)//// Socket n interrupt register mask; TCP CON interrupt = connection with peer is successful 13. { 14. setSn_IR(sn,Sn_IR_CON); // this interrupt should be write the bit cleared to '1' 15. printf("%d:Connected to - %d.%d.%d.%d : %drn", sn, des_ip[0], des_ip[1], des_ip[2], des_ip[3], des_port); 16. } 17. send(sn, buffer_txst, strlen((char*)buffer_txst));// Data send process (User's buffer -> Destination through H/W Tx socket buffer) 18. len= getSn_RX_RSR(sn); 19. 20. if(len>=sizeof(buffer_txst))// Sn_RX_RSR: Socket n Received Size Register, Receiving data length 21. { 22. recv(sn, buffer_txst, len);// Data Receive process (H/W Rx socket buffer -> User's buffer) 23. send(0, buffer_txst, len); 24. } 25. elseif(len>0) 26. { 27. len= recv(sn, buffer_txst, len); 28. send(sn, buffer_txst, len); 29. } 30. 31. break; 32. case SOCK_CLOSE_WAIT: 33. disconnect(sn); 34. break; 35. case SOCK_CLOSED: 36. socket(sn,Sn_MR_TCP, port++,Sn_MR_ND); 37. if(port>60000) 38. { 39. port=50000; 40. } 41. break; 42. } 43. }
do_jperf()函数创建了一个无时延模式的TCP客户端,在成功连接上服务器之后则不断发送数据。
6运行结果
烧录例程运行后,首先进行了PHY链路检测,然后打印网络地址信息,最后在未连接服务器时,不断打印提示信息,直到连接上所设置的服务器为止:
接下来,我们看看不同主频、socket缓存以及单次发送数据对速率的影响:
主频:216MHz
socket收发缓存:16KB
单次数据:2048 Byte
测试速率为:6.55Mbits/s
主频:216MHz
socket收发缓存:2KB
单次数据:2048 Byte
测试速率为:5.44Mbits/s
主频:216MHz
socket收发缓存:16KB
单次数据:512 Byte
测试速率为:6.03Mbits/s
主频:72MHz
socket收发缓存:16KB
单次数据:2048 Byte
测试速率为:4.34Mbits/s
7总结
本文讲解了如何在 W55MH32芯片上实现以太网测速功能,通过实战例程展示了借助 Jperf工具进行测速的具体过程,包括填充测速数据、初始化 socket缓存以及在主循环中调用函数进行测试等步骤。文章详细介绍了 Jperf的概念、特点,以及影响以太网速率的因素和测速流程,帮助读者理解其在网络性能测试方面的实际应用价值。
下一篇文章将聚焦在 W55MH32芯片上实现 Modbus TCP协议,解析 Modbus TCP协议的核心原理及在工业通信中的应用,同时通过实战例程讲解如何在 W55MH32上搭建 Modbus TCP服务器,实现与客户端的通信,敬请期待!
WIZnet是一家无晶圆厂半导体公司,成立于 1998年。产品包括互联网处理器 iMCU?,它采用 TOE(TCP/IP卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU?面向各种应用中的嵌入式互联网设备。
WIZnet在全球拥有 70多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。
香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。
审核编辑 黄宇
-
嵌入式
+关注
关注
5154文章
19713浏览量
318227 -
以太网
+关注
关注
41文章
5687浏览量
176303 -
Ethernet
+关注
关注
3文章
472浏览量
56977
发布评论请先 登录
第二十八章 RTC——实时时钟

第二十八讲 数模和模数转换器

第二章 W55MH32 DHCP示例

第五章 W55MH32 UDP示例

第九章 W55MH32 HTTP Server示例

第十五章 W55MH32 SNMP示例

第十八章 W55MH32 FTP_Server示例

第二十一章 W55MH32 PHY配置示例

第二十二章 W55MH32 MQTT&Aliyun示例

第二十三章 W55MH32 MQTT_OneNET示例

第二十六章 W55MH32?上位机搜索和配置示例

第二十七章 W55MH32?Interrupt示例

第二十九章 W55MH32 Modbus_TCP_Server示例

评论