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