class LAN -- ควบคุมอินเทอร์เฟซ Ethernet

คลาส LAN ขับเคลื่อน Ethernet MAC บนชิป MCU ให้ทำงานร่วมกับ PHY แบบ RMII ภายนอก ประเภท PHY ที่อยู่ MDIO และการเชื่อมต่อพินล้วนขึ้นอยู่กับบอร์ด โดยค่าเริ่มต้นที่เหมาะสมถูกฝังไว้ในบอร์ด OpenMV แต่ละรุ่น ดังนั้นคอนสตรัคเตอร์จึงมักไม่ต้องรับอาร์กิวเมนต์ใด

รองรับบน:

  • OpenMV Cam N6 (STM32 port) -- PHY เริ่มต้น PHY_LAN8742

  • Arduino Portenta H7 (STM32 port) -- PHY เริ่มต้น PHY_LAN8742

  • OpenMV Cam RT1062 (mimxrt port) -- 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 เป็นแบบ keyword-only

id เลือกพอร์ต Ethernet บนบอร์ดที่มีมากกว่าหนึ่งพอร์ต (mimxrt port: 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 ปัจจุบันเป็นจำนวนเต็มแบบ truthy/falsy -- ดู status() สำหรับชุดค่าที่เข้ารหัสทั้งหมด

active(True) เริ่มต้น MAC และ PHY กระตุ้นการเจรจาอัตโนมัติ และเปิดใช้งาน lwIP netif การเชื่อมต่ออาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ -- โพล isconnected() หากต้องการบล็อกจนกว่าลิงก์จะพร้อมสมบูรณ์ เมธอดอื่นทั้งหมด (ipconfig(), config(), ...) ต้องการให้อินเทอร์เฟซทำงานอยู่ก่อน

active(False) หยุด MAC และยุติ netif

isconnected() bool

คืนค่า True เมื่อ PHY เจรจาการเชื่อมต่อแล้ว และ อินเทอร์เฟซอยู่ในสถานะ fully-up (ค่าสถานะลิงก์ 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-tuple ของสตริง dotted-quad (ip, subnet, gateway, dns)

Note

แนะนำให้ใช้ 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 address ของอินเทอร์เฟซเป็นออบเจ็กต์ bytes ขนาด 6 ไบต์

เมื่อส่ง keyword arguments ตั้งค่าพารามิเตอร์หนึ่งรายการหรือมากกว่า:

  • trace=<int> -- เปิดใช้งานการติดตาม lwIP ฟิลด์บิต: 2 ติดตาม TX, 4 ติดตาม RX, 8 เปิดการติดตามแบบสมบูรณ์

  • low_power=<bool> -- เปิดหรือปิดโหมดประหยัดพลังงาน IEEE 802.3az (Energy Efficient Ethernet) ของ PHY

ค่าคงที่

PHY_LAN8742: int

Microchip LAN8742A Ethernet PHY ความเร็ว 10/100 เฉพาะ STM32 port เท่านั้น ค่าเริ่มต้นบน OpenMV Cam N6 และ Arduino Portenta H7

PHY_LAN8720: int

Microchip LAN8720 Ethernet PHY ความเร็ว 10/100 ใช้ได้ทั้ง STM32 และ mimxrt port

PHY_DP83848: int

Texas Instruments DP83848 Ethernet PHY ความเร็ว 10/100 ใช้ได้ทั้ง STM32 และ mimxrt port

PHY_DP83825: int

Texas Instruments DP83825 Ethernet PHY ความเร็ว 10/100 ใช้ได้ทั้ง STM32 และ mimxrt port

PHY_KSZ8081: int

Microchip KSZ8081 Ethernet PHY ความเร็ว 10/100 เฉพาะ mimxrt port เท่านั้น ค่าเริ่มต้นบน OpenMV Cam RT1062

PHY_DP83867: int

Texas Instruments DP83867 Ethernet PHY ความเร็ว Gigabit เฉพาะ mimxrt port เท่านั้น

PHY_RTL8211F: int

Realtek RTL8211F Ethernet PHY ความเร็ว Gigabit เฉพาะ mimxrt port เท่านั้น

IN: int

ส่งให้ ref_clk_mode เพื่อให้นาฬิกาอ้างอิง RMII ถูกขับเคลื่อนโดย PHY เฉพาะ mimxrt port เท่านั้น

OUT: int

ส่งให้ ref_clk_mode เพื่อให้นาฬิกาอ้างอิง RMII ถูกขับเคลื่อนโดย MAC เฉพาะ mimxrt port เท่านั้น