类: Eth 驱动
约 1276 字大约 4 分钟
2026-03-19
构建固件和导入到JS
W5500 类由 eth 模块提供:
import { W5500 } from 'eth'简介
W5500 以太网驱动类
用于通过 SPI 接口控制 W5500 以太网模块,实现有线网络连接。 支持动态IP(DHCP)和静态IP配置,提供网络状态事件监听。
W5500 通过 SPI 接口与 ESP32 通信。在使用 W5500 之前, 需要先通过 serial 模块初始化对应的 SPI 总线。
示例:
import { W5500 } from "eth"
import * as serial from "serial"
// 第一步:初始化 SPI 总线
const spi = serial.spi2
spi.setup({
miso: 19, // MISO 引脚
mosi: 23, // MOSI 引脚
sck: 18 // 时钟引脚
})
// 第二步:创建 W5500 实例
const eth = new W5500()
// 第三步:监听网络事件
eth.on("connected", () => {
console.log("以太网已连接")
})
eth.on("ip.got", (info) => {
console.log("获取到IP:", info.ip)
console.log("子网掩码:", info.netmask)
console.log("网关:", info.gw)
})
eth.on("disconnected", () => {
console.log("以太网已断开")
})
// 第四步:初始化 W5500
eth.setup({
spi: 2, // SPI 总线号(对应 serial.spi2)
cs: 5, // CS 引脚
rst: 17, // 复位引脚(可选)
intr: 16, // 中断引脚(可选,不使用则采用轮询模式)
clock_mhz: 16, // SPI 时钟频率(MHz)
polling_ms: 0, // 轮询间隔(毫秒,0表示中断模式)
phy_addr: 1 // PHY 地址
})
// 设置静态 IP(可选,默认使用 DHCP)
// eth.setIP("192.168.1.100", "255.255.255.0", "192.168.1.1")W5500 以太网驱动类
用于通过 SPI 接口控制 W5500 以太网模块,实现有线网络连接。 支持动态IP(DHCP)和静态IP配置,提供网络状态事件监听。
类方法
方法 constructor
原型: constructor ()
构造函数
创建一个新的 W5500 实例。
返回值:
类型W5500
说明返回 W5500 实例
方法 setup
原型: setup (config:object)
初始化 W5500 以太网模块
配置并启动 W5500 以太网模块,建立网络连接。
注意:在调用此方法前,必须先通过 serial 模块初始化对应的 SPI 总线。
配置参数说明:
- spi: SPI 总线号(如 2 表示 SPI2,对应 serial.spi2)
- cs: CS(片选)引脚号
- rst: 复位引脚号(可选,默认 -1 表示不使用)
- intr: 中断引脚号(可选,默认 -1 表示不使用轮询模式)
- clock_mhz: SPI 时钟频率(MHz,默认 16)
- polling_ms: 轮询间隔(毫秒,默认 0 表示使用中断模式)
- phy_addr: PHY 地址(默认 1)
示例:
import { W5500 } from "eth"
import * as serial from "serial"
// 先初始化 SPI 总线
const spi = serial.spi2
spi.setup({
miso: 19,
mosi: 23,
sck: 18
})
// 然后初始化 W5500
const eth = new W5500()
// 基本配置
eth.setup({
spi: 2, // 使用 SPI2(对应 serial.spi2)
cs: 5 // CS 引脚
})
// 完整配置(使用中断模式)
eth.setup({
spi: 2, // SPI 总线号(对应 serial.spi2)
cs: 5, // CS 引脚
rst: 17, // 复位引脚
intr: 16, // 中断引脚(使用中断模式时设置)
clock_mhz: 16, // SPI 时钟频率
polling_ms: 0, // 0 表示使用中断模式
phy_addr: 1 // PHY 地址
})
// 使用轮询模式(不设置 intr 或设置 polling_ms > 0)
eth.setup({
spi: 2,
cs: 5,
rst: 17,
polling_ms: 100 // 每 100ms 轮询一次
})参数:
config
类型object (详见下方类型定义)
参数说明配置对象
config 类型定义:
{ spi: number, // SPI 总线号 cs: number, // CS 引脚号 rst?: number, // 复位引脚号,默认 -1 intr?: number, // 中断引脚号,默认 -1 clock_mhz?: number, // SPI 时钟频率(MHz),默认 16 polling_ms?: number, // 轮询间隔(毫秒),默认 0,0 表示中断模式 phy_addr?: number // PHY 地址,默认 1 }
异常:
- SPI 以太网驱动未启用
- 安装 GPIO 中断失败
- SPI 以太网驱动安装失败
- SPI 以太网驱动连接到网络接口失败
- SPI 以太网驱动启动失败
返回值:
类型undefined
方法 getMAC
原型: getMAC ()
获取 MAC 地址
获取 W5500 以太网模块的 MAC 地址。
返回值:
类型string
说明返回 MAC 地址字符串(格式:xx:xx:xx:xx:xx:xx)
方法 setIP
原型: setIP (ip:string, netmask:string, gw:string)
设置静态 IP 地址
配置静态 IP 地址、子网掩码和网关。调用此方法会停止 DHCP 客户端。
示例:
// 设置静态 IP
eth.setIP("192.168.1.100", "255.255.255.0", "192.168.1.1")参数:
ip
类型string
参数说明IP 地址(如 "192.168.1.100")
netmask
类型string
参数说明子网掩码(如 "255.255.255.0")
gw
类型string
参数说明网关地址(如 "192.168.1.1")
异常:
- esp_netif_set_ip_info() 失败
返回值:
类型undefined
