USB 通迅配置是通過描述符 完成的,下面對 USB 标準描述符 進行說明。
一、 USB 标準描述符
1 、标準裝置描述符
偏移量 | 域 | 大小 | 值 | 描述 |
bLength | 1 | 數字 | 描述符的大小= 12H | |
1 | bD ecriptorType | 1 | 常量 | 裝置描述符類型= 01H |
2 | bcdUSB | 2 | BCD 碼 | 此裝置與描述符相容的 USB 裝置說明版本号( BCD 碼) |
4 | bDeviceClass | 1 | 類 | 裝置類碼 如果此域的值為 0 則一個設定下每個接口指出它自己的 類,并個接口各自獨立工作。 如果此域的值處于 1~FEH 之間,則裝置在不同的接口上支援不同的類。并這些接口可能不能獨立工作。 此值指出了,這些接口集體的類定義。 如果此域設為 FFH ,則此裝置的類由廠商定義。 |
5 | bDeviceSubClass | 1 | 子類 | 子類碼 這些碼值的具體含義根據 bDeviceClass 域來看。 如 bDeviceClass 域為零,此域也須為零 如 bDeviceClass 域為 FFH ,此域的所有值保留。 |
6 | bDevicePortocol | 1 | 協定 | 協定碼 這些碼的值視 bDeviceClass 和 bDeviceSubClass 的值而定。 如果裝置支援裝置基礎 上的類相關的協定,此碼标志了裝置類說明上的值。 如果此域的值為零,則此裝置不在裝置基礎上支援裝置類相關的協定。然而,它可能在接口基礎上支援設 備類相關的協定。 如果此域的值為 FFH ,此裝置使用廠商定義的協定。 |
7 | bMaxPacketSize0 | 1 | 數字 | 端點 0 的最大包大小(僅 8,16,32,64 為合法值) |
8 | idVendor | 2 | ID | 廠商标志(由 USB 标準付值) |
10 | idProduct | 2 | ID | 産品标志(由廠商付值) |
12 | bcdDevice | 2 | BCD 碼 | 裝置發行号( BCD 碼) |
14 | iManufacturer | 1 | 索引 | 描述廠商資訊的字串的索 引。 |
15 | iProduct | 1 | 索引 | 描述産品資訊的字串的索 引。 |
16 | iSerialNumber | 1 | 索引 | 描述裝置序列号資訊的字串 的索引。 |
17 | bNumConfigurations | 1 | 數字 | 可能的設定數 |
2 、 标準配置描述符
偏移量 | 域 | 大小 | 值 | 描述 |
bLength | 1 | 數字 | 描述符的大 小= 09H | |
1 | bDescriptorType | 1 | 常量 | 配置描述符 類型= 02H |
2 | wTotalLength | 2 | 數字 | 此配置資訊 的總長(包括配置,接口,端點和裝置類及廠商定義的描述符) |
4 | bNumInterfaces | 1 | 數字 | 此配置所支 持的接口個數 |
5 | bCongfigurationValue | 1 | 數字 | 在 SetConfiguration ()請求中用作參數來標明此配置。 |
6 | iConfiguration | 1 | 索引 | 描述此配置 的字串描述符索引 |
7 | bmAttributes | 1 | 位圖 | 配置特性: D7 : 保留(設為一) D6 : 自給電源 D5 : 遠端喚醒 D4..0 : 保留(設為一) 一個既用總 線電源又有自給電源的裝置會在 MaxPower 域指出需要從總線取的電量。并設定 D6 為一。運作時期的實際電源模式可由 GetStatus(DEVICE) 請求得到。 |
8 | MaxPower | 1 | mA | 在此配置下 的總線電源耗費量。以 2mA 為一個機關。 |
3 、 标準接口描述符
偏移量 | 域 | 大小 | 值 | 說明 |
bLength | 1 | 數字 | 描述符的大 小= 09H | |
1 | bDescriptorType | 1 | 常量 | 接口描述符 類型= 04H |
2 | bInterfaceNumber | 1 | 數字 | 接口号,當 前配置支援的接口數組索引(從零開始) |
3 | bAlternateSetting | 1 | 數字 | 可選設定的 索引值。 |
4 | bNumEndpoints | 1 | 數字 | 此接口用的 端點數量,如果是零則說明此接口隻用預設控制管道。 |
5 | bInterfaceClass | 1 | 類 | 類值 零 值為将來的标準保留。 如 果此域的值設為 FFH ,則此接口類由廠商說明。 所 有其它的值由 USB 說明保留。 |
6 | bInterfaceSubClass | 1 | 子類 | 子類碼 這 些值的定義視 bInterfaceClass 域而定。 如果 bInterfaceClass 域的值為零則此域的值必須為零。 bInterfaceClass 域不為 FFH 則所有值由 USB 所 保留。 |
7 | bInterfaceProtocol | 1 | 協定 | 協定碼: bInterfaceClass 和 bInterfaceSubClass 域的值而定 . 如果一個 接口支援裝置類相關的請求此域的值指出了裝置類說明中所定義的協定 . |
8 | iInterface | 1 | 索引 | 描述此接口 的字串描述符的索引值。 |
4 、 标準端點描述符
偏移量 | 域 | 大小 | 值 | 說明 |
bLength | 1 | 數字 | 描述符的大 小= 07H | |
1 | bDescriptorType | 1 | 常量 | 端點描述符 類型= 05H |
2 | bEndpointAddress | 1 | 端點 | 此描述符所描述的端點的位址。此位址的編碼如下: Bit 3..0 : 端點号 . Bit 6..4 : 保留 , 為零 Bit 7: 方向 , 如果控制端點則略。 0 :出端點 1 :入端點 |
3 | bmAttributes | 1 | 位圖 | 此域的值描 述的是在 bConfigurationValue 域所指的配置下端點的特性。 Bit 1..0 : 傳送類型 00= 控制傳送 01= 同步傳送 10= 批傳送 11= 中斷傳送 所有其它的 位都保留。 |
4 | wMaxPacketSize | 2 | 數字 | 目前配置下 此端點能夠接收或發送的最大資料包的大小。 對 與同步傳送此值用于為每幀的資料淨負荷預留時間。而通道可能在實際運作時不需要預留的帶寬。實際帶寬可由裝置通過一種非 USB 定義的機制彙報給主機 . 對 于中斷傳送 , 批傳送 , 控制傳送 . 端點可能 發送較小的資料包。并且在結束傳送後既有可能間隙時間來重新開機,也有可能不需要這段時間。具體請參照第五章。 |
6 | bInterval | 1 | 數字 | 輪尋資料傳 送端點的時間間隙。 此 域的值對于批傳送的端點及控制傳送的端點忽略。對于同步傳送的端點此域必需為 1 。對于 中斷傳送的端點此域值的範圍為 1 到 255 。 |
5 、語言 描述符
偏移量 | 域 | 大小 | 值 | 描述 |
bLength | 1 | N+2 | 描述符的大 小 | |
1 | bDescriptorType | 1 | 常量 | 字串描述符 類型= 03H |
2 | wLANGID[0] | 2 | 數字 | 語言辨別( LANGID )碼 0 |
… | … | … | … | … |
N | wLANGID[x] | 2 | 數字 | 語言辨別( LANGID )碼 X |
6 、 UNICODE 字串描述符
偏移量 | 域 | 大小 | 值 | 描述 |
bLength | 1 | 數字 | 描述符的大 小 | |
1 | bDescriptorType | 1 | 常量 | 字串描述符 類型= 03H |
2 | bString | N | 數字 | UNICODE 編碼的字串 |
二、 圖解枚舉過程中的描述符
1 、枚舉成功後主機得到的第一個描述符(裝置描述符),見圖 1
(圖 1 )(本資料由 HD-USB12 USB 協定分析儀采集)
a、 Index[38 - 44] :裝置發送到主機的描 述,詳見圖 2 。
b、 圖 2 為裝置描述符,其各字段 含義參考上面标準裝置描述符。
(圖 2 )(本資料由 HD-USB12 USB 協定分析儀采集)
2 、枚舉成功後主機得到的第二個描述符(配置描述符),見圖 3
(圖 3 )(本資料由 HD-USB12 USB 協定分析儀采集)
a 、 Index[54 - 56] :裝置發送到主機的描 述,詳見圖 4 。
b 、圖 4 為配置描述符,其各字段 含義參考上面标準配置描述符。
(圖 4 )(本資料由 HD-USB12 USB 協定分析儀采集)
3 、随後為配置描述符 、接口 描述符 及端點 描述符見圖 5
(圖 5 )(本資料由 HD-USB12 USB 協定分析儀采集)
a 、 Index[67 - 78] :裝置發送到主機的描 述,詳見圖 6 、圖 7 、圖 8 及圖 9 。
b 、圖 6 為配置描述符,其各字段 含義參考上面标準配置描述符。
(圖 6 )(本資料由 HD-USB12 USB 協定分析儀采集)
c 、圖 7 為接口描述符,其各字段 含義參考上面标準接口描述符。
(圖 7 )(本資料由 HD-USB12 USB 協定分析儀采集)
d 、圖 8 及圖 9 為端點描述符,其各字段 含義參考上面标準端點描述符。
(圖 8 )(本資料由 HD-USB12 USB 協定分析儀采集)
(圖 9 )(本資料由 HD-USB12 USB 協定分析儀采集)
以上描述符不包括高速 USB 的描述符,如速度配置 描述符等,詳細請參考 USB 标準。