FreeRTOS でネットワーク関係を実験したくて、中華製のLAN8720 モジュールを試してみた。
モジュールは、アマゾンで購入した。
本当は、RX65N Envition kit で未実装のPHYチップやトランスなどを実装して、実験するつもりで部品を買っていたが、QFNパッケージのハンダ付けが難しく(1個失敗した)、また、本体を壊してしまうのではと思い、工具も無いので、ストールしていた。
LAN8720A はマイクロチップの 10/100 イーサネット PHY で、安価で入手しやすく、比較的良く使われているデバイスだ。
※GR-KAEDE にも使われている。
QFNパッケージで、裏が全面 GND、DIY ではユニバーサル基板で製作しにくい。
※QFN のユニバーサル基板が割高で入手しにくいのも要因
モジュールは安く送料も無料だが、船便なので、注文してから10日程かかる、基板が届いて早速開封、ネットで回路などを探す。
「LAN8720 ETH Board」
このモジュールは、50MHz の OSC が乗っていて、一般的な25MHz クリスタルとは異なっている。
LAN8720Aは、リセット時のピン状態を読み込んで、基本的な設定を自動で行う「Configuration Straps」と呼ばれる機能がある。
50MHz 外部クロックを使う場合、「LED2/nINTSEL(2)」をオープンかプルアップしておく必要がある。
※ボードはLEDが接続されており「オープン状態なので」50MHz外部クロックモードになっていると思われる。
同時に LED のドライブはアクティブ LOW となる。(吸い込み)
最初に試すソフトは、以前に実験した、ルネサスの T4 ライブラリなので、GR-KAEDE などと同等にしておく必要がある。
RX マイコンの仕様なのかもしれないが、PHY デバイスとの通信で使う「MDC、MDIO」は参考回路ではプルアップしてあるので、同じようにプルアップしておく。
※以前に、プルアップが無い場合にPHY通信が失敗した事があった。
※回路図を見ると、MDIOはプルアップしてあるので、MDCのみ適当な抵抗(3.9K)でプルアップしておいた。
このボードで、問題なのは、RX_ER 端子がプルアップされて、外部コネクタに出ていない。
また、この端子は、「 Configuration Straps 」における、PHYアドレスを設定するピンでもある、チップ抵抗を外して、直接ラインを接続した。
※ボードは、写真のように、ピンヘッダーを外して、直接ボードに取りつけてある。
※このような組み方を良くする、やってみると簡単で確実。
今回実験に使ったRXマイコンは、RX71Mで、169ピンタイプ。
イーサーネットは、チャネル0を使った。
各ピンの接続は以下のようになっている。
RX71M: P83/RMMI0_CRS_DV(74) ---> CRS_DV(7)
RX71M: P82/RMMI0_TXD1(79) ---> TXD1(14)
RX71M: P81/RMMI0_TXD0(80) ---> TXD0(11)
RX71M: P80/RMMI0_TXD_EN(81) ---> TXD_EN(12)
RX71M: P77/RMMI0_RX_ER(84) ---> LAN8720 (10) 直接続
RX71M: P76/REF50CK0(85) ---> RX_CLK(8)
RX71M: P75/RMMI0_RXD0(87) ---> RXD0(10)
RX71M: P71/RMMI0_RXD1(88) ---> RXD1(9)
RX71M: P72/ET0_MDC(101) ---> MDC(5)
RX71M: P71/ET0_MDIO(102) ---> MDIO(6)
RX71M: Vcc(3.3V) ---> VCC(1, 2)
RX71M: Vss(GND) ---> GND(3, 4)
接続の様子:
Start RX71M http sample
Link no proccess (0)
Link no proccess (1)
Link no proccess (2)
Link no proccess (3)
Link no proccess (4)
Get DHCP: 192.168.0.4