ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ESP32-S3 没有 RMII 引脚?W5500 走 SPI 照样上以太网

ESP32-S3 没有 RMII 引脚?W5500 走 SPI 照样上以太网

ESP32-S3 没有 RMII 引脚?W5500 走 SPI 照样上以太网

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

手上有块 ESP32-S3 开发板,想插根网线做有线以太网,却发现板上根本没有 RMII 引脚。别急着去配 LAN8720。

先说结论:ESP32-S3 有线网络路线对比

接口类型典型器件是否适配 ESP32-S3适合场景一句话优劣
RMIILAN8720否(板载无 RMII)已带以太网 PHY 的成品板能跑满百兆,但需要改板
SPIW5500是开发板快速加网线口协议栈在芯片里,接线少,速度受 SPI 限制
USB 转 RJ45USB 网卡芯片是(限带 USB-OTG 的板)临时调试免布线,但绑死 USB,不适合做产品

选 SPI + W5500:Arduino core 的 Ethernet 库已内置 W5500 驱动,只需引出 4~6 个 GPIO,还能和显示屏、Flash 共用同一条 SPI 总线。

接线清单:W5500 SPI 接线表

编号沿用官方示例ETH_W5500_Arduino_SPI的默认值:

W5500 引脚ESP32-S3 引脚作用是否必须
SCKGPIO14SPI 时钟必须
MOSIGPIO13主出从入必须
MISOGPIO12主入从出必须
SCSGPIO15片选必须
INTGPIO4中断输出可选
RSTGPIO5硬件复位可选
3.3V3V3模块由 3.3V 供电必须
GNDGND共地必须

对照引脚位置图找到上表编号对应的物理焊盘。INT 和 RST 可以不接,但代码要做相应调整,见下面第三个坑。

跑通最小可用代码:ESP32-S3 接网线

这段代码只做一件事:初始化 SPI 总线,让 ETH 驱动接管 W5500,拿到 IP 后打印出来。

#include <ETH.h> #include <SPI.h> #define CS 15 // 片选 #define IRQ 4 // 中断,未接线时传 -1 #define RST 5 // 复位,未接线时传 -1 void setup() { SPI.begin(14, 12, 13); // SCK, MISO, MOSI ETH.begin(ETH_PHY_W5500, 1, CS, IRQ, RST, SPI); } void loop() { if (ETH.linkUp()) Serial.println(ETH); delay(1000); }

串口打出ETH Got IP及地址,说明链路和 DHCP 都通了,此时可以直接从 PC ping 这块板子。

三个容易踩的坑

  • SPI 时钟给太高:按 80MHz 配置时 DHCP 频繁超时、链路反复断开。W5500 的 SPI 上限约 33MHz,把时钟压到 40MHz 以内即可稳定。
  • 去掉中断线却忘了改轮询:INT 不接又不做处理,驱动会忙等,CPU 占用飙升。要么把 INT 线接上,要么在begin()前设置轮询周期(毫秒级)。
  • 供电不足或未共地:现象是偶发拿到 IP、随后随机掉线。W5500 必须用 3.3V 供电并与 ESP32-S3 共 GND,别拿未稳压的 5V 直灌。

做中小批量网关、不想为网线口改板、吞吐要求停在几 Mbps,选 W5500 + SPI 就够。要持续百兆吞吐、双口或时间戳敏感的应用,回 RMII 板卡方案,别硬用 W5500 顶。

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表