最終更新:2015-02-25 (水) 15:38:49 (3573d)
USB/パケット
USBでは複数のパケットを組み合わせて一つのトランザクションとし、複数のトランザクションを一つのフレーム中に格納
構造
- 必ずSYNC?という特定のデータで開始され、EOPで終了
- FS/LS : 8ビットの信号(0x80)
- HS : 32ビット
- すべてのパケットは識別情報を含むPIDで始まる。
- EOPは,USBラインのD+とD-がともに“L”になり,それが2ビット期間続く状態
通信例
- [SYNC] [SOF] [OUT DATA0/1 ACK] [IN DATA0 ACK] [SETUP DATA0 ACK]...
- 1フレームに入る分だけ。
- 1フレームの最大90%がアイソクロナス転送/インタラプト転送用に使われる
- 残りをコントロールとバルクで使う。(コントロール優先)
Packet IDの順
- PIDはPID(4bit、下位)とPIDの反転の4bit(上位)をあわせて使われる
MSB 6 5 4 3 2 1 LSB !PID3 !PID2 !PID1 !PID0 PID3 PID2 PID1 PID0
種類
- PID bits are shown in MSb order. When sent on the USB, the rightmost bit (bit 0) will be sent first.
種別 PID コード(下位4ビット) 16進 USB Protocol Suite 定義 トークン OUT? 0001 1110 0001 0xE1 0x87 (1000 0111) エンドポイントへの転送 IN? 1001 0110 1001 0x69 0x96 (1001 0110) ホストへの返送 SOF 0101 1010 0101 0xA5 0xA5 (1010 0101) フレームの開始 SETUP 1101 0010 1101 0x2D 0xB4 (1011 0100) セットアップパケット データ DATA0 0011 データパケット PID偶数 DATA1 1011 データパケット PID奇数 DATA2 0111 データパケット HSの高帯域アイソクロナス転送のトランザクションで使用される MDATA 1111 データパケット HSの高帯域/スプリット アイソクロナス転送のトランザクションで使用される ハンドシェイク ACK 0010 1101 0010 0xD2 0x4B (0100 1011) データ正常受信 NAK 1010 0x5A 0x5A データ転送失敗 STALL 1110 0x1E エンドポイントのストール NYET 0110 0x96 レスポンスなし スペシャル PRE 1100 (トークン)ロースピード転送許可 ERR 1100 (ハンドシェイク)エラー SPLIT 1000 HS スプリットトランザクション PING 0100 HSフローコントロールのprobe Reserved 0000
USB/トークンパケット
- SOF - ホストが発行するフレームの始まりを示すパケット
フィールド PID フレーム番号 CRC5 ビット数 8 11 5
- IN/OUT - それに続くパケットがINかOUTか通知
- USB/SETUPパケット - コントロール転送のセットアップステージ?で使用される
- 構造
フィールド PID アドレス エンドポイント番号 CRC5 ビット数 8 7 4 5
USB/データパケット
- データそのものを送信するときに使用
- FSのアイソクロナス転送以外は誤りチェック用にDATA0とDATA1を交互に送信。
- FSだとずっとDATA0
- HSだとDATA0/DATA1/DATA2を利用
- 複数のUSB/トランザクションを含む。
- ペイロードサイズ
- ロースピード: 8バイト
- フルスピード: 1023バイト
- ハイスピード: 1024バイト
- 構造
フィールド PID データ CRC16 ビット数 8 0〜8192 16
USB/ハンドシェイクパケット
- 構造
フィールド PID ビット数 8
USB/スペシャルパケット?
USB 3.0
LMP
- LInk Management Packet
TP
- Transction Packet
サブタイプ
DP
- Data Packet
ITP
- Isochronous Timestamp Packet
サイズ
デフォルトインターフェイスの制限 (インタラプト転送)
- ハイスピードのデフォルトのインターフェイスで、インタラプト転送のパケットサイズ(wMaxPacketSize)に64バイト以上は指定できない。
- 指定するにはUSB/代替設定が必要。
- All high-speed device default interface settings must not include any interrupt endpoints with a data payload size (specified via wMaxPacketSize? in the endpoint descriptor) greater than 64 bytes.
デバイスディスクリプタ
- bMaxPacketSize0 - エンドポイント0の最大パケットサイズ(Byte)。8, 16, 32, 64 のいずれか。
エンドポイントディスクリプタ
- wMaxPacketSize - 最大パケット長