EZ−USB FX2LPの概要 (その1)
INとOUTの記述
ホスト(PC)から見たものをUSBではIN、OUTと表現します
ENDPOINT
エンドポイントという通信路(USB側のメモリで実現)を通してホストと通信します。
EP0は必須で、他のEPは組み合わせて使用します。これには役割があって、以下のようになります。
EP0 (64バイト) コントロール転送専用でホストとコマンドのやり取りができます。数十バイトのデータ転送ならコントロール転送でもできます。
EP1IN,EP1OUT (各64バイト) バルク転送、インタラプト転送できます。 (転送方式は後術)
EP2,EP6 (各512×Bufferingまたは各1024×Buffering) バルク転送、インタラプト転送、アイソクロナス転送でデータ転送ができます。Buffering(バッファ数)は2,3,4の選択ができます。
EP4,EP8 (各512×Buffering) バルク転送、インタラプト転送、アイソクロナス転送でデータ転送ができます。Bufferingは2固定です。
ただし、EP2+EP4+EP6+EP8=4Kバイトの制限があります。例えば、EP2だけで1024×4=4096にすることもできますが、他のEP4、EP6、EP8はサイズ0になります。実際はEP(2,4,6,8)の番号の若い方が優先で、4096バイトになるような組み合わせになるようです。
FX2LPではデフォルトで以下の7つのENDPOINT用バッファが使用できます。EP0以外は使用しなくてもかまいません。
|
Name |
Address |
Size(バイト) |
|
EP0BUF |
E740−E77F |
64 |
|
EP1OUTBUF |
E780−E7BF |
64 |
|
EP1INBUF |
E7C0−E7FF |
64 |
|
EP2FIFOBUF |
F000−F3FF |
1024 |
|
EP4FIFOBUF |
F400−F7FF |
1024 |
|
EP6FIFOBUF |
F800−FBFF |
1024 |
|
EP8FIFOBUF |
FC00−FFFF |
1024 |
転送方式
コントロール転送とは、リクエストタイプ(1バイト)、リクエスト番号(1バイト)、Value(2バイト)、Index(2バイト)、Length(2バイト)、Data(64バイト)を設定しコマンド通信します。Dataの内容をOUT(ホスト→ターゲット)、またはIN(ホスト←ターゲット)することができます。リクエスト番号は0x00〜0x0C、0xA0〜0xAFが既に使用または予約されています。
バルク転送とは、FIFOバッファ(大きな高速メモリ)にあるデータをINまたはOUT転送します。バスが空いているときに転送します。つまりタイミングには左右されない転送になります。
インタラプト転送とは、FIFOバッファ(大きな高速メモリ)にあるデータをINまたはOUT転送します。マウスのような一定の時間間隔で転送するものに使用します。
アイソクロナスト転送とは、FIFOバッファ(大きな高速メモリ)にあるデータをINまたはOUT転送します。決まった転送時間があるような画像や音声等の転送等に使用します。