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)。在 STM32 板子上會被忽略,因為它們只有單一個 MAC。

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

取得或設定 IPv4 介面參數,以 (ip, subnet, gateway, dns) 點分四段字串的 4 元組形式呈現。

備註

新程式碼建議優先使用 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 連接埠。