RX62Nにおけるイーサネットコントローラの使い方(2)
では、核心部分であるボードごとのイーサネットコントローラのカスタマイズを行います。
RX62Nはイーサネットコントローラを内蔵していますが、実際にLANにつなぐには、PHYのチップが必要です。PHYのチップとRX62NはMIIまたはRMIIという規格の信号で接続します。
特電RX62Nボードでは、RMIIのLAN8720AIというチップを使っています。
RX62NとPHYのチップとの間は、MIIならば4bit(25MHz)、RMIIならば2bit(50MHz)で接続されています。またデータ系の信号とは別にMDC、MDIOという2本線のシリアルインタフェース(SMII:Serial Management Interface)でPHYチップ内のレジスタをコントロールするようになっています。
修正する対象ファイルは下記の3つです。r_either.cは変更不要です。
・phy.c
・r_either.h
順番に見ていきます。
① phy.h
このファイルは、PHYチップごとのレジスタ設定などが書かれています。変更が必要な箇所はMDC、MDIOの操作方法です。
まず、
#define PHY_ADDR 0x1F
という記述があるので、これを
#define PHY_ADDR 0x00
に変更します。これはLAN8720AIに定義されたSMIのアドレスです。PHYチップごとに異なります。
そのほかにもphy.hには、SMIのレジスタ定義や、WAITの設定などが書かれているので必要に応じて書き換えます。
なお、MDC_WAITをとても大きくすると、RX62NとPHYチップ間の信号がバウンダリスキャンで見えるくらいゆっくりになります。SMIから信号が帰ってくると緑の部分が変化するのでわかります。

② r_ether.h
このファイルの中にある
#define ETH_MODE_SEL ETH_MII_MODE
を
#define ETH_MODE_SEL ETH_RMII_MODE
に書き換えます。
これで、RX62NがMIIではなくRMIIを使用するようになります。
コードを解析してmりうと、このdefine文が影響しているのは、ECMR.BIT.RTM と IOPORT.PFENET の2つのレジスタだけなので、MIIとRMIIの切り替えは上記の2つのレジスタだけで行えるのだと思います。
そうして、コンパイルすると、見事にRXマイコンでイーサネットが動きました。
このプログラムはまずPHYを初期化して、DHCPでアドレスをとってきて、それからRX62N内にhttpd(Webサーバ)を立ち上げます。Webサーバのファイルはコンパイル時に一緒にコンパイルされているのでROM上に書かれています。
特電RX62NボードではUARTを持っているので、LCDに表示される内容とデバッグ用のメッセージをUARTにリダイレクトします。すると、

どうやらDHCPで192.168.1.13というアドレスを得たようです。そして、ブラウザにこのアドレスを入れてみると・・
あっ!
何か見えるではないですか!
hwsetup.cとrskrx62n.hを書き換えたため、次の画面からブラウザ経由でLEDをコントロールできます。

なんとも気の遠くなるようなLEDチカチカです。
他にも、ネットワークの統計が見えるページがあったり、この手のひらサイズのマイコンボード内によくいろいろ入っているなと思わせます。

というわけで、ルネサスのWebサイトに用意されていたサンプルプログラムが非常によく出来ていて、ちょこっと書き換えるだけで他のボードに容易に移植できました。次は中身のWebページを自分で書き換えてみたいと思います。
◆
なお、特電RX62Nボードは、現在、量産を開始しました。
製品紹介ページはこちらにご用意いたしました。
今週中には実装が上がってくる予定なので、連休前には皆様のお手元にお届けできると思います。
| 固定リンク



コメント