新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB協(xié)議深入分析 配置

USB協(xié)議深入分析 配置

作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
前面已經(jīng)介紹設置USB的設備地址,接著下來是做什么呢?其實有了設備地址后,主控器還會再次發(fā)送獲取上面已經(jīng)讀取的設備描述符下來,如下:
80 06 00 01 00 00 12 00
然后USB設備也再次回應它,但這次發(fā)送的長度是0x0012了,不再是第一次64個字節(jié)長度了。
接著USB設備就返回下面的描述符給主控器,也就是第一次已經(jīng)發(fā)送的設備描述符,如下:
12 01 10 01 00 00 00 40 00 80 00 80 00 01 04 2C 4A 01
這樣分配地址之后,再次獲取設備描述符成功了,接著下來就是主控器獲取配置描述符。下面就是收到的配置描述符數(shù)據(jù):
80 06 00 02 00 00 09 00
分析上面的數(shù)據(jù)如下:
bmRequestType是80,表示方向USB設備發(fā)送給主控器,接收設備是USB設備。
bRequest是06,表示這是獲取描述符。GET_DESCRIPTOR 6
wValue是00 02。低字節(jié)表示偏移地址00,高字節(jié)表示描述符的類型。如下:
CONFIGURATION2
所以這里的返回的設備描述符是配置描述符。
wIndex是00 00。
wLength是09 00。它表示返回描述符的長度。這里是9個字節(jié)。
接著下來,就是設備返回配置描述符給主控器,發(fā)送的數(shù)據(jù)如下:
09 02 22 00 01 01 00 01 32
發(fā)送的數(shù)據(jù)是按下面的結構來定義,這也是在USB協(xié)議里定義的格式。如下:
typedefstruct_USB_CONFIGURATION_DESCRIPTOR{
BYTEbLength;
BYTEbDescriptorType;
WORDwTotalLength;
BYTEbNumInterfaces;
BYTEbConfigurationValue;
BYTEiConfiguration;
BYTEbmAttributes;
BYTEMaxPower;
}USB_CONFIGURATION_DESCRIPTOR;
bLength是配置的長度,也就是配置結構的整個長度。在這里9個字節(jié)。
bDescriptorType是描述符的類型,這里配置描述符,所以設置為02。
wTotalLength是所有配置設置的結構長度。包括配置描述符、接口描述符、HID或者其它描述符和端點描述符的長度。這里是22 00,也就是0x0022個字節(jié)。
bNumInterfaces是接口個數(shù),這里一個。
bConfigurationValue是配置的個數(shù),當設置配置時發(fā)送的值。這時設置為1個配置。
iConfiguration是說明配置的字符的偏移值。這里是0。
bmAttributes是配置特性,D7位保留。D6位是說明是否自供電。D5位是否支持遠程喚醒。D4—D0是保留,設置為0。
MaxPower是使用的功率,它采用電流來表示。每2mA為單位,比如它的值是50時就表示是100mA的電流消耗。
通過這樣說明,主控器就知道這個設備是什么樣的設備,有多少功能。


關鍵詞: USB協(xié)議配

評論


技術專區(qū)

關閉