
1、Device Qualifier描述符
也不知道Qualifier這個(gè)詞怎么翻譯,網(wǎng)上有叫設(shè)備限定描述符的,我覺(jué)得有點(diǎn)牽強(qiáng),還是叫他Qualifier吧。如果設(shè)備既支持高速u(mài)sb也支持全速u(mài)sb,那么就必須支持Qualifier描述符,這個(gè)描述符描述了在高速狀態(tài)下的參數(shù),比如當(dāng)前是usb在全速模式,主機(jī)向設(shè)備獲取Qualifier描述符是為了獲取設(shè)備在高速狀態(tài)時(shí)的參數(shù),具體見(jiàn)下面的分析。如果設(shè)備只支持全速u(mài)sb,那么在收到主機(jī)請(qǐng)求Qualifier描述符時(shí),直接返回STALL即可。
有個(gè)猜測(cè)我沒(méi)有測(cè)試:
如果全速設(shè)備的設(shè)備描述符中的usb版本號(hào)低于2.0,那么設(shè)備是不會(huì)收到Qualifier描述符請(qǐng)求。

bLength:
描述符長(zhǎng)度
bDescriptorType:
描述符類(lèi)型,這里是0x06
bcdUSB:
USB規(guī)范版本號(hào),0x0200即V2.00,至少是2.0
bDeviceClass:
類(lèi)別碼,不做介紹了,見(jiàn)設(shè)備描述符
bDeviceSubClass:
子碼,不做介紹了,見(jiàn)設(shè)備描述符
bDeviceProtocol:
協(xié)議,不做介紹了,見(jiàn)設(shè)備描述符
bMaxPacketSize0:
其它速度下的端點(diǎn)0大小,也就是高速模式下的端點(diǎn)0大小
bNumConfigurations:
其它速度下的配置數(shù)量,也就是高速模式下的配置數(shù)量。
bReserved:
保留,設(shè)置為0
注意,Qualifier描述符沒(méi)有字符串索引,字符串是和設(shè)備描述符共用的。
2、Other_Speed_Configuration
其它速度配置描述符,可以理解為高速模式下的配置描述符。此描述符和配置描述符的結(jié)構(gòu)是一樣的。

bLength:
描述符長(zhǎng)度
bDescriptorType:
描述符類(lèi)型,這里是0x07
wTotalLength:
描述符總長(zhǎng)度,包括配置,接口、端點(diǎn)等描述符
bNumInterfaces:
接口數(shù)量,至少為1
bConfigurationValue:
配置值
iConfiguration:
其它速度配置字符串索引
bmAttributes:
屬性,見(jiàn)配置描述符
bMaxPower:
見(jiàn)配置描述符
添加關(guān)注,了解更多干貨