USBの基礎知識 ――パケットのフォーマットからプロトコルの詳細まで

桑野 雅彦

tag: 組み込み

技術解説 2007年3月15日

● バルクOUT転送時の動作

 バルクOUT転送は,ホストからターゲットへのデータ転送です.いま図8のように,ホストからバルクOUTトランザクションが発行されたとします.はじめはトークン・パケットが送られてきます.パケットの先頭はSYNCで,次のPIDにはOUT転送であることが示されています.続いてUSBターゲット・アドレスとエンドポイントが示されます.パケットの最後はCRCで,パケットが正常かどうかを確認できます.以上でトークン・パケットは終了です.

zu08_01.gif
図8 バルクOUT転送時のUSBターゲットの動作

 そして次のパケットがデータ・パケットです.SYNCに続き,PIDにはDATA0またはDATA1が示されます.その後に実際の転送データが格納され,最後にCRCが続きます.

 ここで,先ほどトークン・パケットで指定されたエンドポイントのバッファが空いているので,バルクOUTで転送されたデータはエンドポイントに格納されます.このとき,エンドポイントのバッファ・サイズより大きなサイズのデータが転送されることはありません.ホスト側はあらかじめエンドポイント・ディスクリプタを取得し,各エンドポイントのバッファ・サイズを把握しているからです.

 無事エンドポイントにデータを格納したら,ターゲット・コントローラはホストに対してハンドシェイク・パケットでACKを返します.これは,ターゲットからホストへのパケットの転送になります.バルクOUT転送時に,転送先のエンドポイントが空いていない場合は,転送されたデータを格納する場所がないのでそのままデータを破棄し,ターゲット・コントローラはホストに対してハンドシェイク・パケットでNAKを返します.NAKを受け取ったホストは,再度同じデータでバルクOUTトランザクションを発行します.

 バルクOUT転送は,USBのトランザクションの中でも最も理解しやすい転送といえます.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日