最終更新:2015-02-25 (水) 15:38:49 (3573d)  

USB/パケット
Top / 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(上位)をあわせて使われる
    MSB654321LSB
    !PID3!PID2!PID1!PID0PID3PID2PID1PID0

種類

  • 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?00011110 00010xE10x87 (1000 0111)エンドポイントへの転送
    IN?10010110 10010x690x96 (1001 0110)ホストへの返送
    SOF01011010 01010xA50xA5 (1010 0101)フレームの開始
    SETUP11010010 11010x2D0xB4 (1011 0100)セットアップパケット
    データDATA00011データパケット PID偶数
    DATA11011データパケット PID奇数
    DATA20111データパケット HSの高帯域アイソクロナス転送のトランザクションで使用される
    MDATA1111データパケット HSの高帯域/スプリット アイソクロナス転送のトランザクションで使用される
    ハンドシェイクACK00101101 00100xD20x4B (0100 1011)データ正常受信
    NAK10100x5A0x5Aデータ転送失敗
    STALL11100x1Eエンドポイントのストール
    NYET01100x96レスポンスなし
    スペシャルPRE1100(トークン)ロースピード転送許可
    ERR1100(ハンドシェイク)エラー
    SPLIT1000HS スプリットトランザクション
    PING0100HSフローコントロールのprobe
    Reserved0000

USB/トークンパケット

  • SOF - ホストが発行するフレームの始まりを示すパケット
    フィールドPIDフレーム番号CRC5
    ビット数8115
  • 構造
    フィールドPIDアドレスエンドポイント番号CRC5
    ビット数8745

USB/データパケット

  • データそのものを送信するときに使用
  • FSのアイソクロナス転送以外は誤りチェック用にDATA0とDATA1を交互に送信。
    • FSだとずっとDATA0
    • HSだとDATA0/DATA1/DATA2を利用
  • 複数のUSB/トランザクションを含む。
  • ペイロードサイズ
    • ロースピード: 8バイト
    • フルスピード: 1023バイト
    • ハイスピード: 1024バイト
  • 構造
    フィールドPIDデータCRC16
    ビット数80〜819216

USB/ハンドシェイクパケット

  • 通信データの応答に利用。
  • ホストはACKのみ。受信エラー時は無応答
  • NAKSTALLはデバイスのみ送信できる。
    • NAK - デバイスが処理中でビジー
    • STALL - デバイスが停止中か、エンドポイントが存在しないなど
  • 構造
    フィールドPID
    ビット数8

USB/スペシャルパケット?

USB 3.0

LMP

  • LInk Management Packet

TP

  • Transction Packet

サブタイプ

  • ACK
  • NRDY?
  • ERDY?
  • STATUS?
  • STALL
  • DEVICE_NOTICICATION?
  • PING?
  • PING_RESPONSE?

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 のいずれか。

エンドポイントディスクリプタ

関連