网站建设 面试问题,空间设计英文,网站设计目前和将来的就业前景,杭州有奖举报文章目录 1. 前言2. 相关简介2.1 简述2.2 原理2.3 优点应用 3. WIZnet以太网芯片4. PHY模式配置测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 W5100S/W5500不仅支持自动PHY自动协商#xff0c;而且支持用户自定义… 文章目录 1. 前言2. 相关简介2.1 简述2.2 原理2.3 优点应用 3. WIZnet以太网芯片4. PHY模式配置测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 W5100S/W5500不仅支持自动PHY自动协商而且支持用户自定义PHY模式有10M/100M、半双工/全双工、掉电模式等。 本章节将用 W5100S/W5500 树莓派RP2040 进行逐一配置和测试 。 W5100S/W5500是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器同时也是一颗工业级以太网控制芯片。在以太网应用中使用 W5100S/W5500 让用户可以更加方便地在设备之间实现远程连接和通信。
2. 相关简介
2.1 简述
PHY的10M和100M是指网络传输速率分别表示每秒传输10兆比特Mbit和100兆比特Mbit的数据速率。这些速率通常用于描述局域网LAN和广域网WAN连接的性能。
半双工和全双工是指网络连接的工作模式。半双工意味着数据连接双方在同一时刻只能执行一方发送数据而另一方接收数据的操作模式。而全双工则是指数据连接双方在同一时刻都能发送和接收数据的操作模式。全双工方式无需进行方向的切换因此没有切换操作所产生的时间延迟这对那些不能有时间延误的交互式应用例如远程监测和控制系统十分有利。
PHY的掉电模式是指PHY芯片在遇到异常情况或需要节能时会自动进入掉电模式关闭不必要的设备和功能以减少能源消耗和延长设备使用寿命。在掉电模式下一些设备的运行会受到影响如屏幕亮度降低、处理器频率降低等。掉电模式是一种节能技术可以在保证设备正常运行的同时实现能源的高效利用。
2.2 原理 根据实际需要可以通过写入 PHYCR0 和 PHYCR1 寄存器参数从而配置PHY为不同的模式。
2.3 优点应用 节能低功耗PHY芯片在保持高性能的同时能够有效地降低功耗对于电池供电的设备来说可以大大延长设备的工作时间。 热设计优化低功耗PHY芯片在设计时已经考虑到了热性能的优化能够在高负载情况下保持良好的散热性能从而保证芯片的高效稳定运行。 延长设备使用寿命由于低功耗PHY芯片能够有效地降低功耗因此可以减少设备的热量积累和损耗从而延长设备的使用寿命。 符合绿色环保要求随着人们对环保意识的提高电子设备的高效节能也成为了关注的重点。低功耗PHY芯片能够更好地符合绿色环保的要求为电子设备的绿色发展做出贡献。 应用广泛低功耗PHY芯片在各种领域都有广泛的应用如物联网、智能家居、医疗设备等这些领域都需要长时间的工作和高效的表现低功耗PHY芯片恰好能够满足这些需求。
总之PHY低功耗的优点主要表现在节能、热设计优化、延长设备使用寿命、符合绿色环保要求和应用广泛等方面这些优点使得低功耗PHY芯片在各种领域中都得到了广泛的应用和推广。
3. WIZnet以太网芯片
WIZnet 主流硬件协议栈以太网芯片参数对比
ModelEmbedded CoreHost I/FTX/RX BufferHW SocketNetwork PerformanceW5100STCP/IPv4 MAC PHY8 bit BUS, SPI16 KB4Max 25 MbpsW6100TCP/IPv4/IPv6, MAC PHY8 bit BUS, Fast SPI32 KB8Max 25 MbpsW5500TCP/IPv4, MAC PHYFast SPI32 KB8Max 15 Mbps
W5100S/W6100 支持 8 bit数据总线接口网络传输速度会优于W5500。W6100 支持IPv6与W5100S 可以Pin to Pin兼容若已使用W5100S的用户需要支持IPv6则可直接换用。W5500 拥有比 W5100S更多的 socket数量以及发送与接收缓存
4. PHY模式配置测试
4.1 程序流程图 4.2 测试准备
软件
Visual Studio CodeWIZnet UartTool
硬件
W5100SIO模块 RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板Micro USB 接口的数据线TTL 转 USB网线
4.3 连接方式
通过数据线连接PC的USB口主要用于烧录程序也可以虚拟出串口使用通过TTL串口转USB连接UART0 的默认引脚 RP2040 GPIO 0UART0 TX ---- USB_TTL_RXRP2040 GPIO 1UART0 RX ---- USB_TTL_TX 使用模块连接RP2040进行连线时 RP2040 GPIO 16 ---- W5100S MISORP2040 GPIO 17 ---- W5100S CSRP2040 GPIO 18 ---- W5100S SCKRP2040 GPIO 19 ---- W5100S MOSIRP2040 GPIO 20 ---- W5100S RST 通过网线直接连接PC网口或PC和设备都通过网线连接交换机或路由器LAN口
4.4 相关代码
打开low_power.c文件路径examples/low_power/low_power.c看下具体实现
可以看到这里是以dhcp模式配置网络信息的因此在主控和W5100S初始化完成后会进行DHCP初始化然后增加一个定时器初始化用来做dhcp过程中的计时以进行超时处理接着进入dhcp配置网络信息失败则用静态配置信息之后依次配置PHY为10M模式、100M模式、掉电模式并回读打印配置最后进入while阻塞如下所示
/* Network information to be configured. */
wiz_NetInfo net_info {.mac {0x00, 0x08, 0xdc, 0x11, 0x22, 0x33}, // 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.dhcp NETINFO_DHCP}; // Configured dhcp model,NETINFO_DHCP:use dhcp; NETINFO_STATIC: use static ip.static uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] {0,
}; // Send and receive cachestaticstatic uint8_t breakout_flag 0; // Define the DHCP acquisition flagint main()
{struct repeating_timer timer; // Define the timer structurewiz_NetInfo get_info; // Stores the read configuration informationwiz_PhyConf phy_conf, get_conf;/* MCU init */stdio_init_all(); // Initialize the main control peripheralwizchip_initialize(); // Initialize the chip interfacewizchip_setnetinfo(net_info); // Configure once first/*dhcp init*/DHCP_init(SOCKET_ID, ethernet_buf); // DHCP initializationadd_repeating_timer_ms(1000, repeating_timer_callback, NULL, timer); // Add DHCP 1s Tick Timer handlerprintf(wiznet chip low power example.\r\n);network_init(net_info); // Configuring Network Informationprint_network_information(get_info); // Read back the configuration information and print it/* config init massage */phy_conf.by PHY_CONFBY_SW; // Use software configphy_conf.mode PHY_MODE_MANUAL; // User config mode phy_conf.duplex PHY_DUPLEX_FULL; // Full duplexphy_conf.speed PHY_SPEED_100; // Speed/* setting phy 100M mode */ctlwizchip(CW_SET_PHYCONF, phy_conf);ctlwizchip(CW_GET_PHYCONF, get_conf);printf(The current Mbtis speed : %d\r\n, get_conf.speed PHY_SPEED_100 ? 100 : 10);printf(The current Duplex Mode : %s\r\n, get_conf.duplex PHY_DUPLEX_HALF ? Half-Duplex : Full-Duplex);/* setting phy 10M mode */phy_conf.speed PHY_SPEED_10;ctlwizchip(CW_SET_PHYCONF, phy_conf);ctlwizchip(CW_GET_PHYCONF, get_conf);printf(The current Mbtis speed : %d\r\n, get_conf.speed PHY_SPEED_100 ? 100 : 10);printf(The current Duplex Mode : %s\r\n, get_conf.duplex PHY_DUPLEX_HALF ? Half-Duplex : Full-Duplex);/* setting phy low power mode */
#if (_WIZCHIP_ W5100S)wizphy_setphypmode(PHY_POWER_DOWN);printf(The current phy is : %s\r\n, (read_phy_pwdn(PHYCR1) (1 5)) ? normal mode : power down mode);printf(FHY is in power down state and cannot be ping reply.\r\n);
#elif (_WIZCHIP_ W5500)setPHYCFGR((uint8_t) PHYCFGR_RST);setPHYCFGR(PHYCFGR_OPMDC_PDOWN);printf(The current phy is : %s\r\n, (getPHYCFGR() PHYCFGR_OPMDC_PDOWN) ? power down mode : normal mode);printf(FHY is in power down state and cannot be ping reply.\r\n);
#endifwhile (true){}
}4.5 测试现象
硬件连接无误后编译烧录程序打开WIZ UartTool选择对应的COM口填入参数波特率1152008位数据位1位停止位无校验位无流控填完参数后点击open打开观察串口打印的信息以获取设备运行状态可以看到回读的信息PHY根据配置依次进入对应模式如下图所示 5. 注意事项
进入掉电模式后是不能进行数据收发的并且不会进行ping请求的回复如果想用WIZnet的W5500来实现本章的示例我们只需修改两个地方即可 在library/ioLibrary_Driver/Ethernet/下找到wizchip_conf.h这个头文件将_WIZCHIP_ 宏定义修改为W5500。 在library下找到CMakeLists.txt文件将COMPILE_SEL设置为ON即可OFF为W5100SON为W5500。 6. 相关链接 WIZnet官网 WIZnet官方库链接 本章例程链接 想了解更多评论留言哦