class LAN – controllo di un’interfaccia Ethernet

La classe LAN pilota il MAC Ethernet integrato nel MCU contro un PHY RMII esterno. Il tipo di PHY, l’indirizzo MDIO e la piedinatura sono tutti specifici della scheda; valori predefiniti sensati sono incorporati in ogni scheda OpenMV, quindi il costruttore normalmente non richiede argomenti.

Disponibile su:

  • OpenMV Cam N6 (porta STM32) – PHY predefinito PHY_LAN8742.

  • Arduino Portenta H7 (porta STM32) – PHY predefinito PHY_LAN8742.

  • OpenMV Cam RT1062 (porta mimxrt) – PHY predefinito PHY_KSZ8081.

Esempio di utilizzo:

import network

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

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

Costruttori

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

Costruisce un oggetto interfaccia LAN. Tutti gli argomenti dopo id sono solo keyword.

id seleziona la porta Ethernet sulle schede che ne espongono più di una (porta mimxrt: 0 = ENET, 1 = ENET_1). Ignorato sulle schede STM32, che hanno un solo MAC.

phy_type seleziona il driver PHY (una delle costanti PHY_* qui sotto). Passa None (il valore predefinito) per usare il PHY cablato sulla scheda OpenMV.

phy_addr è l’indirizzo MDIO del PHY sul bus di gestione. Passa None (il valore predefinito) per usare il valore cablato della scheda.

ref_clk_mode (solo mimxrt) seleziona se il clock di riferimento RMII è pilotato dal MAC (OUT) o dal PHY (IN). Ignorato sulle schede STM32.

Metodi

active(is_active: bool | None = None) bool

Attiva o disattiva il MAC Ethernet.

Senza argomenti, restituisce lo stato attuale del collegamento PHY come intero truthy/falsy – vedi status() per l’insieme completo dei valori codificati.

active(True) avvia il MAC e il PHY, dà il via all’auto-negoziazione e attiva il netif lwIP. Il collegamento vero e proprio può impiegare un istante a completarsi – esegui il polling di isconnected() se devi bloccarti finché il collegamento non è completamente pronto. Tutti gli altri metodi (ipconfig(), config(), …) richiedono che l’interfaccia sia attiva.

active(False) arresta il MAC e smonta il netif.

isconnected() bool

Restituisce True quando il PHY ha negoziato il collegamento e l’interfaccia è nello stato completamente attivo (valore di stato del collegamento 3).

status() int

Restituisce lo stato grezzo del collegamento PHY come intero:

  • 0 – collegamento inattivo.

  • 1 – collegamento attivo (solo PHY, stack IP non ancora pronto).

  • 2 – in transizione.

  • 3 – collegamento attivo e lo stack IP ha terminato di attivare l’interfaccia.

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

Ottiene o imposta i parametri IPv4 dell’interfaccia come una tupla di 4 elementi di stringhe in notazione puntata (ip, subnet, gateway, dns).

Nota

Per il nuovo codice è preferibile 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

Ottiene o imposta i parametri IPv4 / IPv6 dell’interfaccia. Si comporta come AbstractNIC.ipconfig() – vedi quel metodo per l’elenco completo dei nomi di parametro supportati (dhcp4, addr4, gw4, autoconf6, addr6, …).

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

Ottiene o imposta i parametri dell’interfaccia specifici di Ethernet.

Con un singolo argomento posizionale di tipo stringa, restituisce il valore di quel parametro:

  • "mac" – l’indirizzo MAC dell’interfaccia come oggetto bytes di 6 byte.

Con argomenti keyword, imposta uno o più parametri:

  • trace=<int> – abilita il tracciamento lwIP. Campo di bit: 2 traccia la TX, 4 traccia la RX, 8 abilita il tracciamento completo.

  • low_power=<bool> – abilita o disabilita la modalità a basso consumo IEEE 802.3az (Energy Efficient Ethernet) del PHY.

Costanti

PHY_LAN8742: int

PHY Ethernet 10/100 Microchip LAN8742A. Solo porta STM32; predefinito su OpenMV Cam N6 e Arduino Portenta H7.

PHY_LAN8720: int

PHY Ethernet 10/100 Microchip LAN8720. Disponibile sia sulla porta STM32 che mimxrt.

PHY_DP83848: int

PHY Ethernet 10/100 Texas Instruments DP83848. Disponibile sia sulla porta STM32 che mimxrt.

PHY_DP83825: int

PHY Ethernet 10/100 Texas Instruments DP83825. Disponibile sia sulla porta STM32 che mimxrt.

PHY_KSZ8081: int

PHY Ethernet 10/100 Microchip KSZ8081. Solo porta mimxrt; predefinito su OpenMV Cam RT1062.

PHY_DP83867: int

PHY Ethernet gigabit Texas Instruments DP83867. Solo porta mimxrt.

PHY_RTL8211F: int

PHY Ethernet gigabit Realtek RTL8211F. Solo porta mimxrt.

IN: int

Passa a ref_clk_mode affinché il clock di riferimento RMII sia pilotato dal PHY. Solo porta mimxrt.

OUT: int

Passa a ref_clk_mode affinché il clock di riferimento RMII sia pilotato dal MAC. Solo porta mimxrt.