七、W5100S/W5500+RP2040树莓派Pico<UDP 组播>

W5100S/W5500以太网芯片上的UDP组播回环测试及其应用
本文详细介绍了UDP组播通信原理,探讨了W5100S/W5500以太网芯片在其中的应用,包括组播的优点、组播MAC地址的映射,以及通过WIZnet以太网芯片进行UDP组播回环测试的步骤和代码示例。

1. 前言

  UDP组播是一种基于UDP协议的通信方式,它允许一台计算机通过发送单个UDP数据包来同时向多个目标发送信息。这种通信方式在需要高效、实时的数据传输的应用中非常有用,比如视频直播、在线游戏等。
  本章节将进行UDP组播回环测试。

  W5100S/W5500是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,同时也是一颗工业级以太网控制芯片。在以太网应用中使用 W5100S/W5500 让用户可以更加方便地在设备之间实现远程连接和通信。

2. 相关简介

2.1 简述

  UDP组播是一种基于UDP协议的通信方式,也称为多播。它允许一台计算机通过发送单个UDP数据包来同时向多个目标发送信息,而不需要像单播模式那样对每个目标单独发送数据包。

  组播地址是一种特殊的IP地址,范围从224.0.0.0到239.255.255.255,它们被划分为不同的类型,包括局部链接多播地址、预留多播地址和管理权限多播地址。使用组播时,需要在发送方和接收方之间建立对等关系,并使用特定的组播协议来确保数据的传输可靠性和顺序性。

在这里插入图片描述

  组播MAC地址:为了在本地物理网络上实现组播信息的正确传输,需要在链路层使用组播MAC地址。以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,映射关系如下图所示:

在这里插入图片描述

  在组播中,发送方将数据包发送到特定的组播组地址,这个地址不属于任何特定的一台计算机,而是属于一组计算机。只有订阅了这个组播组地址的计算机才能接收到这个数据包。这种通信方式可以有效地节省网络带宽,因为发送方只需要发送一个数据包,而不是对每个接收方都发送一个数据包。

  相比之下,单播模式是点对点的通信方式,每个发送方都需要单独向接收方发送数据包。在某些情况下,如果需要向多个接收方发送相同的数据包,那么单播模式会浪费大量的网络带宽。

  总的来说,UDP组播是一种非常高效的通信方式,适用于需要向多个接收者同时发送相同数据的场景,如视频直播、在线游戏、多用户协作等。

2.2 优点

  • 节省带宽:由于UDP组播允许发送方只需发送一个数据包,就可以到达多个接收方,因此可以显著节省带宽,特别是在接收方较多的情况下。
  • 高效传输:相对于单播模式,UDP组播可以在网络中快速传输数据包,因为它可以在一个网络路径上同时发送到多个接收方。
  • 实时性:UDP组播适用于实时通信,因为它可以立即将数据包发送到所有订阅了组播组的接收方,而无需等待接收方确认。
    可扩展性:通过使用组播地址,可以实现一对多的通信,适用于大规模的数据分发和实时应用

2.3 应用

  • 多媒体广播:多媒体广播应用,如电视和电台广播,通过UDP组播将音频和视频数据传输到多个接收者。
  • 多用户游戏:多用户游戏通过UDP组播将游戏数据传输到多个客户端,实现多人在线游戏。
  • 实时协作:像在线会议这样的实时协作应用,可以使用UDP组播将音频、视频和其他协作数据传输到所有参会者。
  • 分布式系统:UDP组播可以用于分布式系统,将数据从一个节点发送到其他节点,实现数据同步和状态报告等功能。
  • 网络监控:网络监控应用可以通过UDP组播将监控数据发送到多个接收者,例如实时流量监控、网络安全监控等。
  • 视频会议:多人在线的视频会议,每个用户都可以共享到音频、视频数据。

3. WIZnet以太网芯片

WIZnet 主流硬件协议栈以太网芯片参数对比

Model Embedded Core Host I/F TX/RX Buffer HW Socket Network Performance
W5100S TCP/IPv4, MAC & PHY 8bit BUS, SPI 16KB 4 Max 25Mbps
W6100 TCP/IPv4/IPv6, MAC & PHY 8bit BUS, Fast SPI 32KB 8 Max 25Mbps
W5500 TCP/IPv4, MAC & PHY Fast SPI 32KB 8 Max 15Mbps
  1. W5100S/W6100 支持 8bit数据总线接口,网络传输速度会优于W5500。
  2. W6100 支持IPV6,与W5100S 硬件兼容,若已使用W5100S的用户需要支持IPv6,可以Pin to Pin兼容。
  3. W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存

4. UDP 组播回环测试

4.1 程序流程图

在这里插入图片描述

4.2 测试准备

软件

  • Visual Studio Code
  • WIZnet UartTool
  • SocketTester

硬件

  • W5100SIO模块 + RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板
  • Micro USB 接口的数据线
  • TTL 转 USB
  • 网线

4.3 连接方式

  • 通过数据线连接PC的USB口(主要用于烧录程序,也可以虚拟出串口使用)
  • 通过TTL串口转USB,连接UART0 的默认引脚:
    • RP2040 GPIO 0(UART0 TX) <----> USB_TTL_RX
    • RP2040 GPIO 1(UART0 RX) <----> USB_TTL_TX
  • 使用模块连接RP2040进行连线时
    • RP2040 GPIO 16 <----> W5100S MISO
    • RP2040 GPIO 17 <----> W5100S CS
    • RP2040 GPIO 18 <----> W5100S SCK
    • RP2040 GPIO 19 <----> W5100S MOSI
    • RP2040 GPIO 20 <----> W5100S RST
  • 通过网线直接连接PC网口(或:PC和设备都通过网线连接交换机或路由器LAN口)

4.4 相关代码

  我们直接打开udp_multicast.c文件(路径:examples/udp_multicast/udp_multicast.c)看下具体实现:

  可以看到这里是以dhcp模式配置网络信息的,因此在主控和W5100S初始化完成后,会进行DHCP初始化,然后增加一个定时器初始化,用来做DHCP过程中的计时以进行超时处理;接着进入DHCP配置网络信息,成功则直接进入循环调用回环测试函数,失败则用我们初始化的静态网络信息进行配置,然后再进入循环调用回环测试函数,如下所示:

/* Network information to be configured. */
wiz_NetInfo net_info = {
   
   
    .mac = {
   
   0x00, 0x08, 0xdc, 0x1e, 0xed, 0x2e}, // Configured MAC address
    .ip = {
   
   192, 168, 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值