RX63N イーサネット通信のサンプルプログラムでpingが返ってこない

こんにちは。

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 関数が呼び出されない。

Parents
  • 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にした後にウェイト処理は入れていますか?

Reply
  • 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にした後にウェイト処理は入れていますか?

Children
  • モッチーさん。ありがとうございます。

    r_ether_rx_config_reference.cはr_ether_rx_config_reference.hでした。
    そしてr_ether_rx_config.hもありました。r_ether_rx_config.hは何も修正していないので、こちらも修正したいと思います。

    >マイコンのET_LINKSTA端子がPHY-LSI(LAN8700IC)と接続されていますか?
    確認してみます。

    >あと、config_tcpip.cの_t4_channel_numは'1'の気がします。
    _t4_channel_numは触っていないので、1のままです。

    >また、NRST信号をHighにした後にウェイト処理は入れていますか?
    100usec入れいています。


    ご指摘いただいたものを確認修正して動作させてみます。
  • マイコンのET_LINKSTA端子がPHY-LSI(LAN8700IC)と接続されているかどうかですが、おそらく接続されていないので、
    ETHER_CFG_USE_LINKSTA を0に変更しました。

    しかし、動作は変わりませんでした。



    ちなみに r_ether_rx_config_reference.h と r_ether_rx_config.h は同じことが書かれていたのでr_ether_rx_config_reference.hを削除しました。
  • shinaさん

    こんにちは、モッチーです。

    動作は変化しませんでしたか…ちなみに、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がなかったのでそれ以外を修正しました。

  • shinaさん

    こんにちは、モッチーです。

    おそらく、信号表のピン番号69(P76)がREF50CK0として使用されていると思います。

    ここのMPCの設定を変更してpingが返ってくるか確かめてもらえますか。

    以上よろしくお願いします。

  • モッチーさん。
    返信ありがとうございます。

    REF50CK0 の設定を P76 に変更しましたが、ping は返ってきませんでした。
  • Shinaさん

    こんにちは、モッチーです。

    むむ…そうでしたか…ちなみに、HEW上のデバッグコンソールには何か文字列が出力されていますか?

    "ETHER_EV_LINK_ON"のような文字列が出力されていませんか?

    以上よろしくお願いします

  • モッチーさん。
    返信ありがとうございます。

    HEW上のデバッグコンソールには
    Reset CPU
    Flash memory writing ...
    Flash memory writing ... OK
    と、あるだけですね・・・
  • Shinaさん

    こんにちは、モッチーです。

    なるほど…では、r_t4_driver_rxのether_callback.c内のcallback_link_on関数にブレークポイントを貼って、プログラムを動かしてみてその関数でプログラムが止まるかどうか確認することってできますか?

    以上よろしくお願いします

  • おはようございます。モッチーさん。
    返信ありがとうございます。返信が遅くなりました。

    callback_link_on関数にブレークポイントをはって、動かしてみましたが、この関数でプログラムは止まりませんでした・・・