USB學(xué)習(xí)系列之二——USB設(shè)備的插入檢測機制
注意:高速設(shè)備首先會被識別為全速設(shè)備,然后再通過集線器和設(shè)備二者的確認最后切換到高速模式下。
本文引用地址:http://2s4d.com/article/201612/330046.htm在高速模式下,采用的是電流傳輸模式,這個時候上拉電阻需要從D+上斷開。
2.當設(shè)備沒有枚舉成功時(可以通過一個10K的電阻將USB的電源端和D+或者D-連接起來,電腦會發(fā)現(xiàn)一個無法識別的設(shè)備,這個設(shè)備的PID和VID都是0,根據(jù)每個特性可以簡單的判定設(shè)備的枚舉是否成功。
3.一個具體的USB實現(xiàn)什么功能,USB主機并不知道。USB主機通過讀取USB的設(shè)備描述符來獲取設(shè)備的類型、廠商的ID和產(chǎn)品的ID(通常依靠它們來加載對應(yīng)的驅(qū)動程序)、端點情況、版本號等眾多信息。
4.USB1.1協(xié)議定義的標準描述符有設(shè)備描述符(Device
USB2.0相比于USB1.1新增加的兩個描述符:限定符描述符(Qualifier
5.一個USB設(shè)備只有一個設(shè)備描述符。
設(shè)備描述符里面決定了該設(shè)備有多少種配置,每種配置都有一個配置描述符;
而在每個配置描述符中又定義了該配置有多少個接口,每個接口都有一個接口描述符;
在接口描述符里面又定義了該接口有多少個端點,每個端點都有一個端點描述符,端點描述符定了端點的大小、類型等。
如果有類特殊描述符,它跟在相應(yīng)的接口描述符之后。
注意:USB主機獲取描述符時,從上到下逐層獲取。對于字符串描述符,USB主機是單獨獲取的,主機通過發(fā)送獲取字符串中描述符的請求以及描述符的索引號、語言ID來獲取對應(yīng)的字符串描述符。
6.設(shè)備描述符:設(shè)備所使用的USB協(xié)議版本號、設(shè)備類型、端點0的最大包大小、廠商ID(VID)和產(chǎn)品ID(PID)、設(shè)備版本號、廠商字符串索引、產(chǎn)品字符串索引、設(shè)備序列號索引、可能的配置數(shù)等。
配置描述符:記錄配置所包含的接口數(shù)、配置的編號、供電方式、是否支持遠程喚醒、電流需求量等。
接口描述符:記錄接口的編號、接口的端點數(shù)、接口所使用的類、子類、協(xié)議等。
端點描述符:端點號及方向、端點的傳輸類型、最大包長度、查詢時間間隔等。
字符串描述符:提供一些方便人們閱讀的信息,它不是必需的。
7.與USB設(shè)備進行通信時需要的地址:設(shè)備的地址和端點的地址。配置和接口是為了更加方便的管理端點抽象出來的概念。一個設(shè)備可以有多個配置,但是一個時刻只能有一個配置有效;每個配置下又可以有多個接口,一個接口下面可以有多個端點。
8.具有多個接口,并由接口來實現(xiàn)功能的設(shè)備叫做USB復(fù)合設(shè)備。例如一個USB音頻設(shè)備,它具有一個音頻控制接口,另外還有一個到多個音頻流或者MIDI流接口。在主機端會把USB復(fù)合設(shè)備的每個接口當做一個功能設(shè)備來看待,常見的USB鼠標,U盤等通常是單一的設(shè)備,即一個設(shè)備下只有一個配置描述符、一個接口描述符。
評論