RX63Nでのイーサネット通信について(HEW)

こんにちは。初心者です。

 

RX63NをHEW2で動かしています。

イーサネット通信がしたいのですが、イーサネット用LEDが「ACTIVITY」のものだけしか光らず、

他のイーサネット用LED(SPEED100, LINK, FDUPLEX)が定期的に点滅します。

もちろんpingは返ってきません。

ポート設定やレジスタの設定の段階だと思うのですが、どうすればよいでしょうか。

基本的なところからご教授いただけるとありがたいです。

 

以下、設定です。

_____________________________________________

PORTC.PMR.BIT.B4 = 0; //汎用
PORTC.PDR.BIT.B4 = 1; //出力使用
PORTC.PODR.BIT.B4 = 1; //NRST信号をHigh

dly_tsk(0.000001/MSEC); //== 100ナノsec

SYSTEM.PRCR.WORD = 0xA503; //PRCR書き換え許可&プロテクト解除
SYSTEM.SCKCR.BIT.PCKA = 0001; //ETHERC,EDMACモジュール用動作クロック
SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; //モジュールストップ状態の解除

 


//PFS書き込み許可
MPC.PWPR.BIT.B0WI = 0;
MPC.PWPR.BIT.PFSWE = 1;
//端子機能制御レジスタ
MPC.P54PFS.BIT.PSEL = 10001; //ET_LINKSTA
MPC.P55PFS.BIT.PSEL = 10001; //ET_EXOUT

MPC.P71PFS.BIT.PSEL = 10001; //ET_MDIO
MPC.P72PFS.BIT.PSEL = 10001; //ET_MDC
MPC.P73PFS.BIT.PSEL = 10001; //ET_WOL
MPC.P74PFS.BIT.PSEL = 10010; //RMII_RXD0
MPC.P75PFS.BIT.PSEL = 10010; //RMII_RXD1
MPC.P76PFS.BIT.PSEL = 10010; //REF50CK
MPC.P77PFS.BIT.PSEL = 10010; //RMII_RX_ER

MPC.P80PFS.BIT.PSEL = 10010; //RMII_TXD_EN
MPC.P81PFS.BIT.PSEL = 10010; //RMII_TXD0
MPC.P82PFS.BIT.PSEL = 10010; //RMII_TXD1
MPC.P83PFS.BIT.PSEL = 10010; //RMII_CRS_DV

//PFS書き込み禁止
MPC.PWPR.BIT.PFSWE = 0;
MPC.PWPR.BIT.B0WI = 1;

//イーサネット制御レジスタ
MPC.PFENET.BIT.PHYMODE = 0; //RMII_mode

//プルアップ(出力として使用している場合は無効になる)
PORT5.PCR.BIT.B4 = 1; //ET_LINKSTA (in)
PORT5.PCR.BIT.B5 = 1; //ET_EXOUT (out)

PORT7.PCR.BIT.B7 = 1; //RMII_RXD_ER (in)
PORT7.PCR.BIT.B6 = 1; //REF50CK (in)
PORT7.PCR.BIT.B5 = 1; //RMII_RXD0 (in)
PORT7.PCR.BIT.B4 = 1; //RMII_RXD1 (in)
PORT7.PCR.BIT.B3 = 1; //ET_WOL (out)
PORT7.PCR.BIT.B2 = 1; //ET_MDC (out)
PORT7.PCR.BIT.B1 = 1; //ET_MDIO (in/out)

PORT8.PCR.BIT.B0 = 1; //RMII_TXD_EN (out)
PORT8.PCR.BIT.B1 = 1; //RMII_TXD0 (out)
PORT8.PCR.BIT.B2 = 1; //RMII_TXD1 (out)
PORT8.PCR.BIT.B3 = 1; //RMII_CRS_DV (out)

//端子機能設定(PFS設定後に行う)
PORT5.PMR.BIT.B4 = 1;
PORT5.PMR.BIT.B5 = 1;

PORT7.PMR.BIT.B7 = 1;
PORT7.PMR.BIT.B6 = 1;
PORT7.PMR.BIT.B5 = 1;
PORT7.PMR.BIT.B4 = 1;
PORT7.PMR.BIT.B3 = 1;
PORT7.PMR.BIT.B2 = 1;
PORT7.PMR.BIT.B1 = 1;

PORT8.PMR.BIT.B3 = 1;
PORT8.PMR.BIT.B2 = 1;
PORT8.PMR.BIT.B1 = 1;
PORT8.PMR.BIT.B0 = 1;


EDMAC.EDMR.BIT.SWR = 1; //ETHERC,EDMACのリセット
dly_tsk(64*4);
ETHERC.ECMR.BIT.RTM = 1; //100Mps
ETHERC.RFLR.BIT.RFL = 0x618; //1560byte_受信(最大フレーム長)
ETHERC.MAHR = 0x74905000; //MAC_address_上32
ETHERC.MALR.BIT.MA = 0x7901; //MAC_address_下16
ETHERC.ECMR.BIT.TE = 1; //送信機能有効
ETHERC.ECMR.BIT.RE = 1; //受信機能有効
ETHERC.ECMR.BIT.MPDE = 1; //Magic PacketTMの検出を許可

ETHERC.ECSIPR.BIT.ICDIP = 1; //割り込み許可
ETHERC.ECSIPR.BIT.MPDIP = 1;
ETHERC.ECSIPR.BIT.LCHNGIP = 1;
ETHERC.ECSIPR.BIT.PSRTOIP = 1;

EDMAC.IOSR.BIT.ELB = 1; //個別出力設定

EDMAC.EDTRR.BIT.TR = 1;
EDMAC.EDRRR.BIT.RR = 1;

_________________________________________________________________

ちなみにTCP/IPプロトコルスタックはiTRONのものを組み込んでいます(少なくとも組み込んでいるつもりです)

  • shinaさん
    わたしもあまり詳しくないので間違っているかもしれません
    経験で説明しますと、RX63Nからイーサネット用ICでPHYと言われるものに接続されていないですか?
    そうすると、初期設定はレジスターのみではなくてこのPHYと通信して、いわゆるネゴシエーションですが
    この初期化をしないといけないと思います、ただPHYのICもいろいろ種類があり、設定方法も異なると思います。
  • IKUZOさん ありがとうございます。

    取扱説明書には「イーサネットコントローラは、SMSC 製LAN8700IC を使用しています。」とあります。
    これのこと(PHY)かと思いますが、
    ハードウェアマニュアルを読んでいると、PHYにユーザが書き込めるように思えなくて
    難儀しています。
  • > イーサネット通信がしたいのですが、
    (略)
    > どうすればよいでしょうか。

    使用されてるボードのメーカーからサンプルプログラムが公開されてると思いますが、先ずはそれを動かしてみるのが良いでしょう。サポートに相談もできると思います。