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_KSZ8081: int¶
Ethernet PHY Microchip KSZ8081 10/100. Только порт mimxrt; по умолчанию на OpenMV Cam RT1062.