当前位置: 首页 > news >正文

一、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<静态配置网络信息>

文章目录 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以太网芯片结合RP…...

【C++的OpenCV】第十四课-OpenCV基础强化(二):访问单通道Mat中的值

&#x1f389;&#x1f389;&#x1f389; 欢迎各位来到小白 p i a o 的学习空间&#xff01; \color{red}{欢迎各位来到小白piao的学习空间&#xff01;} 欢迎各位来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496;&#x1f496;&…...

elementUI el-collapse 自定义折叠面板icon 和 样式 或文字展开收起

: :v-deep{.el-collapse-item__arrow {width: 40px;}.el-icon-arrow-right:before {content: "展开";font-size: 15px;font-family: heiti;color: #2295ff;font-weight: bold;}.el-collapse-item__arrow.is-active {transform: none;}.el-collapse-item__arrow.is-a…...

如何用个人数据Milvus Cloud知识库构建 RAG 聊天机器人?(上)

生成式人工智能时代,开发者可以借助大语言模型(LLM)开发更智能的应用程序。然而,由于有限的知识,LLM 非常容易出现幻觉。检索增强生成(RAG)https://zilliz.com/use-cases/llm-retrieval-augmented-generation 通过为 LLM 补充外部知识,有效地解决了这一问题。 在 Chat …...

2023年江西省“振兴杯”工业互联网安全技术技能大赛暨全国大赛江西选拔赛 Write UP

文章目录 一、协议分析 - modbus二、协议分析 - 异常的流量三、协议分析 - S7Error四、协议分析 - OmronAttack五、组态编程 - 工程的秘密六、组态编程 - 工程的秘密七、组态编程 - 简单的计算八、组态编程 - 交通灯九、组态编程 - 有趣的转盘十、应急处置 - 登录日志分析十一、…...

PostMan 之 Mock 接口测试

在测试的时候经常会碰到后端开发工程师的接口还没有开发完成&#xff0c;但是测试任务已经分配过来。没有接口怎么测试呢&#xff1f; 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时&#xff0c;它会根据配置返回对应的…...

LuatOS-SOC接口文档(air780E)--libgnss - NMEA数据处理

示例 -- 提醒: 本库输出的坐标,均为 WGS84 坐标系 -- 如需要在国内地图使用, 要转换成对应地图的坐标系, 例如 GCJ02 BD09 -- 相关链接: https://lbsyun.baidu.com/index.php?titlecoordinate -- 相关链接: https://www.openluat.com/GPS-Offset.html-- 方案1, 经lua层进行数…...

基于华为云 IoT 物联网平台实现家居环境实时监控

01 智能家居环境监测 智能家居环境监测采用 Ruff 开发板作为主控&#xff0c;串口线连接温湿度传感器 DHT11 和空气质量传感器 SDS011&#xff0c;每5分钟采集一次数据&#xff0c;通过 MQTT 协议发送到华为云 IoT 物联网平台&#xff0c;并基于数据分析服务实时计算出整个家庭…...

【开源框架】Glide的图片加载流程

本篇文章从Glide 4.11源码入手&#xff0c;简单的分析整个图片请求的流程&#xff0c;本着 ”只见树林&#xff0c;不见树木“ 的原则&#xff0c;宏观请求流程&#xff0c;不细究实现细节&#xff08;细节留坑埋点&#xff0c;之后慢慢写&#xff09; 引入依赖 以下的所有分…...

win10下Mariadb绿色版安装步骤

使用绿色版的mariadb数据库管理软件&#xff0c;免费开源&#xff0c;可以用来替换MySQL。首先从mariadb官网下载绿色版本的压缩包。解压后、配置好即可以使用。 把他解压缩到C:\mariadb\之下。打开powershell&#xff1a; Cd c:\mariadb\bin .\mysql_install_db.exe 这一…...

wiresharak捕获DNS

DNS解析&#xff1a; 过滤项输入dns&#xff1a; dns查询报文 应答报文&#xff1a; 事务id相同&#xff0c;flag里 QR字段1&#xff0c;表示响应&#xff0c;answers rrs变成了2. 并且响应报文多了Answers 再具体一点&#xff0c;得到解析出的ip地址&#xff08;最底下的add…...

vue源码分析(一)——源码目录说明

文章目录 一、如何下载源码&#xff08;可忽略&#xff09;&#xff08;1&#xff09;打开地址&#xff08;2&#xff09;复制链接&#xff08;3&#xff09;git clone 链接 二、源码目录说明1.可以根据你下载的源码通过package.json文件查看vue版本2.源码目录说明 一、如何下载…...

【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 笔记链接 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础 吴恩达课程笔记——浅层神经网络、深层神经网络 四、浅层神经网络1.双层神经网络表示2.双层神经网络的前向传播第一层前向传播第二层前…...

UI自动化概念 + Web自动化测试框架介绍

1.UI自动化测试概念:我们先明确什么是UI UI&#xff0c;即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试&#xff0c;UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 …...

在 macOS 上的多个 PHP 版本之间切换

文章目录 前言一、前提条件1.引入库需要安装 Xcode 2.安装多个PHP版本2.PHP版本切换 开源替代品 前言 不同项目使用php版本可能不同&#xff0c;需要安装不同版本php 一、前提条件 1.引入库 需要安装 Xcode 命令行工具和Homebrew xcode-select --install检查brew是否已安…...

地址解析协议ARP

地址解析协议&#xff08;Address Resolution Protocol&#xff0c;ARP&#xff09;&#xff0c;用于根据本网内目的主机或默认网关的IP地址获取其MAC地址。 ARP的基本思想&#xff1a;在每一台主机中设置专用内存区域&#xff0c;称为ARP高速缓存&#xff08;也称为ARP表&…...

Go学习第十三章——Gin入门与路由

Go web框架——Gin入门与路由 1 Gin框架介绍1.1 基础介绍1.2 安装Gin1.3 快速使用 2 路由2.1 基本路由GET请求POST请求 2.2 路由参数2.3 路由分组基本分组带中间件的分组 2.4 重定向 1 Gin框架介绍 github链接&#xff1a;https://github.com/gin-gonic/gin 中文文档&#xf…...

[减脂期食谱] 自制千岛酱

[减脂期食谱] 自制千岛酱 成品如下&#xff1a; 最中间的那个&#xff0c;算比较居中的颜色吧&#xff0c;其实自己家做原版的千岛酱还是比较简单的&#xff0c;它的底就是蛋黄酱(蛋黄油乳化的酱)&#xff0c;随后里面的材料比较自由&#xff0c;维基百科是这么介绍的&#xf…...

Android 系统架构

目录 Android 系统架构 1. Android 应用层 2. Android应用框架层 2.1 Activity Manager &#xff08;活动管理器&#xff09; 2.2 Window Manager &#xff08;窗口管理器&#xff09; 2.3 Content Provider (内容提供器) 2.4 View System&#xff08;视图系统&a…...

【Docker】Python Flask + Redis 练习

一、构建flask镜像 1.准备文件 创建app.py,内容如下 from flask import Flask from redis import Redis app Flask(__name__) redis Redis(hostos.environ.get(REDIS_HOST,127.0.0.1),port6379)app.route(/) def hello():redis.incr(hits)return f"Hello Container W…...

shell_52.Linux测试与其他网络主机的连通性脚本

实战演练 本节将展示一个实用脚本&#xff0c;该脚本在处理用户输入的同时&#xff0c;使用 ping 命令或 ping6 命令来测试与其他网络主机的连通性。 ping 命令或 ping6 命令可以快速测试网络主机是否可用。这个命令很有用&#xff0c;经常作为首选工具。如果只是检查单个主机&…...

OpenCV C++ 图像处理实战 ——《缺陷检测》

OpenCV C++ 图像处理实战 ——《缺陷检测》 一、结果演示二、缺陷检测算法2.1、多元模板图像2.2、训练差异模型三、图像配准3.1 功能源码3.1 功能效果四、多元模板图像4.1 功能源码五、缺陷检测5.1 功能源码六、源码测试图像下载总结一、结果演示...

Python操作MySQL基础使用

Python操作MySQL基础使用 链接数据库并查询数据 import pymysql# 链接数据库 conn pymysql.connect(host10.5.6.250,port3306,userroot,password******** )# 查看MySQL版本信息 print(conn.get_server_info()) # 5.5.27# 获取到游标对象 cursor conn.cursor()# 选择数据库…...

【pytorch】pytorch中的高级索引

这里只介绍pytorch的高级索引&#xff0c;是一些奇怪的切片索引 基本版 a[[0, 2], [1, 2]] 等价 a[0, 1] 和 a[2, 2]&#xff0c;相当于索引张量的第一行的第二列和第三行的第三列元素&#xff1b; a[[1, 0, 2], [0]] 等价 a[1, 0] 和 a[0, 0] 和 a[2, 0]&#xff0c;相当于索…...

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究是一个涉及计算机视觉、机器学习、人工智能和自动控制等多个领域的复杂问题。以下是对这个问题的研究内容和方向的一些概述。 障碍物检测 障碍物检测是自动驾驶汽车避障算法的核心部分&#xff0c;它需要从车辆的感知数据…...

Spring boot定时任务

目录 前言一、使用 Scheduled 注解二、使用 ScheduledExecutorService三、使用 Spring 的 TaskScheduler四、使用第三方调度框架 前言 在 Spring Boot 中&#xff0c;有多种方法来编写定时任务&#xff0c;以执行周期性或延迟执行的任务。下面是几种常见的方式 一、使用 Sche…...

Glide原理

本文基于Carson整理 1.简介 相比其他几种图片加载框架&#xff0c;Glide性能最好。这得益于其高效的图片缓存策略 其还有多样化的媒体格式加载&#xff1a;如GIF、Video&#xff0c;对于商城首页需展示丰富样式、信息的页面需求来说&#xff0c;也是必不可少的。 2.加载原理…...

wps表格按分隔符拆分单元格

有数据如下&#xff1b;看选中区域&#xff0c;一个单元格中有一个v&#xff0c;空格&#xff0c;然后有三个数值&#xff0c;以空格分开&#xff1b;点击菜单中的数据-分列&#xff1b; 弹出分列向导&#xff1b;选择 分隔符号&#xff1b; 选择分隔符为空格&#xff1b;出现预…...

【SEC 学习】Vim 的基本使用

一、Vim 编辑器安装 yum install -y vim二、Vim 三种模式 命令模式 编辑模式 末行模式 三、三种模式之间的转换 1. 命令模式 -> 编辑模式 快捷键含义i从光标处插入I从光标所在行首插入a从光标后插入A从光标所在行末插入o从光标下一行插入O从光标上一行插入 2. 命令模式 …...

Linux中shell脚本练习

目录 1.猜数字 2.批量创建用户 3.监控网卡Receive Transmit 数据的变化 4.部署Linux 5.系统性能检测脚本 6.分区脚本 7.数据库脚本 1.猜数字 随机数的生成 使用环境变量RANDOM&#xff0c;范围是0&#xff5e;32767 编写guest.sh&#xff0c;实现以下功能&#xff1…...