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 W5500Arduino 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),仅供参考