一、W5100S/W5500+RP2040树莓派Pico<静态配置网络信息>

2023-10-29 14:30

本文主要是介绍一、W5100S/W5500+RP2040树莓派Pico<静态配置网络信息>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 前言
  • 2. 相关网络信息
    • 2.1 简介
    • 2.2 优点
    • 2.3 应用
  • 3. WIZnet以太网芯片
  • 4. 静态IP网络设置示例讲解以及使用
    • 4.1 程序流程图
    • 4.2 测试准备
    • 4.3 连接方式
    • 4.4 相关代码
    • 4.5 编译烧录
  • 5. 注意事项
  • 6. 相关链接

1. 前言

  从本章开始我们将用WIZnet的W5100S/W5500以太网芯片结合RP2040树莓派Pico,通过简单讲解和演示示例来让大家快速上手且更好应用WIZnet的产品,助力快速开发。

2. 相关网络信息

2.1 简介

  • MAC地址(Media Access Control Address): MAC地址是网络设备在局域网中的唯一标识,它是由6组2个16进制数字组成的48位地址。例如:00:0A:95:9D:68:16。MAC地址通常由硬件制造商分配给每个网络接口卡(NIC),用于在局域网内进行唯一身份识别。MAC地址用于在数据链路层上定义通信,并且只能在同一局域网内有效。
  • IP地址(Internet Protocol Address): IP地址是网络设备在全球互联网中的唯一标识,它是由四个0到255之间的数字组成,被分为网络部分和主机部分。例如:192.168.1.1。IP地址用于在网络层上定义通信,并且可以在互联网中的任何位置有效。IP地址分为公网IP和私有IP,公网IP在全球范围内唯一,私有IP则是在内部网络中使用。
  • 子网掩码(Subnet Mask): 子网掩码是用来划分网络地址和主机地址的。在IPv4中,子网掩码通常由连续的1和0组成,其中连续的1表示网络部分,连续的0表示主机部分。例如,常见的子网掩码255.255.255.0表示前三个数字是网络部分(即24位),最后一个数字是主机部分(即8位)。子网掩码可以用于判断两个IP地址是否在同一网络中。
  • 网关(Gateway): 网关是连接不同网络的设备,它可以将数据从一个网络传输到另一个网络。在一个局域网中,网关通常是一个路由器或者一个具有路由功能的交换机。对于每个IP地址,都有一个默认网关,它是数据包离开当前网络时必须通过的设备。当数据包到达目标网络时,目标网络的设备会将数据包发送回原始网络,通过原始网络的网关返回原始设备。
  • DNS(Domain Name System): DNS是域名系统,它用于将易于记忆的域名转换为计算机能够理解的IP地址。例如,当您在浏览器中键入www.example.com时,DNS将把www.example.com这个域名解析为相应的IP地址(可能是192.168.1.1或其他)。DNS通常由DNS服务器提供,可以在公共DNS服务器(例如Google的8.8.8.8)上设置,也可以在私有DNS服务器(例如在您自己的网络中运行的服务器)上设置。

2.2 优点

  • 方便远程访问:由于静态IP地址固定不变,因此非常方便进行远程访问。
  • 适合服务器:静态IP地址适合用于服务器等需要长时间稳定运行的场景。
  • 易于管理:由于静态IP地址固定不变,因此易于管理和维护。

2.3 应用

  各大服务器,远程办公,安全监控,VoIP电话和一些IP地址固定不需要频繁变动的场合。
在这里插入图片描述

3. WIZnet以太网芯片

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

ModelEmbedded CoreHost I/FTX/RX BufferHW SocketNetwork Performance
W5100STCP/IPv4, MAC & PHY8bit BUS, SPI16KB4Max 25Mbps
W6100TCP/IPv4/IPv6, MAC & PHY8bit BUS, Fast SPI32KB8Max 25Mbps
W5500TCP/IPv4, MAC & PHYFast SPI32KB8Max 15Mbps
  • W5100S/W6100 支持 8bit数据总线接口,网络传输速度会优于W5500。
  • W6100 支持IPV6,与W5100S 硬件兼容,若已使用W5100S的用户需要支持IPv6,可以Pin to Pin兼容。
  • W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存

4. 静态IP网络设置示例讲解以及使用

4.1 程序流程图

在这里插入图片描述

4.2 测试准备

软件:

  • Visual Studio Code
  • WIZnet UartTool

硬件:

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

4.3 连接方式

  • 通过数据线连接PC的USB口(主要用于烧录程序,也可以虚拟出串口使用)
  • 通过TTL串口转USB,连接UART0 的默认引脚:
    • RP2040 GPIO0(UART0 TX) <----> USB_TTL_RX
    • RP2040 GPIO1(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 相关代码

  我们直接打开network_install.c文件(路径:examples/network_install/network_install.c)看下具体实现:先是用一个结构体变量初始化我们的网络基本信息,分别有MAC地址、IP地址、子网掩码、网关、DNS地址;然后又声明了个结构体变量用于回读配置信息,并通过串口打印出来,方便通过串口看到我们的配置信息是否配置成功了。

  主函数即按照我们流程图进行,首先系统初始化,然后初始化我们的芯片,写入配置信息,回读并通过串口打印出来,然后进行phy链路的检测,注意在初始化芯片时已经进行PHY检测,这里在配置信息后有进行了一次,以保证接下来的测试正常;PHY检测异常超时后会报错然后进入while循环阻塞,正常的话会打印PHY的工作模式,10M/100M、半双工/全双工,并提示我们进行PING命令的操作,然后进入阻塞;整体比较简单,如下所示:

/* Network information to be configured. */
wiz_NetInfo net_info = {.mac = {0x00, 0x08, 0xdc, 0x1e, 0xed, 0x2e}, // Configured MAC address.ip = {192, 168, 1, 10},                     // Configured IP address.sn = {255, 255, 255, 0},                    // Configured subnet mask.gw = {192, 168, 1, 1},                      // Configured gateway.dns = {8, 8, 8, 8},                         // Configured domain address
};/* This parameter is used to receive the configuration information read back. */
wiz_NetInfo get_info;int main()
{uint8_t link_status;wiz_PhyConf phyconf;uint32_t count = 0;stdio_init_all(); // Initialize the main control peripheralwizchip_initialize();                 // Chip initializationprintf("wiznet chip network install example.\r\n");wizchip_setnetinfo(&net_info);        // Write configuration informationprint_network_information(&get_info); // Read the configuration information and print itdo{link_status = wizphy_getphylink();if (link_status == PHY_LINK_OFF){count++;if (count > 10){printf("Link failed of Internal PHY.\r\n");break;}}sleep_ms(500);} while (link_status == PHY_LINK_OFF);if (link_status == PHY_LINK_ON){wizphy_getphyconf(&phyconf);printf("Link OK of Internal PHy.\r\n");printf("the %d Mbtis speed of Internal PHYrn.\r\n", phyconf.speed == PHY_SPEED_100 ? 100 : 10);printf("The %s Duplex Mode of the Internal PHy.\r\n", phyconf.duplex == PHY_DUPLEX_HALF ? "Half-Duplex" : "Full-Duplex");printf("\r\nTry ping the ip:%d.%d.%d.%d.\r\n", get_info.ip[0], get_info.ip[1], get_info.ip[2], get_info.ip[3]);}else{printf("\r\nPlease check whether the network cable is loose or disconnected.\r\n");}while (true){}
}

4.5 编译烧录

编译、生成

  1. 点击左边的CMake

  2. 找到examples下面的对应工程network_install

  3. 点击右边的生成即可开始编译,如下图所示:在这里插入图片描述

烧录

  1. 点击左边的资源管理器:编译完成之后会在build文件夹下的examples文件夹里的对应工程文件夹(路径:build/examples/network_install)下面生成.uf2文件,这是我们烧录所需要的二进制文件

  2. 找到对应工程文件下的对应的network_install.uf2文件

  3. 鼠标右击选择在文件资源管理器中显示,如下所示:

在这里插入图片描述

  1. 接下来烧录,板子通过USB接口用数据线连接电脑后,按下boot键后,接着按下复位上电,进入程序烧录模式

  2. 然后可以看到开发板虚拟出来的u盘,如果没看到虚拟出来的u盘,重试第一步

  3. 紧接着将要烧录的.uf2文件拖入复制到虚拟出来的u盘,即可完成烧录,如下图所示:

在这里插入图片描述

现象

  1. 打开WIZ UartTool,选择对应的COM口,填入参数:波特率115200,8位数据位,1位停止位,无校验位,无流控,填完参数后点击open打开

  2. 按下复位键,可以看到回读打印的配置信息等;我们按下“Windows + R”输入“cmd”打开cmd终端后

  3. 根据串口打印的信息使用PING命令,来PING下配置的IP,可以看到成功PING通的PING回复,如下所示:

在这里插入图片描述

5. 注意事项

  • 静态配置的IP设置应避免IP重复导致IP冲突。

  • 如果采用的是WIZnet的W5500来实现本章的示例,我们只需修改两个地方即可

  1. 在library/ioLibrary_Driver/Ethernet/下找到wizchip_conf.h这个头文件,将WIZCHIP 宏定义修改为W5500;
  2. 在library下找到CMakeLists.txt文件,将COMPILE_SEL设置为ON即可,OFF为W5100S,ON为W5500。

6. 相关链接

WIZnet官网

WIZnet官方库链接

本章例程链接

想了解更多,评论留言哦!

这篇关于一、W5100S/W5500+RP2040树莓派Pico<静态配置网络信息>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301272

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php