class LAN – control de una interfaz Ethernet

La clase LAN controla el MAC Ethernet integrado del MCU contra un PHY RMII externo. El tipo de PHY, la dirección MDIO y el pinout dependen de la placa; cada placa OpenMV incorpora valores predeterminados razonables, por lo que el constructor normalmente no necesita argumentos.

Disponible en:

  • OpenMV Cam N6 (puerto STM32) – PHY predeterminado PHY_LAN8742.

  • Arduino Portenta H7 (puerto STM32) – PHY predeterminado PHY_LAN8742.

  • OpenMV Cam RT1062 (puerto mimxrt) – PHY predeterminado PHY_KSZ8081.

Ejemplo de uso:

import network

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

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

Constructores

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

Construye un objeto de interfaz LAN. Todos los argumentos posteriores a id son de palabra clave únicamente.

id selecciona el puerto Ethernet en placas que exponen más de uno (puerto mimxrt: 0 = ENET, 1 = ENET_1). Se ignora en placas STM32, que solo tienen un único MAC.

phy_type selecciona el controlador del PHY (una de las constantes PHY_* que figuran a continuación). Pasa None (el valor predeterminado) para usar el PHY cableado en la placa OpenMV.

phy_addr es la dirección MDIO del PHY en el bus de gestión. Pasa None (el valor predeterminado) para usar el valor cableado de la placa.

ref_clk_mode (solo mimxrt) selecciona si el reloj de referencia RMII lo genera el MAC (OUT) o el PHY (IN). Se ignora en placas STM32.

Métodos

active(is_active: bool | None = None) bool

Activa o desactiva el MAC Ethernet.

Sin argumentos, devuelve el estado actual del enlace del PHY como un entero verdadero/falso – consulta status() para ver el conjunto completo de valores codificados.

active(True) inicia el MAC y el PHY, arranca la autonegociación y activa la netif de lwIP. La activación del enlace en sí puede tardar un momento en completarse – sondea isconnected() si necesitas bloquear hasta que el enlace esté totalmente listo. Todos los demás métodos (ipconfig(), config(), …) requieren que la interfaz esté activa.

active(False) detiene el MAC y desmonta la netif.

isconnected() bool

Devuelve True cuando el PHY ha negociado la activación del enlace y la interfaz está en el estado totalmente activo (valor de estado del enlace 3).

status() int

Devuelve el estado bruto del enlace del PHY como un entero:

  • 0 – enlace caído.

  • 1 – enlace activo (solo PHY, la pila IP aún no está lista).

  • 2 – en transición.

  • 3 – enlace activo y la pila IP ha terminado de activar la interfaz.

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

Obtiene o establece los parámetros de la interfaz IPv4 como una tupla de 4 elementos (ip, subnet, gateway, dns) de cadenas en notación decimal con puntos.

Nota

Para código nuevo, es preferible 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

Obtiene o establece los parámetros de interfaz IPv4 / IPv6. Se comporta igual que AbstractNIC.ipconfig() – consulta ese método para ver la lista completa de nombres de parámetros admitidos (dhcp4, addr4, gw4, autoconf6, addr6, …).

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

Obtiene o establece parámetros de interfaz específicos de Ethernet.

Con un único argumento posicional de tipo cadena, devuelve el valor de ese parámetro:

  • "mac" – la dirección MAC de la interfaz como un objeto bytes de 6 bytes.

Con argumentos de palabra clave, establece uno o más parámetros:

  • trace=<int> – habilita el rastreo de lwIP. Campo de bits: 2 rastrea TX, 4 rastrea RX, 8 habilita el rastreo completo.

  • low_power=<bool> – habilita o deshabilita el modo de bajo consumo IEEE 802.3az (Energy Efficient Ethernet) del PHY.

Constantes

PHY_LAN8742: int

PHY Ethernet Microchip LAN8742A 10/100. Solo puerto STM32; predeterminado en la OpenMV Cam N6 y la Arduino Portenta H7.

PHY_LAN8720: int

PHY Ethernet Microchip LAN8720 10/100. Disponible tanto en los puertos STM32 como mimxrt.

PHY_DP83848: int

PHY Ethernet Texas Instruments DP83848 10/100. Disponible tanto en los puertos STM32 como mimxrt.

PHY_DP83825: int

PHY Ethernet Texas Instruments DP83825 10/100. Disponible tanto en los puertos STM32 como mimxrt.

PHY_KSZ8081: int

PHY Ethernet Microchip KSZ8081 10/100. Solo puerto mimxrt; predeterminado en la OpenMV Cam RT1062.

PHY_DP83867: int

PHY Ethernet gigabit Texas Instruments DP83867. Solo puerto mimxrt.

PHY_RTL8211F: int

PHY Ethernet gigabit Realtek RTL8211F. Solo puerto mimxrt.

IN: int

Pasa a ref_clk_mode para que el reloj de referencia RMII lo genere el PHY. Solo puerto mimxrt.

OUT: int

Pasa a ref_clk_mode para que el reloj de referencia RMII lo genere el MAC. Solo puerto mimxrt.