天天看點

[Enumeration]USB總線枚舉過程

簡述

USB總線的枚舉大體過程

過程

主機向USB裝置發出GetDescriptor(Device)請求,以取得其預設控制管道所支援的最大資料包長度,該長度包包含在裝置描述符的bMaxPacketSize0字段中,其位址偏移量為7,是以這時主機隻需讀取該描述符的前8位元組。

主機向USB裝置發出SetAddress請求,為其配置設定一個惟一的裝置位址,USB裝置必須在50ms内完成對該請求的處理,并結束其控制傳輸的狀态階段。之後再經過2ms的恢複時間,USB裝置将進入位址狀态,這時它不再使用預設裝置位址,而将使用這個新的位址和主機進行通信,該位址隻有在USB裝置斷開或系統斷電時才會丢失。

主機使用新位址向USB裝置發出GetDescriptor(Device)請求,并讀取其裝置描述符的全部字段,以了解該裝置的總體資訊。

主機向USB裝置循環發出GetDescriptor(Configuration)請求,以讀取其全部配置資訊(其個數由裝置描述符的bNumConfigurations字段指出),該過程需要花費幾毫秒。在讀取某一配置資訊時,主機首先請求其配置描述符(9位元組),并得到該配置資訊的總長度(包含在配置描述符的wTotalLength字段中),然後主機再次發出該GetDescriptor(Configuration)請求,并得到完整的配置資訊,包括配置描述符、接口描述符、端點描述符以及各種裝置類定義描述符和供應商自定義描述符等。

繼續閱讀