RX71M TCP/IP M3S-T4-Tinyサンプルプログラムのlan_open()でエラー

お世話になっております。

RX71MとLAN8710をRMIIで配線した基板で、TCP/IP M3S-T4-Tinyサンプルプログラムを組み込んだところ、main() -> lan_open()でエラーが返ってきてしまい先に進めなくなってしまいました。

(phy_init関数内でタイムアウトエラーとなっているようでした)

他社製のTCP/IPプロトコルスタックのライブラリを使用したプログラムではRMIIでTCP/IP通信が行えていますので、ハードウェアは問題ないと考えています。

何が原因かわかりますでしょうか?

 

・サンプルプログラム入手先

https://www.renesas.com/jp/ja/software/D6000791.html

 

・開発環境

CPU:RX71M 176pin

統合開発環境:e2studio v6.3.0

コンパイラ:CC-RX v2.08.00

デバッガ:E1

 

・サンプルプログラム変更箇所

\rx71m_rsk\r_config\r_ether_rx_config.hのdefineを変更

#define ETHER_CFG_MODE_SEL 1

#define ETHER_CFG_USE_LINKSTA 0 
 
\rx71m_rsk\r_pincfg\r_pinset.cに以下を追加

/***********************************************************************************************************************
* Function Name: R_ETHER_PinSet_ETHERC0_RMII
* Description : This function initializes pins for r_ether_rx module
* Arguments : none
* Return Value : none
***********************************************************************************************************************/
void R_ETHER_PinSet_ETHERC0_RMII()
{
R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_MPC);

/* Set REF50CK0 pin */
MPC.P76PFS.BYTE = 0x12U;
PORT7.PMR.BIT.B6 = 1U;

/* Set RMII0_TXD_EN pin */
MPC.P80PFS.BYTE = 0x12U;
PORT8.PMR.BIT.B0 = 1U;

/* Set RMII0_TXD1 pin */
MPC.P82PFS.BYTE = 0x12U;
PORT8.PMR.BIT.B2 = 1U;

/* Set RMII0_TXD0 pin */
MPC.P81PFS.BYTE = 0x12U;
PORT8.PMR.BIT.B1 = 1U;

/* Set RMII0_RXD1 pin */
MPC.P74PFS.BYTE = 0x12U;
PORT7.PMR.BIT.B4 = 1U;

/* Set RMII0_RXD0 pin */
MPC.P75PFS.BYTE = 0x12U;
PORT7.PMR.BIT.B5 = 1U;

/* Set RMII0_RX_ER pin */
MPC.P77PFS.BYTE = 0x12U;
PORT7.PMR.BIT.B7 = 1U;

/* Set RMII0_CRS_DV pin */
MPC.P83PFS.BYTE = 0x12U;
PORT8.PMR.BIT.B3 = 1U;

/* Set ET0_MDC pin */
MPC.P72PFS.BYTE = 0x11U;
PORT7.PMR.BIT.B2 = 1U;

/* Set ET0_MDIO pin */
MPC.P71PFS.BYTE = 0x11U;
PORT7.PMR.BIT.B1 = 1U;

R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_MPC);
}

/***********************************************************************************************************************
* Function Name: R_ETHER_PinSet_ETHERC1_RMII
* Description : This function initializes pins for r_ether_rx module
* Arguments : none
* Return Value : none
***********************************************************************************************************************/
void R_ETHER_PinSet_ETHERC1_RMII()
{
R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_MPC);

/* Set REF50CK1 pin */
MPC.PG0PFS.BYTE = 0x15U;
PORTG.PMR.BIT.B0 = 1U;

/* Set RMII1_TXD_EN pin */
MPC.P60PFS.BYTE = 0x15U;
PORT6.PMR.BIT.B0 = 1U;

/* Set RMII1_TXD1 pin */
MPC.PG4PFS.BYTE = 0x15U;
PORTG.PMR.BIT.B4 = 1U;

/* Set RMII1_TXD0 pin */
MPC.PG3PFS.BYTE = 0x15U;
PORTG.PMR.BIT.B3 = 1U;

/* Set RMII1_RXD1 pin */
MPC.P95PFS.BYTE = 0x15U;
PORT9.PMR.BIT.B5 = 1U;

/* Set RMII1_RXD0 pin */
MPC.P94PFS.BYTE = 0x15U;
PORT9.PMR.BIT.B4 = 1U;

/* Set RMII1_RX_ER pin */
MPC.PG1PFS.BYTE = 0x15U;
PORTG.PMR.BIT.B1 = 1U;

/* Set RMII1_CRS_DV pin */
MPC.P92PFS.BYTE = 0x15U;
PORT9.PMR.BIT.B2 = 1U;

/* Set ET1_MDC pin */
MPC.P31PFS.BYTE = 0x14U;
PORT3.PMR.BIT.B1 = 1U;

/* Set ET1_MDIO pin */
MPC.P30PFS.BYTE = 0x14U;
PORT3.PMR.BIT.B0 = 1U;

R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_MPC);
}

Parents
  • みみみさん

    こんにちは、シェルティです。

    RXマイコンや関連ソフトを担当しております。
    本件ですが、PHYチップとの通信に用いるPHYアドレスの設定(RX71Mマイコン側ソフト)が怪しいです。

    セミナー資料を添付します。

    以下のURLからダウンロードしてください:
    <upload.hdedrive.com/.../SB1538049512-d48bd5d6-5c00-416b-8444-d5c03c924aac>
    ダウンロードパスワード: Dn/9JhmJ5XVP
    URLの有効期限: 2018年10月11日 午後8時59分

    page156にGR-SAKURAにおけるPHYアドレスの解説を書いてありますので参考にしてください。
    あと貼って頂いたMPCの設定も、実験に使っているボードの実際の配線と合致しないと
    PHYチップとの通信がうまくいかずlan_open()失敗します。

    逆にPHYアドレスの値とMPCの設定がただしければlan_open()を正常終了で抜けてきます。
    ここまでこればTCP/IP通信も動くと思います。動かなければまたご質問ください。

    以上です
  • シェルティさん

    こんにちは、みみみです。
    迅速なご回答ありがとうございました。いただいた情報をもとにPHYアドレスとMPCの設定を見直し、無事解決することができました。

    ダウンロードさせていただきました資料を読んでいて、page94に書かれているETHER_CFG_CH0_PHY_ACCESSの設定も変える必要があったことに気が付きました。結果としてはこちらの値を変えることでlan_open()が通るようになりました。

    有益な情報を提供していただき大変感謝いたします。ありがとうございました。
Reply
  • シェルティさん

    こんにちは、みみみです。
    迅速なご回答ありがとうございました。いただいた情報をもとにPHYアドレスとMPCの設定を見直し、無事解決することができました。

    ダウンロードさせていただきました資料を読んでいて、page94に書かれているETHER_CFG_CH0_PHY_ACCESSの設定も変える必要があったことに気が付きました。結果としてはこちらの値を変えることでlan_open()が通るようになりました。

    有益な情報を提供していただき大変感謝いたします。ありがとうございました。
Children
  • みみみさん

    シェルティですこんにちは。

    ETHER_CFG_CH0_PHY_ACCESSが原因でしたか。これも2ch使うときは見落としやすい設定値ですね。
    うまく動いてよかったです。また何か躓いたらお話聞かせてください。

    以上です