0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第五章 W55MH32 UDP示例

W55MH32 来源:W55MH32 作者:W55MH32 2025-07-24 09:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数A据处理需求;集成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的无限可能。

wKgZO2iBiBmAe3DyAACpGc5mWX8613.png

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数A据处理需求;集成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的无限可能。

wKgZO2iBiBmAe3DyAACpGc5mWX8613.png

第五章 W55MH32 UDP示例

本篇文章,我们将详细介绍如何在W55MH32芯片上面实现UDP通信。并通过实战例程,为大家讲解如何使用UDP进行数据回环测试。

该例程用到的其他网络协议,例如DHCP,请参考相关章节。有关W55MH32的初始化过程,也请参考Network Install章节,这里将不再赘述。

1 UDP协议简介

用户数据报协议(UDP,User Datagram Protocol)是OSI模型中传输层的核心协议之一。它是一种无连接的、面向数据报的传输协议,用于在IP网络中进行高效的数据传输。与TCP协议相比,UDP更简单、轻量,提供最基本的传输功能。

2 UDP协议特点

无连接性:UDP不需要在传输数据前建立连接,发送方可以直接发送数据到目标地址,接收方也无需确认接收到数据。

数据报的独立性:数据以独立的数据报形式发送,每个数据报包含完整的消息信息。

高效性:UDP没有流量控制、拥塞控制和重传机制,因此开销小,传输效率高,适合对实时性要求较高的应用。

不可靠性:UDP不保证数据可靠传输,可能出现数据丢失、重复或乱序。

支持广播和多播:UDP可以进行广播和多播数据发送,非常适合一对多的通信场景。

简单的头部格式:UDP头部只有8字节,包括源端口、目标端口、长度和校验和。

3 UDP应用场景

接下来,我们了解下在W55MH32上,可以使用UDP协议完成哪些操作及应用呢?

实时数据传输:工业自动化控制、网络摄像头等场景下使用W55MH32实现实时数据传输。

设备发现和自动配置:通过发送广播包给W55MH32来实现设备发现和自动配置功能。

广播和多播通信:通过广播和多播通信方式来实现一对多通信。例如状态同步和多设备控制。

数据采集:需要高频率传输小数据包的应用场景。例如温湿度传感器的状态更新。

4 UDP报文传输流程

发送ARP报文,确认对方地址在线

获取数据信息,并通过UDP传输。

添加UDP头部信息

数据报通过IP协议传递到目标地址。

接收方从目标端口接收数据报

5 UDP协议报文

wKgZO2iBiBmAOz7zAABpoFIeIyA385.png

源端口:发送方的端口号;

目的端口:接收方的端口号;

报文长度:即整个 UDP 报文的长度,包括头部和数据,单位为字节。

检验和:校验和;

UDP报文实例:

C0A8 0001 C0A8 0002 1F90 1F91 0021 F7DF 4865 6C6C 6F2C 2055 4450 21
IP部分(前16字节):
C0A8 0001:源IP地址(192.168.0.1)
C0A8 0002:目标IP地址(192.168.0.2)
UDP部分(后部分):
1F90:源端口号(8080)
1F91:目标端口号(8081)
0021:报文长度(33字节)
F7DF:校验和(校验数据完整性)
4865 6C6C 6F2C 2055 4450 21:数据部分("Hello, UDP!"的ASCII表示)

在W55MH32中,UDP协议已在内部硬件协议栈实现,所以我们只需要读取和写入对应寄存器的值即可实现发送和接收数据,无需手动组包。

6实现过程

接下来,我们在W55MH32上实现UDP回环测试,loopback_udps()函数是实现UDP回环测试功能的函数。

注意:测试实例需要PC端和W55MH32处于同一网段。

这个函数需要主循环中调用,如下图所示。

while (1)
{
   loopback_udps(SOCKET_ID, ethernet_buf, local_port);
}
 

loopback_udps()需要传入3个参数,分别是socket号,socket缓存以及源端口号

loopback_udps()函数内容如下:

 int32_t loopback_udps(uint8_t sn, uint8_t *buf, uint16_t port)
{
 int32_t  ret;
 uint16_t size, sentsize;
 uint8_t  destip[4];
 uint16_t destport;
 switch (getSn_SR(sn))
 {
 case SOCK_UDP:
     if ((size = getSn_RX_RSR(sn)) > 0)
     {
         if (size > DATA_BUF_SIZE)
             size = DATA_BUF_SIZE;
         ret      = recvfrom(sn, buf, size, destip, (uint16_t *)&destport);
         buf[ret] = 0x00;
         printf("recv form[%d.%d.%d.%d][%d]: %srn", destip[0], destip[1], destip[2], destip[3], destport, buf);
         if (ret <= 0)
         {
#ifdef _LOOPBACK_DEBUG_
             printf("%d: recvfrom error. %ldrn", sn, ret);
#endif
             return ret;
         }
         size     = (uint16_t)ret;
         sentsize = 0;
         while (sentsize != size)
         {
             ret = sendto(sn, buf + sentsize, size - sentsize, destip, destport);
             if (ret < 0)
             {
#ifdef _LOOPBACK_DEBUG_
                 printf("%d: sendto error. %ldrn", sn, ret);
#endif
                 return ret;
             }
             sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.
         }
     }
     break;
 case SOCK_CLOSED:
#ifdef _LOOPBACK_DEBUG_
     // printf("%d:UDP loopback startrn",sn);
#endif
     if ((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn)
         return ret;
#ifdef _LOOPBACK_DEBUG_
     printf("%d:Opened, UDP loopback, port [%d]rn", sn, port);
#endif
     break;
 default:
     break;
 }
 return 1;
}

进入回环测试程序后,会执行一个socket状态机,在socket状态机中,会执行以下步骤:

步骤1:打开socket

当socket处于SOCK_CLOSED状态时(即关闭状态),将该socket设置为UDP模式并打开。

步骤2:监听接收数据并回环数据

当socket处于SOCK_UDP状态时(即已打开socket并配置为UDP模式),监听Sn_RX_RSR寄存器。

当Sn_RX_RSR寄存器的值大于0时,则说明已经接收到UDP数据,先通过recvfrom()函数取出接收到的UDP数据。

然后通过sendto()函数将接收到的数据回环发送出去。

7运行结果

烧录例程运行后,首先进行了PHY链路检测,然后是DHCP获取网络地址结果,最后是进行UDP回环测试,如下图所示:

wKgZO2iBiCKAc4kJAABOpIuwBB8914.png

接下来我们打开一个网络调试工具,例如SocketTester,设置为UDP模式,选择自己的IP地址和端口后打开socket,然后设置目标地址和目标端口为W55MH32的IP地址和端口号,最后向W55MH32发送数据进行回环测试的流程。

可以看到,W55MH32这边接收到了来自PC端发送的数据并打印了出来,SocketTester界面也看到了W55MH32的回环数据,如下图所示:

当使用UDP广播模式向W55MH32发送数据时,只需要将SocketTester上的目标地址改为W55MH32所在网段的广播地址(192.168.1.255)即可。以下为UDP广播发送给W55MH32的示例图:

wKgZPGiBiBmAJLYEAABzfULtm-A183.png

8总结

本文介绍了在 W55MH32芯片上实现 UDP通信及数据回环测试的方法。阐述了 UDP协议的概念、特点、应用场景、报文传输流程和报文结构,展示了实现过程,借助网络调试工具完成测试。

下一篇将讲解在该芯片上实现 UDP组播通信及回环测试,介绍相关原理和实现步骤。敬请期待!

WIZnet是一家无晶圆厂半导体公司,成立于 1998年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™面向各种应用中的嵌入式互联网设备。

WIZnet在全球拥有 70多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

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

审核编辑 黄宇

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

    关注

    41

    文章

    5924

    浏览量

    179546
  • 封装
    +关注

    关注

    128

    文章

    9142

    浏览量

    147896
  • UDP
    UDP
    +关注

    关注

    0

    文章

    331

    浏览量

    35217
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高频电子线路第五章答案

    高频电子线路第五章答案.
    发表于 06-05 10:40 40次下载

    《测控电路》习题完整参考答案(第五章

    《测控电路》习题完整参考答案(第五章
    发表于 02-07 15:17 0次下载

    数字信号处理 第五章

    数字信号处理 第五章
    发表于 10-19 09:33 4次下载
    数字信号处理 <b class='flag-5'>第五章</b>

    静噪基础第五章_导体传导和共模

    静噪基础第五章,导体传导和共模
    发表于 01-24 16:18 3次下载

    第二 W55MH32 DHCP示例

    本文介绍 DHCP 协议,包括其在 IP 网络自动分配参数的功能、便捷配置等特点、工作原理、报文格式和应用场景。通过 W55MH32 实战例程展示动态获取网络地址信息过程,含注册定时器中断、启用模式和获取信息等步骤,烧录后可完成检测与信息打印,PC 端能 PING 通设备。
    的头像 发表于 07-24 09:02 582次阅读
    第二<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> DHCP<b class='flag-5'>示例</b>

    第三 W55MH32 TCP Client示例

    本文介绍在 W55MH32 芯片上实现 TCP 客户端模式进行数据回环测试的方法。阐述 TCP 协议概念、特点、与 UDP 区别、应用场景及相关机制。展示实现过程,包括开启 Keepalive 功能,在主循环运行测试程序。烧录例程后进行 PHY 链路检测、获取网络地址,再
    的头像 发表于 07-24 09:06 769次阅读
    第三<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> TCP Client<b class='flag-5'>示例</b>

    第六 W55MH32 UDP Multicast示例

    本文介绍了在W55MH32芯片上实现UDP组播的原理、应用场景及回环测试方法,并通过实战代码展示了其具体实现过程。下一篇文章将聚焦DNS例程,讲解其工作原理及实现方法,帮助大家更深入地理解网络通信。敬请期待!
    的头像 发表于 07-24 09:19 652次阅读
    第六<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> <b class='flag-5'>UDP</b> Multicast<b class='flag-5'>示例</b>

    第九 W55MH32 HTTP Server示例

    本文介绍了在 W55MH32 芯片上实现 HTTP Server 功能,并通过浏览器修改其网络地址信息的方法。阐述了 HTTP 协议的概念、特点、应用场景、工作流程、请求方法、响应内容,以及 Web 页面构成和交互方式。展示了在W55MH32上实现的过程。
    的头像 发表于 07-24 09:35 641次阅读
    第九<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> HTTP Server<b class='flag-5'>示例</b>

    第十 W55MH32 SNTP示例

    本文讲解了如何在W55MH32芯片上实现SNTP授时功能,通过实例详细展示了从SNTP服务器同步时间的实现流程,包括时间请求、响应解析和本地时间校准等核心步骤。文章还对SNTP的应用场景进行了分析,帮助读者理解其在时间同步中的实际应用价值。
    的头像 发表于 07-24 09:43 862次阅读
    第十<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> SNTP<b class='flag-5'>示例</b>

    第十四章 W55MH32 TFTP示例

    本文讲解了如何在 W55MH32 芯片上实现 TFTP 协议,通过实战例程详细展示了使用 TFTP 客户端模式从服务器获取文本文件的过程,涵盖 TFTP 初始化、发送读请求、运行协议并处理结果等核心
    的头像 发表于 07-24 10:37 638次阅读
    第十四章 <b class='flag-5'>W55MH32</b> TFTP<b class='flag-5'>示例</b>

    第十五 W55MH32 SNMP示例

    本文讲解了如何在 W55MH32 芯片上实现 SNMP 功能,通过实战例程展示了使用 MIB Browser 管理 W55MH32 的具体过程,涵盖在 MIB Browser 中创建分支、添加叶子
    的头像 发表于 07-24 10:43 705次阅读
    第十五<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> SNMP<b class='flag-5'>示例</b>

    第十六章 W55MH32 PING示例

    本文讲解了如何在 W55MH32 芯片上通过 IPRAW 模式实现 ICMP 协议中的 PING 命令,以进行网络连通性测试,通过实战例程展示了从发送 PING 请求、接收并解析回复到统计结果的完整
    的头像 发表于 07-24 11:41 502次阅读
    第十六章 <b class='flag-5'>W55MH32</b> PING<b class='flag-5'>示例</b>

    第十八章 W55MH32 FTP_Server示例

    本文讲解了如何在 W55MH32 芯片上实现 FTP 协议的服务器模式,通过实战例程展示了使用 W55MH32 作为 FTP 服务器与 PC 端进行文件传输、目录操作等功能的过程,涵盖获取网络配置
    的头像 发表于 07-24 11:55 452次阅读
    第十八章 <b class='flag-5'>W55MH32</b> FTP_Server<b class='flag-5'>示例</b>

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

    本文讲解了如何在 W55MH32 芯片上实现上位机搜索和配置功能,通过实战例程展示了使用开源上位机配置工具 SmartConfigTool 搜索局域网中的 W55MH32 并进行网络地址配置的过程
    的头像 发表于 07-24 16:13 590次阅读
    第二十六章 <b class='flag-5'>W55MH32</b> 上位机搜索和配置<b class='flag-5'>示例</b>

    第三十 W55MH32 HTTP_Server&amp;NetBIOS示例

    本文讲解了如何在 W55MH32 芯片上实现 HTTP_Server 与 NetBIOS 功能,并通过 NetBIOS 访问 HTTP 服务器网页内容,通过实战例程展示了在主循环中并行处理 HTTP 与 NetBIOS 相关事务的过程。
    的头像 发表于 07-24 16:21 896次阅读
    第三十<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> HTTP_Server&amp;NetBIOS<b class='flag-5'>示例</b>