class LAN – een Ethernet-interface aansturen

De LAN-klasse stuurt de on-chip Ethernet-MAC van de MCU aan tegen een externe RMII-PHY. Het PHY-type, het MDIO-adres en de pinout zijn allemaal bordspecifiek; verstandige standaardwaarden zijn in elk OpenMV-bord ingebakken, zodat de constructor normaal gesproken geen argumenten nodig heeft.

Beschikbaar op:

  • OpenMV Cam N6 (STM32-port) – standaard-PHY PHY_LAN8742.

  • Arduino Portenta H7 (STM32-port) – standaard-PHY PHY_LAN8742.

  • OpenMV Cam RT1062 (mimxrt-port) – standaard-PHY PHY_KSZ8081.

Voorbeeldgebruik:

import network

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

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

Constructors

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

Construeert een LAN-interfaceobject. Alle argumenten na id zijn alleen-keyword.

id selecteert de Ethernet-poort op borden die er meer dan één blootstellen (mimxrt-port: 0 = ENET, 1 = ENET_1). Genegeerd op STM32-borden, die slechts één MAC hebben.

phy_type selecteert de PHY-driver (een van de PHY_*-constanten hieronder). Geef None door (de standaard) om de PHY te gebruiken die op het OpenMV-bord is bedraad.

phy_addr is het MDIO-adres van de PHY op de beheerbus. Geef None door (de standaard) om de bedrade waarde van het bord te gebruiken.

ref_clk_mode (alleen mimxrt) selecteert of de RMII-referentieklok wordt aangestuurd door de MAC (OUT) of door de PHY (IN). Genegeerd op STM32-borden.

Methoden

active(is_active: bool | None = None) bool

Brengt de Ethernet-MAC omhoog of omlaag.

Zonder argument geeft het de huidige PHY-linkstatus terug als een truthy/falsy geheel getal – zie status() voor de volledige set gecodeerde waarden.

active(True) start de MAC en PHY, start de auto-onderhandeling en brengt de lwIP-netif omhoog. Het linkomhoog komen zelf kan even duren – poll isconnected() als je wilt blokkeren totdat de link volledig gereed is. Alle andere methoden (ipconfig(), config(), …) vereisen dat de interface actief is.

active(False) stopt de MAC en breekt de netif af.

isconnected() bool

Geeft True terug wanneer de PHY link-omhoog heeft onderhandeld en de interface zich in de volledig-omhoog-toestand bevindt (linkstatuswaarde 3).

status() int

Geeft de ruwe PHY-linkstatus terug als een geheel getal:

  • 0 – link omlaag.

  • 1 – link omhoog (alleen PHY, IP-stack nog niet gereed).

  • 2 – in overgang.

  • 3 – link omhoog en de IP-stack heeft het omhoog brengen van de interface voltooid.

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

Haalt de IPv4-interfaceparameters op of stelt ze in als een 4-tuple van (ip, subnet, gateway, dns) dotted-quad-strings.

Notitie

Geef de voorkeur aan ipconfig() voor nieuwe 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

Haalt de IPv4-/IPv6-interfaceparameters op of stelt ze in. Gedraagt zich hetzelfde als AbstractNIC.ipconfig() – zie die methode voor de volledige lijst met ondersteunde parameternamen (dhcp4, addr4, gw4, autoconf6, addr6, …).

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

Haalt Ethernet-specifieke interfaceparameters op of stelt ze in.

Met een enkel positioneel string-argument geeft het de waarde van die parameter terug:

  • "mac" – het MAC-adres van de interface als een 6-byte bytes-object.

Met keyword-argumenten stelt het een of meer parameters in:

  • trace=<int> – schakelt lwIP-tracering in. Bit-veld: 2 traceert TX, 4 traceert RX, 8 schakelt volledige tracering in.

  • low_power=<bool> – schakelt de IEEE 802.3az (Energy Efficient Ethernet) energiebesparende modus van de PHY in of uit.

Constanten

PHY_LAN8742: int

Microchip LAN8742A 10/100 Ethernet-PHY. Alleen STM32-port; standaard op de OpenMV Cam N6 en Arduino Portenta H7.

PHY_LAN8720: int

Microchip LAN8720 10/100 Ethernet-PHY. Beschikbaar op zowel STM32- als mimxrt-ports.

PHY_DP83848: int

Texas Instruments DP83848 10/100 Ethernet-PHY. Beschikbaar op zowel STM32- als mimxrt-ports.

PHY_DP83825: int

Texas Instruments DP83825 10/100 Ethernet-PHY. Beschikbaar op zowel STM32- als mimxrt-ports.

PHY_KSZ8081: int

Microchip KSZ8081 10/100 Ethernet-PHY. Alleen mimxrt-port; standaard op de OpenMV Cam RT1062.

PHY_DP83867: int

Texas Instruments DP83867 gigabit Ethernet-PHY. Alleen mimxrt-port.

PHY_RTL8211F: int

Realtek RTL8211F gigabit Ethernet-PHY. Alleen mimxrt-port.

IN: int

Geef door aan ref_clk_mode zodat de RMII-referentieklok door de PHY wordt aangestuurd. Alleen mimxrt-port.

OUT: int

Geef door aan ref_clk_mode zodat de RMII-referentieklok door de MAC wordt aangestuurd. Alleen mimxrt-port.