class LAN – Steuerung einer Ethernet-Schnittstelle

Die LAN-Klasse steuert die im MCU integrierte Ethernet-MAC gegen einen externen RMII-PHY an. Der PHY-Typ, die MDIO-Adresse und das Pinout sind alle board-spezifisch; sinnvolle Standardwerte sind in jedes OpenMV-Board fest integriert, sodass der Konstruktor normalerweise keine Argumente benötigt.

Verfügbar auf:

  • OpenMV Cam N6 (STM32-Port) – Standard-PHY PHY_LAN8742.

  • Arduino Portenta H7 (STM32-Port) – Standard-PHY PHY_LAN8742.

  • OpenMV Cam RT1062 (mimxrt-Port) – Standard-PHY PHY_KSZ8081.

Anwendungsbeispiel:

import network

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

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

Konstruktoren

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

Erzeugt ein LAN-Schnittstellenobjekt. Alle Argumente nach id sind nur als Schlüsselwortargumente zulässig.

id wählt den Ethernet-Port auf Boards aus, die mehr als einen bereitstellen (mimxrt-Port: 0 = ENET, 1 = ENET_1). Wird auf STM32-Boards ignoriert, die nur eine einzige MAC besitzen.

phy_type wählt den PHY-Treiber aus (eine der PHY_*-Konstanten weiter unten). Übergeben Sie None (der Standardwert), um den auf dem OpenMV-Board verdrahteten PHY zu verwenden.

phy_addr ist die MDIO-Adresse des PHY auf dem Management-Bus. Übergeben Sie None (der Standardwert), um den auf dem Board verdrahteten Wert zu verwenden.

ref_clk_mode (nur mimxrt) wählt aus, ob der RMII-Referenztakt von der MAC (OUT) oder vom PHY (IN) erzeugt wird. Wird auf STM32-Boards ignoriert.

Methoden

active(is_active: bool | None = None) bool

Aktiviert oder deaktiviert die Ethernet-MAC.

Ohne Argument wird der aktuelle PHY-Verbindungsstatus als wahrheitswert-ähnliche Ganzzahl zurückgegeben – siehe status() für den vollständigen Satz codierter Werte.

active(True) startet die MAC und den PHY, leitet die Auto-Negotiation ein und bringt das lwIP-netif hoch. Das eigentliche Herstellen der Verbindung kann einen Moment dauern – pollen Sie isconnected(), falls Sie blockieren müssen, bis die Verbindung vollständig bereit ist. Alle anderen Methoden (ipconfig(), config(), …) erfordern, dass die Schnittstelle aktiv ist.

active(False) stoppt die MAC und baut das netif ab.

isconnected() bool

Gibt True zurück, wenn der PHY eine Verbindung ausgehandelt hat und die Schnittstelle sich im vollständig aktiven Zustand befindet (Verbindungsstatuswert 3).

status() int

Gibt den rohen PHY-Verbindungsstatus als Ganzzahl zurück:

  • 0 – Verbindung getrennt.

  • 1 – Verbindung hergestellt (nur PHY, IP-Stack noch nicht bereit).

  • 2 – im Übergang.

  • 3 – Verbindung hergestellt und der IP-Stack hat das Hochfahren der Schnittstelle abgeschlossen.

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

Liest oder setzt IPv4-Schnittstellenparameter als 4-Tupel von (ip, subnet, gateway, dns)-Strings im Dotted-Quad-Format.

Bemerkung

Bevorzugen Sie ipconfig() für neuen Code:

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

Liest oder setzt IPv4-/IPv6-Schnittstellenparameter. Verhält sich genauso wie AbstractNIC.ipconfig() – siehe diese Methode für die vollständige Liste der unterstützten Parameternamen (dhcp4, addr4, gw4, autoconf6, addr6, …).

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

Liest oder setzt Ethernet-spezifische Schnittstellenparameter.

Mit einem einzelnen positionalen String-Argument wird der Wert dieses Parameters zurückgegeben:

  • "mac" – die MAC-Adresse der Schnittstelle als 6-Byte-bytes-Objekt.

Mit Schlüsselwortargumenten werden ein oder mehrere Parameter gesetzt:

  • trace=<int> – aktiviert lwIP-Tracing. Bitfeld: 2 verfolgt TX, 4 verfolgt RX, 8 aktiviert vollständiges Tracing.

  • low_power=<bool> – aktiviert oder deaktiviert den IEEE-802.3az-Niedrigenergiemodus (Energy Efficient Ethernet) des PHY.

Konstanten

PHY_LAN8742: int

Microchip LAN8742A 10/100 Ethernet-PHY. Nur STM32-Port; Standard auf der OpenMV Cam N6 und dem Arduino Portenta H7.

PHY_LAN8720: int

Microchip LAN8720 10/100 Ethernet-PHY. Verfügbar auf STM32- und mimxrt-Ports.

PHY_DP83848: int

Texas Instruments DP83848 10/100 Ethernet-PHY. Verfügbar auf STM32- und mimxrt-Ports.

PHY_DP83825: int

Texas Instruments DP83825 10/100 Ethernet-PHY. Verfügbar auf STM32- und mimxrt-Ports.

PHY_KSZ8081: int

Microchip KSZ8081 10/100 Ethernet-PHY. Nur mimxrt-Port; Standard auf der OpenMV Cam RT1062.

PHY_DP83867: int

Texas Instruments DP83867 Gigabit-Ethernet-PHY. Nur mimxrt-Port.

PHY_RTL8211F: int

Realtek RTL8211F Gigabit-Ethernet-PHY. Nur mimxrt-Port.

IN: int

An ref_clk_mode zu übergeben, damit der RMII-Referenztakt vom PHY erzeugt wird. Nur mimxrt-Port.

OUT: int

An ref_clk_mode zu übergeben, damit der RMII-Referenztakt von der MAC erzeugt wird. Nur mimxrt-Port.