現在、SDK RTM3.0.0 の lwip_example プロジェクトを使用して ENET1 のネットワークインターフェイスの状態を検出していますが、初期化後、netif_is_link_up が 1 を返し続けます。
こんにちは、
そのため、自分で別のENET0モジュールを追加し、MDCピンとMDIOピンを設定してから、ENET_DRV_MDIORReadを使用してPHYレジスタの状態を取得する必要があります。
Thomas_Bao_0-1781510403854.png
Thomas_Bao_1-1781510426970.png
Thomas_Bao_2-1781510595373.png
他に設定が必要な箇所はありますか?
こんにちは、
netif_is_link_up() は、lwIP の NETIF_FLAG_LINK_UP フラグの状態のみを返します。SDKのlwip_exampleでは、このフラグはENET/netifの初期化中に設定できますが、初期化後に実際のPHYリンクの状態に応じて自動的に更新されるとは限りません。
したがって、netif_is_link_up() が常に 1 を返す場合、通常は、ENET1 の物理リンクが継続的にアクティブとして検出されているという意味ではなく、lwIP netif リンクフラグが設定されたままになっていることを意味します。
ENET1ポートの実際の状態を検出するには、MDIO/MIIを介してPHYリンクの状態を確認してください。通常は、PHYステータスレジスタを読み取ることで確認できます。例:
- PHY基本ステータスレジスタ、BMSR
リンクステータス部分を確認してください
次に、lwIPのnetif状態を手動で更新します。
if (phy_link_is_up)
ヤージュ
netif_set_link_up(&netif);
}
それ以外
ヤージュ
netif_set_link_down(&netif);
}
これは、PHYリンクの状態を定期的にポーリングするか、PHY割り込みピンが接続され設定されている場合はPHY割り込みハンドラ内で実行できます。
つまり、netif_is_link_up() はハードウェアリンクを直接検出する関数ではありません。これは現在のlwIP netifリンクフラグのみを報告するため、アプリケーション/ドライバは実際のPHYリンクの状態に基づいてこのフラグを更新する必要があります。
BR、ペトル
ご返信よろしくお願いします。
現在、私はMPC5748G-GW-RDBのENET1を使用しています。あなたのテスト方法に従ってみると、関数は成功し、データはすべてゼロでした。しかし、両者の関連性は既に確立されている。
PHYアドレスの設定ミスが原因でしょうか?回路図を見ると、dp83848のアドレスは1であることに気づきました。他に考えられる理由はありますか?
Thomas_Bao_0-1782110487981.png