USBデバイス状態遷移図
USBデバイスは、次に示す6つの状態を遷移します。
- Attached : USBデバイスがホストまたはハブへ接続された状態
- Powered : ホストまたはハブからUSBデバイスへの電源供給が開始された状態
- Default : バスリセットが行われ、USBデバイスとの通信が可能となった状態
- Address : USBデバイスのアドレスが設定された状態
- Configured : USBデバイスのConfigurationが設定され、デバイスが使用可能となった状態
- Suspended : ホストがUSBデバイスとの通信を休止し、USBバスサスペンドとなった状態
各状態間の遷移を正しく実装することは、USBデバイスが正しく動作するために特に重要なことの1つです。
各状態間を遷移する条件はUSB2.0仕様書に既定されていますが、例としてUSBデバイスをパソコンに接続した際は、次のように状態遷移します。
- ホストまたはハブにUSBデバイスが接続され、電源が供給されます。(Attached→Powered)
- ホストからバスリセットが行われ、USBデバイスとの通信が可能な状態となります。(Powered→Default)
- ホストはSet AddressリクエストによりUSBデバイスのアドレスを設定します。(Default→Address)
- ホストはGet Descriptorリクエストによりデバイスのディスクリプターを取得し、デバイスに関する情報を得ます。
- ホストはSet Configurationリクエストを行い、USBデバイスが使用可能な状態となります。(Address→Configured)
次の図はUSB2.0仕様書から抜粋したものです。
USB開発の効率アップはこちら