class LAN -- التحكم في واجهة Ethernet

يشغّل الصنف LAN وحدة MAC الخاصة بـ Ethernet المدمجة في المتحكم مقابل طرف PHY خارجي من نوع RMII. ونوع 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

تشغيل وحدة MAC الخاصة بـ Ethernet أو إيقافها.

بدون وسيطة، تُرجِع حالة ارتباط PHY الحالية كعدد صحيح صحّي/زائف -- راجع status() للحصول على المجموعة الكاملة من القيم المُرمّزة.

تبدأ active(True) تشغيل وحدة MAC وطرف PHY، وتطلق التفاوض التلقائي، وترفع واجهة lwIP netif. وقد يستغرق ارتفاع الارتباط نفسه لحظة لإتمامه -- استطلِع isconnected() إذا احتجت إلى الحجب حتى يكون الارتباط جاهزاً تماماً. وتتطلب جميع الطرق الأخرى (ipconfig()، config()، ...) أن تكون الواجهة نشطة.

توقف active(False) وحدة MAC وتفكك netif.

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 كصف رباعي من السلاسل النصية رباعية النقاط (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 للواجهة ككائن bytes من 6 بايتات.

مع الوسائط المفتاحية، اضبط معاملاً أو أكثر:

  • trace=<int> -- تفعيل تتبّع lwIP. حقل بتات: 2 يتتبّع TX، و 4 يتتبّع RX، و 8 يفعّل التتبّع الكامل.

  • low_power=<bool> -- تفعيل أو تعطيل وضع الطاقة المنخفضة IEEE 802.3az (Energy Efficient Ethernet) الخاص بطرف PHY.

الثوابت

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 فقط.