ENC28J60の初期化手順


【バッファ初期化】

バッファメモリの使用方法を設定します。
リセット後にこの初期化をする必要がありますが、リセット処理が完了するまで
待ってから初期化を開始します。このためESTAT.CLKRDYビットをチェックします。

<受信バッファ>
 ERXSTレジスタに開始番地、ERXNDレジスタに終了番地を設定します。
 できるだけ多目のサイズを受信バッファとして確保するようにします。
 ERXSTレジスタを設定すると、ERXWRPTレジスタも同じ値に自動的に設定されます。
 これにより最初の受信データがバッファの最初から格納されることになります。
 ERXRDPTもERXSTレジスタと同じ値に初期化する必要があります。これでバッファの
 最初から読み出せるようになります。この書き込みには、ERXRDPTL側を先に設定し
 続けてERXRDPTHに設定します。

<送信バッファ>
 バッファの残りの部分はすべて送信バッファに使えます。送信時にはこの空きスペース
 の任意の位置を使えます。
 送信後に、送信結果の7バイトのデータをバッファに書き込みますので、送信パケットの
 最後から受信バッファの間を7バイト以上あける必要があります。
 

【MAC初期化】

MAC部の初期化のためいくつかのレジスタの初期設定が必要です。この初期設定は
リセット後1回だけ行えばよく、順序も特に指定はありません。

(1) MACON2.MARSTビットのクリアしてリセット解除
(2) MACON1.MARXENビットをセットしてMACのフレーム受信を許可
   全二重モードのときはTXPAUSとRXPAUSビットもセットしてフロー制御を許可します。
(3) MACON3レジスタのPADCFG、TXCRCEN、FULDPX、FRMLNENビットを設定
(4) MACON4レジスタを設定します。通常はデフォルトの設定です。
(5) MAMXFLレジスタに最大フレーム長を設定します。通常は1518バイトが最大長です。
(6) MABBIPGレジスタに連続パケット間のギャップを指定します。全二重のときは15、
  半二重のときは12を設定します。
(7) MAIPGLレジスタに非連続パケット間のギャップを指定します。通常12とします。
(8) 半二重のときは、MAIPGHレジスタも設定します。通常12を設定します。
(9) 半二重のときは、MACLCON1とMACLCON2レジスタに再送と衝突のディレイ時間を
   設定します。通常はデフォルト値のままでよいですが、特にケーブルが長い場合には
   MACLCON2の値を大きくします。
(10)MACアドレスをMAADR0からMAADR5レジスタに設定します。

下図に各レジスタの詳細を示します。


【PHY初期化】

使い方によりPHYモジュールの初期設定が必要になることがあります。
(1) PHCON1.PDPXMDビットとMACON3.FULDPXビットは半二重か全二重かによって
   設定します。
(2) 半二重のときは、PHCON2.HDLDISビットをセットして自動的にループバック
   しないようにする必要があります。
(3) PHILCONレジスタにより2個のLEDの点灯条件を設定できます。

下図に関連レジスタの詳細を示します。





        目次に戻る