環境背景:
1. S32K314チップを使用した評価ボード
2. MCAL パッケージ「SW32K3_S32M27x_RTD_R21-11_6.0.0」の Ethernet ルーチンを使用し、K344 ルーチンを K314 に変更します。
3. S32DS 統合コードは、MCAL パッケージのメイン関数内のルーチン コードも使用します。
質問:
サンプル コードに基づいてイーサネット データ ループバック機能を実装できないのはなぜですか?
Ethernet MCALの設定を確認したところ、デフォルト設定はループバックモードになっていることがわかりました。私の理解では、CANのように、1フレームのデータを送信すると次のフレームを受信できるようになっているはずです。
その後、デバッグのためにコードを統合してコンパイルしました。whileループの前にイーサネットデータが送信されていました。ループが戻る際にデータが受信され、whileループが終了するはずでした。しかし、現状ではwhile (RxStatus.RxStatsPkts < 1U)という条件が常に満たされており、ループバックデータが受信されていません。
その他の説明:
1. 回路図に従って MCAL サンプル プログラム内のポートが対応するように変更しました。
2. TJA1101 からの車載イーサネット ツイストペア ケーブルに他のデバイスを接続していないため、外部と通信できません。
こんにちは@wei_zhoucq 、
クリスマス休暇のため返信が遅れたことをお詫び申し上げます。
私の意見では、問題は時計にあります。ループバック テストの場合でも、S32K3 の EMAC 用の適切なクロックが必要です。
1.RMII を使用する場合は、TJA1101B データシートの図 5. a. に示すように、S32K3 の TX_CLK (入力) にコネクテッドされた TJA1101 の REF_CLK (出力) を使用する必要があります。
2. Eth_43_GMAC_Init() を呼び出す前に外部クロックが存在している必要があります。
3. TJA1101B の正しいピンストラップが使用されていることを確認します (TJA1101B データシートの 第 6.10 章「ハードウェア構成」)。MII_MODE は「RMII モード (REF_CLK で 50 MHz 出力)」に設定すると思います。
4. また、S32K3 のその他のクロック設定が、S32K3 リファレンス マニュアル、Rev. 11 の「24.7.2 システム クロック構成」の章に記載されているクロック構成のいずれかと一致していることも確認します。
よろしくお願いいたします。
パベル