class LAN – управление интерфейсом Ethernet

Класс LAN управляет встроенным в микроконтроллер Ethernet MAC, работая с внешним RMII PHY. Тип PHY, адрес MDIO и распиновка зависят от платы; в каждую плату OpenMV заложены разумные значения по умолчанию, поэтому конструктор обычно не принимает аргументов.

Доступно на:

  • OpenMV Cam N6 (порт STM32) – PHY по умолчанию PHY_LAN8742.

  • Arduino Portenta H7 (порт STM32) – PHY по умолчанию PHY_LAN8742.

  • OpenMV Cam RT1062 (порт mimxrt) – PHY по умолчанию PHY_KSZ8081.

Пример использования:

import network

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

while not nic.isconnected():
    pass

print(nic.ipconfig("addr4"))

Конструкторы

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

Создаёт объект интерфейса LAN. Все аргументы после id являются только именованными.

id выбирает порт Ethernet на платах, которые предоставляют более одного (порт mimxrt: 0 = ENET, 1 = ENET_1). Игнорируется на платах STM32, у которых только один MAC.

phy_type выбирает драйвер PHY (одна из констант PHY_* ниже). Передайте None (значение по умолчанию), чтобы использовать PHY, разведённый на плате OpenMV.

phy_addr — это адрес MDIO для PHY на шине управления. Передайте None (значение по умолчанию), чтобы использовать значение, разведённое на плате.

ref_clk_mode (только mimxrt) выбирает, формируется ли опорный тактовый сигнал RMII со стороны MAC (OUT) или со стороны PHY (IN). Игнорируется на платах STM32.

Методы

active(is_active: bool | None = None) bool

Поднимает или опускает Ethernet MAC.

Без аргумента возвращает текущее состояние линии PHY в виде истинного/ложного целого числа – полный набор закодированных значений см. в status().

active(True) запускает MAC и PHY, начинает автосогласование и поднимает сетевой интерфейс lwIP. Само установление связи может занять некоторое время – опрашивайте isconnected(), если нужно заблокироваться до полной готовности линии. Все остальные методы (ipconfig(), config(), …) требуют, чтобы интерфейс был активен.

active(False) останавливает MAC и разрушает сетевой интерфейс.

isconnected() bool

Возвращает True, когда PHY согласовал установление связи и интерфейс находится в полностью поднятом состоянии (значение состояния линии 3).

status() int

Возвращает необработанное состояние линии PHY в виде целого числа:

  • 0 – линия не активна.

  • 1 – линия активна (только PHY, IP-стек ещё не готов).

  • 2 – переходное состояние.

  • 3 – линия активна, и IP-стек завершил поднятие интерфейса.

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

Получает или устанавливает параметры интерфейса IPv4 в виде кортежа из 4 элементов (ip, subnet, gateway, dns) со строками в формате с точками.

Примечание

В новом коде предпочтительнее использовать 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

Получает или устанавливает параметры интерфейса IPv4 / IPv6. Ведёт себя так же, как AbstractNIC.ipconfig() – полный список поддерживаемых имён параметров (dhcp4, addr4, gw4, autoconf6, addr6, …) см. в этом методе.

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

Получает или устанавливает специфичные для Ethernet параметры интерфейса.

С одним позиционным строковым аргументом возвращает значение этого параметра:

  • "mac" – MAC-адрес интерфейса в виде 6-байтового объекта bytes.

С именованными аргументами устанавливает один или несколько параметров:

  • trace=<int> – включает трассировку lwIP. Битовое поле: 2 трассирует TX, 4 трассирует RX, 8 включает полную трассировку.

  • low_power=<bool> – включает или отключает энергосберегающий режим PHY по стандарту IEEE 802.3az (Energy Efficient Ethernet).

Константы

PHY_LAN8742: int

Ethernet PHY Microchip LAN8742A 10/100. Только порт STM32; по умолчанию на OpenMV Cam N6 и Arduino Portenta H7.

PHY_LAN8720: int

Ethernet PHY Microchip LAN8720 10/100. Доступно на портах STM32 и mimxrt.

PHY_DP83848: int

Ethernet PHY Texas Instruments DP83848 10/100. Доступно на портах STM32 и mimxrt.

PHY_DP83825: int

Ethernet PHY Texas Instruments DP83825 10/100. Доступно на портах STM32 и mimxrt.

PHY_KSZ8081: int

Ethernet PHY Microchip KSZ8081 10/100. Только порт mimxrt; по умолчанию на OpenMV Cam RT1062.

PHY_DP83867: int

Гигабитный Ethernet PHY Texas Instruments DP83867. Только порт mimxrt.

PHY_RTL8211F: int

Гигабитный Ethernet PHY Realtek RTL8211F. Только порт mimxrt.

IN: int

Передайте в ref_clk_mode, чтобы опорный тактовый сигнал RMII формировался со стороны PHY. Только порт mimxrt.

OUT: int

Передайте в ref_clk_mode, чтобы опорный тактовый сигнал RMII формировался со стороны MAC. Только порт mimxrt.