从 W5500 说起:用单片机搭一个“真网口”的完整方案
一、为什么单片机需要“外挂”网口?
二、W5500 是谁?能干什么?
2.1 核心规格一览
| 项目 | 说明 |
|---|---|
| 协议支持 | 硬件支持 TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE 等 |
| 以太网 | 集成 10/100M MAC + PHY,支持自协商、全/半双工 |
| Socket | 8 个独立硬件 Socket,可同时维持多路连接 |
| 片内缓冲 | 32KB RAM,用于 TCP/IP 报文处理 |
| 主机接口 | SPI,最高约 80MHz,与常见单片机兼容 |
| 电压 | 内核 3.3V,I/O 可容忍 5V |
| 封装 | 48pin LQFP,7×7mm,0.5mm 引脚间距 |
对单片机来说,你只需要接一路 SPI + 中断/复位等少量 GPIO,就能得到完整的以太网能力,非常适合 8/16 位或资源紧张的 32 位 MCU。
2.2 和“软件协议栈”方案对比
常见做法有两种:
-
软件协议栈:单片机跑 lwIP / uIP 等,自己算校验和、组包拆包,占 Flash、RAM 和 CPU,对低端 MCU 压力大。
-
硬件协议栈:以 W5500 为代表,协议在芯片内部完成,单片机只做“发命令、读数据”,开发简单、稳定性好。
所以很多工业控制、门禁、串口转网口、小型数据采集等场景,都会选 W5500 这类“硬 TCP/IP”方案。
三、系统架构:单片机 + W5500 + 网口
整体可以看成三部分:单片机(主控)、W5500(网络引擎)、网口(变压器 + RJ45)。
这里我引用一下一个我绘制的网口部分原理图:


四、硬件设计要点(简要)
-
电源W5500 一般为 3.3V 供电,注意与 MCU 电平一致;若 MCU 为 5V 系统,注意 SPI 电平匹配(W5500 多数型号 I/O 耐 5V,具体以手册为准)。
-
晶振W5500 需要外部晶振(常见 25MHz),给 PHY 和内部逻辑提供时钟, layout 时尽量靠近芯片,走线短、包地。
-
网络变压器必须加,不能把 W5500 的差分线直接拉到 RJ45。变压器选型要符合 10/100M 以太网规范,带中心抽头时按 datasheet 接好滤波和偏置。
-
PCBTX/RX 差分线按差分对走线,等长、控阻抗(常见 50Ω);避免从数字区域穿线,减少对 PHY 的干扰。
这些在 WIZnet 官方参考设计和各开发板原理图里都有现成例子,建议直接参考再按自己板子调整。
五、软件侧:单片机要做什么?
-
初始化:配置 SPI 时序(模式、速率),对 W5500 做复位、读 CHIPR 等寄存器确认通信正常,再配置网关、子网掩码、MAC、IP 等。
-
Socket 编程:W5500 把 TCP/UDP 抽象成 8 个 Socket,单片机对每个 Socket 做“打开 → 连接/绑定 → 收发 → 关闭”即可,无需自己实现 ARP、TCP 状态机。
-
数据收发:通过 SPI 往对应 Socket 的 TX 缓冲区写数据,或从 RX 缓冲区读数据;可以轮询或配合 INT 中断做事件驱动。
官方和社区都有 STM32、Arduino、ESP32 等平台的驱动和例程,一般会封装成 socket()、connect()、send()、recv() 等接口,和桌面开发习惯接近,上手快。
六、典型应用场景
-
串口/并口转以太网:门禁、LED 屏控、老设备联网。
-
小型服务器/网关:采集传感器数据,通过 TCP 上报或提供简单 Web 配置页。
-
工业与楼宇自动化:设备状态上传、远程控制。
-
消费类:机顶盒、网络摄像头、智能家电等需要有线网且主控不带 MAC 的场景。

七、小结
W5500 用“硬件 TCP/IP + SPI”的方式,把单片机扩展网口的复杂度降了下来:硬件上,MCU + W5500 + 变压器 + RJ45 就能组成完整网口;软件上,只需 SPI 驱动 + Socket 配置与收发,不必在 MCU 里跑完整协议栈。如果你正在做“单片机 + 网口”的方案选型或原理图设计,不妨以 W5500 为参考,先搭一版最小系统,再根据产品需求做裁剪和优化。


