こんにちは。
HSBRX63NBを使用して、イーサネット通信がしたいのです。
こちらの方の質問(https://japan.renesasrulz.com/cafe_rene/f/forum5/3760/rx63n-ethernet )と似ている内容になってしまうのですが、
現在イーサネット通信のサンプルプロブログラム(https://github.com/renesas-rx/gr-sakura)のtcp_nonblocking_sampleをHEWにて実装しています。
サンプルの以下の部分を修正して実行したのですが、PCから「ping 192.168.1.3」をしても応答がありません。(PC-ハブ-ボードをイーサネットで接続)
プログラムは正常動作しているようには見えますが、pingの応答はありません。
EtherコントローラーのLEDはACTIVITYが点灯し、他のLEDは定期的にチカチカしています。ケーブルを外すとチカチカしなくなりますが、ACTIVITYは点灯したままです。
【修正】
・r_ether_rx_config_reference.h
ETHER_CFG_CH0_PHY_ADDRESS 0→31
ETHER_CFG_CH0_PHY_ACCESS 1→0
・r_bsp_config.h
BSP_CFG_MCU_PART_PACKAGE(0x5)→(0x3)// FB = 0x3 = LQFP / 144 / 0.50
BSP_CFG_MCU_PART_MEMORY_SIZE(0xB)→(0xE)// E = 0xE = 2MB / 128KB / 32KB
・config_tcpip.c
_t4_dhcp_enable = 1→0 // DHCPサーバは使用していないので
MY_IP_ADDR0 192,168,0,3→193,168,1,3 //ちなみにPCのIPアドレスは「192.168.1.1」に設定
・r_pinset.h
以下を追加
PORTC.PMR.BIT.B4 = 0; //汎用PORTC.PDR.BIT.B4 = 1; //出力使用PORTC.PODR.BIT.B4 = 1; // NRST信号をHigh(取扱説明書に「NRST信号をHighにした後、ご使用下さい」とあったので)
MPC.PA6PFS.BYTE = 0x11U; // EXPORT PORTA.PMR.BIT.B6 = 1U; MPC.PA7PFS.BYTE = 0x11U; // WOL PORTA.PMR.BIT.B7 = 1U;
似ている質問ではr_pinset.cを修正していましたので、ハードウェアマニュアルで確認しましたが、ここは合ってそうです。
また、ETHER_CFG_CH0_PHY_ADDRESSに関してもデータシート(LAN8700IC)を確認しました。
デフォルトで31らしいのですが、データシートを見る限り18かとも思ったので試してみましたが、動作に変わりはありませんでした。
何をしたら良いのかがわからず、悩んでいます。
何かお分かりになる方がいればご教授いただきたいです。
[追記]
・r_ether_rx_config.h の ETHER_CFG_USE_LINKSTA を1から0に修正
・r_pinset.c の MPC 設定を修正
・現状のイーサネット用LEDは「SPEED100」「LINK」「FDUPLEX」が点灯、「ACTIVITY」が消灯状態。ケーブルを外すと全て消灯する。
・ether_callback.c の callback_ether 関数が呼び出されない。
shinaさん
こんにちは、モッチーです。
何点に気になる箇所がありました。
r_ether_rx_config_reference.cは、r_ether_rx_config.hのことでしょうか?
その場合、ご使用されているボードでは、マイコンのET_LINKSTA端子がPHY-LSI(LAN8700IC)と接続されていますか?
接続されていない場合は、r_ether_rx_config.h内のETHER_CFG_USE_LINKSTAを'0'に設定しないと正常に動作しないと思います。
ETHER_CFG_USE_LINKSTAが'1'の場合は、ET_LINKSTA端子を使用してリンクステータスの変化を確認します。
ETHER_CFG_USE_LINKSTAが'0'の場合は、PHY-LSIのレジスタを読み出してリンクステータスの変化を確認します。
なので、マイコンのET_LINKSTA端子がPHY-LSIと接続されていない場合は、ETHER_CFG_USE_LINKSTAを'0'に設定して使用すべきだと思います。
あと、config_tcpip.cの_t4_channel_numは'1'の気がします。
また、NRST信号をHighにした後にウェイト処理は入れていますか?
動作は変化しませんでしたか…ちなみに、GitHubのソースコードのMPCの設定と、使用されているボードのMPCの設定は確認されましたか?
Ethernet用に使用されている端子が違う場合はサンプルコードが正常に動作しません。
以上よろしくお願いします。
モッチーさん。返信ありがとうございます。 r_pinset.cは合ってそうと書いておきながら、なんと間違っていました。お恥ずかしい。 MPCの設定をボードの端子に修正したところ、イーサネット用LEDの「SPEED100」「リンク」「FDUPLEX」が点灯し、「ACTIVITY」が消灯した状態になりました。
しかし、pingは返ってきません…
ちなみに、GitHubのソースコードのMPCの設定は
REF50CK0 RMII0_TXD_EN RMII0_TXD1 RMII0_TXD0 RMII0_RXD1 RMII0_RXD0 RMII0_RX_ER RMII0_CRS_DV ET0_MDC ET0_MDIO
この10個の設定を行っているのですが、ボードの取扱説明書のイーサネットコントローラー(36P)信号表にはREF50CKがなかったのでそれ以外を修正しました。
おそらく、信号表のピン番号69(P76)がREF50CK0として使用されていると思います。
ここのMPCの設定を変更してpingが返ってくるか確かめてもらえますか。
Shinaさん
むむ…そうでしたか…ちなみに、HEW上のデバッグコンソールには何か文字列が出力されていますか?
"ETHER_EV_LINK_ON"のような文字列が出力されていませんか?
以上よろしくお願いします
なるほど…では、r_t4_driver_rxのether_callback.c内のcallback_link_on関数にブレークポイントを貼って、プログラムを動かしてみてその関数でプログラムが止まるかどうか確認することってできますか?
Hosさん。返信ありがとうございます。 確認してみます。
確認してみましたが、プログラムの修正はほぼ同じことをしていると思われます。
こんにちは、モッチーです。連絡遅れてすみません。
確認ありがとうございます。callback_link_on関数で止まらないということは、正常にリンクアップしてないのでパケットを送れない状態ということですね。
PHYのアドレス設定やET0_MDC、ET0_MDIOの端子設定が正しいかを確認してみてください。
またボードの設定はよくわかっていないのですが、MDC、MDIOの信号がPHY-LSIに届いているのかが気になります…
あとは、シェルティさんがサンプルコードをアップロードしているので、それと比較しながら設定で違っている部分がないかを確認するのが良いかと