class LAN -- イーサネットインターフェースの制御

LAN クラスは、外部の RMII PHY に対して MCU のオンチップイーサネット MAC を駆動します。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 は、複数のイーサネットポートを公開するボードでポートを選択します(mimxrt ポート: 0 = ENET、1 = ENET_1)。単一の MAC しか持たない STM32 ボードでは無視されます。

phy_type は PHY ドライバ(以下の PHY_* 定数のいずれか)を選択します。None(デフォルト)を渡すと、OpenMV ボードに配線された PHY を使用します。

phy_addr は管理バス上の PHY の MDIO アドレスです。None(デフォルト)を渡すと、ボードに配線された値を使用します。

ref_clk_mode(mimxrt のみ)は、RMII 基準クロックを MAC が駆動するか(OUT)、PHY が駆動するか(IN)を選択します。STM32 ボードでは無視されます。

メソッド

active(is_active: bool | None = None) bool

イーサネット MAC を起動または停止します。

引数なしの場合、現在の PHY リンクステータスを真偽値として扱える整数で返します。エンコードされた値の全セットについては status() を参照してください。

active(True) は MAC と PHY を起動し、オートネゴシエーションを開始し、lwIP netif を立ち上げます。リンクアップ自体の完了には少し時間がかかる場合があります。リンクが完全に準備できるまでブロックする必要がある場合は isconnected() をポーリングしてください。他のすべてのメソッド(ipconfig()config() など)は、インターフェースがアクティブであることを要求します。

active(False) は MAC を停止し、netif を解体します。

isconnected() bool

PHY がリンクアップをネゴシエートし、かつインターフェースが完全に起動した状態(リンクステータス値 3)にあるとき True を返します。

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) というドット区切り 4 つ組の文字列からなる 4 要素タプルとして取得または設定します。

注釈

新しいコードでは 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() と同じ動作です。サポートされるパラメータ名(dhcp4addr4gw4autoconf6addr6 など)の完全な一覧については、そのメソッドを参照してください。

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

イーサネット固有のインターフェースパラメータを取得または設定します。

単一の位置文字列引数を指定すると、そのパラメータの値を返します:

  • "mac" -- インターフェースの MAC アドレスを 6 バイトの bytes オブジェクトとして。

キーワード引数を指定すると、1 つ以上のパラメータを設定します:

  • trace=<int> -- lwIP トレースを有効にします。ビットフィールド: 2 は TX をトレース、4 は RX をトレース、8 は完全なトレースを有効にします。

  • low_power=<bool> -- PHY の IEEE 802.3az(Energy Efficient Ethernet)低電力モードを有効または無効にします。

定数

PHY_LAN8742: int

Microchip LAN8742A 10/100 イーサネット PHY。STM32 ポートのみ。OpenMV Cam N6 と Arduino Portenta H7 のデフォルト。

PHY_LAN8720: int

Microchip LAN8720 10/100 イーサネット PHY。STM32 ポートと mimxrt ポートの両方で利用可能。

PHY_DP83848: int

Texas Instruments DP83848 10/100 イーサネット PHY。STM32 ポートと mimxrt ポートの両方で利用可能。

PHY_DP83825: int

Texas Instruments DP83825 10/100 イーサネット PHY。STM32 ポートと mimxrt ポートの両方で利用可能。

PHY_KSZ8081: int

Microchip KSZ8081 10/100 イーサネット PHY。mimxrt ポートのみ。OpenMV Cam RT1062 のデフォルト。

PHY_DP83867: int

Texas Instruments DP83867 ギガビットイーサネット PHY。mimxrt ポートのみ。

PHY_RTL8211F: int

Realtek RTL8211F ギガビットイーサネット PHY。mimxrt ポートのみ。

IN: int

RMII 基準クロックを PHY が駆動するように ref_clk_mode に渡します。mimxrt ポートのみ。

OUT: int

RMII 基準クロックを MAC が駆動するように ref_clk_mode に渡します。mimxrt ポートのみ。