Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

北斗電子RX65N-144pinのEthernet接続が出来ない

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

北斗電子のR5F565NEDDFBでTCP通信をしたいのですが、echo_srv内に入った後、timer_interrupt関数が呼び出され、R_ETHER_LinkProcess(0)内でETHERとEDMACの初期化が行われ、EDMAC0.IOSR.BIT.ELB=0となり、その後1に立ち上がらないためか通信が出来ません。

以下の手順でプロジェクトを作成しております。

どなたかご教授いただきたく、宜しくお願い致します。

 

開発環境
・IDE:CS+ for CC V8.01.00
・エミュレータ:E1

 

(1)ボードでRX65NのR5F565NEDDFBを選択(CS+)

(2)使用するデバック・ツールを”RX EI(JTAG)”に変更し、プロパティでメイン・クロック周波数[Mhz]を”12.0000”、動作周波数[MHz]を”96.0000”、JTAGクロック[MHz]を”12.38”、ワークRAM開始アドレスを"3000"に変更

(3)コンポーネント(スマート・コンフィグレータ)

「r_bsp(4.00)」「r_cmt_rx(3.40)」「r_ether_rx(1.15)」「r_sys_time_rx(1.00)」「r_t4_driver_rx(1.07)」「r_t4_rx(2.08)」を追加

r_ether_rx:Ethernet interfaceを”MII”、PHY-LSI address setting for ETHER0を”31”、The register bus of PHY0 for ETHER0/1を”Use ETHER0”、The link status is deteced.を”Unesed"、リソースはETHERC0_MIIを選択しET0_LINKSTA端子とET0_WOL端子以外を選択

r_t4_rx:Enable/Disable DHCP function.を"0"、IP address for ch0, when DHCP disable.を”192,168,0,100”、Ether ch0 MAC address.を””0x74,0x90,0x50,0x00,0x79,0x03”、SYSTEM callback function useを”1”

(4)端子(スマート・コンフィグレータ)

・イーサネットコントローラ(ETHERC_MII0):ET0_CRSを”PB7"、ET0_ERXD0を”PB1"、ET0_ERXD1を”PB0"、ET0_ETXD0を”PB5"、ET0_ETXD1を”PB6"、ET0_EXOUTを”PA6"、ET0_MDCを”PA4"、ET0_MDIOを”PA3"、ET0_RX_CLKを”PB2"、ET0_RX_ERを”PB3"、ET0_TX_ENを”PB4"に変更

・システム制御:EMLEとRES#を選択

・ONチップエミュレータ:TCK、TDI、TDO、TMS、TRST#を選択 

(5)コード生成(スマート・コンフィグレータ)

(6)プログラム追加・及び修正(CS+)

「r20an0051jj0208-rx-t4」のrx-t4-connectivity_demo\FITDemos\rskrx65n_2mb_tcp_blocking\src\tcp_blockingから"main.c"と"echo_srv.c"を追加

 t4_driver.cのlan_open関数内で、callback_ether_regist();後にETHERC0.IOSR.BIT.ELB=1を追記

(7)CC-RX(ビルド・ツール)(CS+)

 リンク・オプション内

・最適化方法:しない(-NOOPtimize)

・セクションの開始アドレス:0x00010000に”B_ETHERNET_BUFFERS_1”、”B_RX_DESC_1”、””B_TX_DESC_1””の順で追加

(8)ビルド&デバック・ツールへダウンロード(CS+):OK

(9)動作確認

 echo_srv関数内の処理中にtimer_interruptが呼び出され、R_ETHER_LinkProcess(0)内で初期化が行われることでETHERC0.IOSR.BIT.ELB=0となり、EthernetのLEDがすべて消灯し、コマンド・プロンプトでipconfigを打ち込んでもEthernet接続はされていないという認識になっています。

 

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

  • フェレットさん

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

    r_ether_rxのソースコードを見ると、R_ETHER_LinkProcess(0)内でEDMACn.EDMR.SWRビットを'1'に設定して、
    ETHERC,EDMACのリセットが行われているようです。

    リセットが行われるとETHERC,EDMACの一部を除いたレジスタが初期値に戻るため、EDMACn.IOSR.BIT.ELBビットの値が初期値の'0'に戻ってしまうのだと思います。
    なのでR_ETHER_LinkProcess(0)でETHERC,EDMACのリセットが行われたらEDMACn.IOSR.BIT.ELBビットを'1'に戻す処理が必要だと思います。

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

  • In reply to モッチー:

    モッチーさん

    ご教授ありがとうございます。

    EDMAC0.IOSR.BIT.ELB =1をEDMAC0.EDMR.SWR=1の後に入れてみましたところ、繰り返しR_ETHER_LinkProcess(0)に入り直してしまっていたので、ELBを1に立ち上げた後に1.5秒ほど待機し、EthernetのLEDが点灯してから次の動作に進むようにプログラムを変えたところ、pingが通るようになりました。
    大変ありがとうございました。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page