新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB協(xié)議深入分析 字符串描述符

USB協(xié)議深入分析 字符串描述符

作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
上一次說到把配置描述符返回給主控器那里了,現(xiàn)在接著下來,就會收到主控器發(fā)來字符串描述符。如果在設備描述符那里指定沒有字符串描述的話,在這里是不會收到字符串描述符的。由于我在設備描述符里指定有字符串描述符的偏移地址,因此,就收到主控器發(fā)出請求字符串描述符。收到的數(shù)據(jù)如下:
80 06 00 03 00 00 FF 00
bmRequestType是80,表示方向USB設備發(fā)送給主控器,接收設備是USB設備。
bRequest是06,表示這是獲取描述符。GET_DESCRIPTOR 6
wValue是00 03。低字節(jié)表示偏移地址00,高字節(jié)表示描述符的類型,如下:
STRING3
wIndex是00 00。
wLength是FF 00。它表示返回描述符的長度。這里是256個字節(jié)。
因此,這個獲取字符串描述符,就是從字符串描述內(nèi)存里,0偏移地址開始的位置讀取第一個字符串描述符返回給主控器。接著就返回下面的數(shù)據(jù)給主控器:
04 03 09 04
上面的數(shù)據(jù)是按字符串描述符來組織的,它的結構,我定義結構如下:
typedefstruct_USB_STRING_DESCRIPTOR{
BYTEbLength;
BYTEbDescriptorType;
WORDbString;
}USB_STRING_DESCRIPTOR;
bLength是所有數(shù)據(jù)的長度。在這里是4。
bDescriptorType是描述類型,這里字符串描述符,所以它是3。
bString是可變的字符數(shù)組。不超過254個應都可以的,并且它是使用UNICODE編碼的字符串。在這里是09 04,這是美國英語的標識,0x0409。如果想輸入中文的標識,只要改為0x0804就可以了。
通過這個字符串描述符,主控器就知道字符串描述符是使用什么語言說明的了,這樣就可以支持全世界的語言標識。


評論


技術專區(qū)

關閉