單芯片解決方案,開啟全新體驗——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多家分銷商,在香港、韓國、美國設有辦事處,提供技術支持和產品營銷。
香港辦事處管理的區域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。
審核編輯 黃宇
-
嵌入式
+關注
關注
5189文章
20192瀏覽量
329548 -
以太網
+關注
關注
41文章
5936瀏覽量
179763 -
Ethernet
+關注
關注
3文章
583瀏覽量
57857
發布評論請先 登錄
第二十八章 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示例

第二十八章 W55MH32 Ethernet_Rate_Test示例
評論