class LAN -- 控制以太网接口

LAN 类驱动 MCU 片上以太网 MAC,搭配外部 RMII PHY 工作。PHY 类型、MDIO 地址和引脚分配都是特定于开发板的;合理的默认值已内置到每块 OpenMV 开发板中,因此构造函数通常无需任何参数。

可用于:

  • OpenMV Cam N6(STM32 移植版)-- 默认 PHY PHY_LAN8742

  • Arduino Portenta H7(STM32 移植版)-- 默认 PHY PHY_LAN8742

  • OpenMV Cam RT1062(mimxrt 移植版)-- 默认 PHY PHY_KSZ8081

用法示例:

import network

nic = network.LAN()
nic.active(True)

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

构造函数

class network.LAN(id: int = 0, *, phy_type: int | None = None, phy_addr: int | None = None, ref_clk_mode: int | None = None) None

构造一个 LAN 接口对象。id 之后的所有参数均为仅关键字参数。

id 在拥有多个以太网端口的开发板上选择端口(mimxrt 移植版:0 = ENET,1 = ENET_1)。在仅有单个 MAC 的 STM32 开发板上会被忽略。

phy_type 选择 PHY 驱动(下列 PHY_* 常量之一)。传入 None(默认值)以使用连接到 OpenMV 开发板的 PHY。

phy_addr 是 PHY 在管理总线上的 MDIO 地址。传入 None(默认值)以使用开发板的接线值。

ref_clk_mode(仅限 mimxrt)选择 RMII 参考时钟由 MAC 驱动(OUT)还是由 PHY 驱动(IN)。在 STM32 开发板上会被忽略。

方法

active(is_active: bool | None = None) bool

启用或停用以太网 MAC。

无参数时,以真/假整数形式返回当前 PHY 链路状态 -- 完整的编码值集合参见 status()

active(True) 启动 MAC 和 PHY,开始自动协商,并使 lwIP netif 上线。链路建立本身可能需要片刻才能完成 -- 如果你需要阻塞直到链路完全就绪,可轮询 isconnected()。所有其他方法(ipconfig()config(),……)都要求接口处于激活状态。

active(False) 停止 MAC 并拆除 netif。

isconnected() bool

当 PHY 已协商链路建立 接口处于完全上线状态(链路状态值为 3)时返回 True

status() int

以整数形式返回原始的 PHY 链路状态:

  • 0 -- 链路断开。

  • 1 -- 链路建立(仅 PHY,IP 协议栈尚未就绪)。

  • 2 -- 正在转换中。

  • 3 -- 链路建立且 IP 协议栈已完成接口上线。

ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None

(ip, subnet, gateway, dns) 点分四段字符串四元组的形式获取或设置 IPv4 接口参数。

备注

新代码建议优先使用 ipconfig():

nic.ipconfig(addr4="192.168.0.4/24", gw4="192.168.0.1")
network.ipconfig(dns="8.8.8.8")
ipconfig(param: str) Any
ipconfig(**kwargs: Any) None

获取或设置 IPv4 / IPv6 接口参数。其行为与 AbstractNIC.ipconfig() 相同 -- 完整的受支持参数名列表(dhcp4addr4gw4autoconf6addr6,……)参见该方法。

config(param: str) Any
config(**kwargs: Any) None

获取或设置以太网特定的接口参数。

传入单个位置字符串参数时,返回该参数的值:

  • "mac" -- 接口 MAC 地址,为一个 6 字节的 bytes 对象。

传入关键字参数时,设置一个或多个参数:

  • trace=<int> -- 启用 lwIP 跟踪。位字段:2 跟踪 TX,4 跟踪 RX,8 启用完整跟踪。

  • low_power=<bool> -- 启用或禁用 PHY 的 IEEE 802.3az(高能效以太网)低功耗模式。

常量

PHY_LAN8742: int

Microchip LAN8742A 10/100 以太网 PHY。仅限 STM32 移植版;OpenMV Cam N6 和 Arduino Portenta H7 上的默认值。

PHY_LAN8720: int

Microchip LAN8720 10/100 以太网 PHY。STM32 和 mimxrt 移植版均可用。

PHY_DP83848: int

Texas Instruments DP83848 10/100 以太网 PHY。STM32 和 mimxrt 移植版均可用。

PHY_DP83825: int

Texas Instruments DP83825 10/100 以太网 PHY。STM32 和 mimxrt 移植版均可用。

PHY_KSZ8081: int

Microchip KSZ8081 10/100 以太网 PHY。仅限 mimxrt 移植版;OpenMV Cam RT1062 上的默认值。

PHY_DP83867: int

Texas Instruments DP83867 千兆以太网 PHY。仅限 mimxrt 移植版。

PHY_RTL8211F: int

Realtek RTL8211F 千兆以太网 PHY。仅限 mimxrt 移植版。

IN: int

传给 ref_clk_mode 使 RMII 参考时钟由 PHY 驱动。仅限 mimxrt 移植版。

OUT: int

传给 ref_clk_mode 使 RMII 参考时钟由 MAC 驱动。仅限 mimxrt 移植版。