第二十八章 W55MH32 Ethernet_Rate_Test示例

描述

单芯片解决方案,开启全新体验——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.         else if (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 多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分