USBの基礎知識 ――パケットのフォーマットからプロトコルの詳細まで
● バルクIN転送時の動作
バルクIN転送は,ターゲットからホストへのデータ転送です.とはいえ,いきなりターゲット・コントローラがホストに向かってデータを出力してくるわけではありません.
図9にバルクIN転送時のUSBターゲットの動作を示します.バルクIN転送といえども,まずはじめはホストからトークン・パケットが送られます.SYNCに続き,PIDではIN転送であることが示されます.そしてUSBターゲット・アドレスとエンドポイントが続き,最後はCRCとなります.
図9 バルクIN転送時のUSBターゲットの動作
トークン・パケットでIN転送であることを検出したターゲット・コントローラは,データ・パケットを出力します.ここがターゲットからホストへの転送となります.SYNCの後,PIDにDATA0またはDATA1を出力し,続いて先ほどトークン・パケットで指定されたエンドポイントのデータを出力していきます.最後はCRCを出力してデータ・パケットは終了です.ターゲット・コントローラはここまでをデータ・パケットとして出力します.
データ・パケットを正常に受け取ったホストは,ターゲットに対してハンドシェイク・パケットでACKを返します.以上でバルクINトランザクションは終了です.