JL
简体中文
WIZnetW5500TCP/IPSPIArduinoSTM32

WIZnet W5500 快速上手:SPI 接线与 Socket 初始化

从硬件 TCP/IP 的概念、SPI 接线、ioLibrary 初始化到开启第一个 socket,逐步带你让 W5500 与 Arduino / STM32 连上网。

发表于: 2025-01-15

为什么用硬件 TCP/IP?

W5500 把整个 TCP/IP 协议栈做在芯片内部,MCU 不需要跑软件协议栈,也不需要 RTOS,省下大量 Flash/RAM 与 CPU 周期。

它内置 32KB 收发缓冲区、支持最多 8 个独立 socket,并集成 PHY,因此外部电路只需要 RJ45 与变压器,非常适合资源有限的 MCU 与要求连线稳定的工业场景。

SPI 接线

W5500 通过 SPI 与主控 MCU 通信,需要连接 SCSn(片选)、SCLK、MOSI、MISO 四条基本信号,外加 RSTn(复位)与选用的 INTn(中断)。

注意三点:W5500 的 SPI 支持 Mode 0 与 Mode 3;IO 为 3.3V(5V MCU 需电平转换或确认耐受);MCU 与 W5500 必须共地。初期调试可先把 SCLK 降到 1~8 MHz 确保稳定,之后再提速。

用 ioLibrary 初始化

WIZnet 官方提供开源的 ioLibrary 驱动。流程是:先注册 SPI 的读写字节与片选 callback,调用 wizchip_init() 并指定每个 socket 的收发缓冲区大小(总和 ≤ 16KB),再用 wizchip_setnetinfo() 设定 MAC / IP / Gateway / Subnet。

初始化后务必检查 PHY 连线状态(link up)与读回的版本寄存器,确认 SPI 通信正常,这是最常见的调试切入点。

开启第一个 Socket

以 TCP 客户端为例:用 socket() 开启某个 socket 为 Sn_MR_TCP,调用 connect() 连到目标 IP 与 port,成功后即可用 send() 与 recv() 收发数据,结束时 close()。TCP 服务端则改用 listen() 等待连线。

Modbus/TCP、MQTT 等协议本质上都是在 TCP socket 上跑封包,因此 W5500 只负责传输,封包格式由 MCU 端处理,移植非常简单。

文中提及的产品

W5500 现货

W5500 硬件 TCP/IP Ethernet 控制器

W5500 是 WIZnet 的旗舰以太网控制器,采用独特的硬件 TCP/IP stack,无需软件实现 TCP/IP 协议即可直接建立网络连接。通过 SPI 接口与主控 MCU 连接,内置 32KB 收发 Buffer,支持最多 8 个 socket,是 Arduino/Raspberry Pi 生态系最广泛采用的以太网芯片。

EthernetTCP/IPSPI
W5100S 现货

W5100S 硬件 TCP/IP Ethernet 控制器(多接口)

W5100S 是 W5100 的升级版,支持 SPI 及并列接口,提供 16KB 收发 Buffer 及 4 个 socket,相较 W5100 增加 SOCKET-less 命令、自动工作唤醒(WOL)及 PHY 掉电模式,适合需要并列接口的嵌入式系统。

EthernetTCP/IPSPI

需要这些元器件或设计支持?

傑聯特科技提供元器件、规格书与工程技术支持。

立即询价