class LAN – egy Ethernet interfész vezérlése

A LAN osztály az MCU csipen belüli Ethernet MAC-jét vezérli egy külső RMII PHY ellenében. A PHY típusa, MDIO-címe és lábkiosztása mind kártyafüggő; minden OpenMV kártyába ésszerű alapértékek vannak beépítve, így a konstruktor általában nem vesz át argumentumot.

Elérhető a következőkön:

  • OpenMV Cam N6 (STM32 port) – alapértelmezett PHY: PHY_LAN8742.

  • Arduino Portenta H7 (STM32 port) – alapértelmezett PHY: PHY_LAN8742.

  • OpenMV Cam RT1062 (mimxrt port) – alapértelmezett PHY: PHY_KSZ8081.

Példa a használatra:

import network

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

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

Konstruktorok

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

Egy LAN interfészobjektum létrehozása. Az id utáni összes argumentum csak kulcsszavas.

Az id választja ki az Ethernet portot azokon a kártyákon, amelyek egynél többet tesznek elérhetővé (mimxrt port: 0 = ENET, 1 = ENET_1). Az STM32 kártyákon figyelmen kívül marad, mivel azoknak csak egyetlen MAC-jük van.

A phy_type választja ki a PHY-illesztőprogramot (az alábbi PHY_* konstansok egyike). Add át a None értéket (az alapértelmezést), hogy az OpenMV kártyára bekötött PHY-t használja.

A phy_addr a PHY MDIO-címe a kezelőbuszon. Add át a None értéket (az alapértelmezést), hogy a kártya bekötött értékét használja.

A ref_clk_mode (csak mimxrt) választja ki, hogy az RMII referencia-órajelet a MAC (OUT) vagy a PHY (IN) hajtja-e meg. Az STM32 kártyákon figyelmen kívül marad.

Metódusok

active(is_active: bool | None = None) bool

Az Ethernet MAC be- vagy kikapcsolása.

Argumentum nélkül visszaadja az aktuális PHY-kapcsolat állapotát igaz/hamis egészként – a kódolt értékek teljes halmazához lásd a status() metódust.

Az active(True) elindítja a MAC-et és a PHY-t, megkezdi az automatikus egyeztetést, és felhozza az lwIP netif-et. Maga a kapcsolat felépülése eltarthat egy ideig – ellenőrizd az isconnected() metódust, ha blokkolni szeretnél, amíg a kapcsolat teljesen kész nincs. Az összes többi metódus (ipconfig(), config(), …) megköveteli, hogy az interfész aktív legyen.

Az active(False) leállítja a MAC-et és lebontja a netif-et.

isconnected() bool

True értéket ad vissza, amikor a PHY kiegyezett a kapcsolat felépüléséről és az interfész teljesen aktív állapotban van (a kapcsolat állapotának értéke 3).

status() int

Visszaadja a nyers PHY-kapcsolat állapotát egészként:

  • 0 – a kapcsolat le van bontva.

  • 1 – a kapcsolat felépült (csak a PHY, az IP-verem még nem áll készen).

  • 2 – átmeneti állapot.

  • 3 – a kapcsolat felépült, és az IP-verem befejezte az interfész felhozását.

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

Az IPv4 interfészparaméterek lekérése vagy beállítása (ip, subnet, gateway, dns) pontozott négyesekből álló négyelemű rendezett n-esként.

Megjegyzés

Új kódhoz inkább az ipconfig() metódust használd:

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

Az IPv4 / IPv6 interfészparaméterek lekérése vagy beállítása. Ugyanúgy viselkedik, mint az AbstractNIC.ipconfig() – a támogatott paraméternevek teljes listájához (dhcp4, addr4, gw4, autoconf6, addr6, …) lásd azt a metódust.

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

Az Ethernet-specifikus interfészparaméterek lekérése vagy beállítása.

Egyetlen pozicionális karakterlánc-argumentummal visszaadja az adott paraméter értékét:

  • "mac" – az interfész MAC-címe 6 bájtos bytes objektumként.

Kulcsszavas argumentumokkal egy vagy több paraméter beállítása:

  • trace=<int> – az lwIP nyomkövetésének engedélyezése. Bitmező: a 2 a TX-et követi, a 4 az RX-et követi, a 8 a teljes nyomkövetést engedélyezi.

  • low_power=<bool> – a PHY IEEE 802.3az (Energy Efficient Ethernet) kis fogyasztású módjának engedélyezése vagy letiltása.

Konstansok

PHY_LAN8742: int

Microchip LAN8742A 10/100 Ethernet PHY. Csak STM32 port; alapértelmezett az OpenMV Cam N6 és az Arduino Portenta H7 kártyákon.

PHY_LAN8720: int

Microchip LAN8720 10/100 Ethernet PHY. Mind az STM32, mind a mimxrt porton elérhető.

PHY_DP83848: int

Texas Instruments DP83848 10/100 Ethernet PHY. Mind az STM32, mind a mimxrt porton elérhető.

PHY_DP83825: int

Texas Instruments DP83825 10/100 Ethernet PHY. Mind az STM32, mind a mimxrt porton elérhető.

PHY_KSZ8081: int

Microchip KSZ8081 10/100 Ethernet PHY. Csak mimxrt port; alapértelmezett az OpenMV Cam RT1062 kártyán.

PHY_DP83867: int

Texas Instruments DP83867 gigabites Ethernet PHY. Csak mimxrt port.

PHY_RTL8211F: int

Realtek RTL8211F gigabites Ethernet PHY. Csak mimxrt port.

IN: int

Add át a ref_clk_mode paraméternek, hogy az RMII referencia-órajelet a PHY hajtsa meg. Csak mimxrt port.

OUT: int

Add át a ref_clk_mode paraméternek, hogy az RMII referencia-órajelet a MAC hajtsa meg. Csak mimxrt port.