?
USB主機(jī)是如何識(shí)別USB設(shè)備的?
當(dāng)USB設(shè)備插上主機(jī)時(shí),主機(jī)就通過一系列的動(dòng)作來對(duì)設(shè)備進(jìn)行枚舉配置(配置是屬于枚舉的一個(gè)態(tài),態(tài)表示暫時(shí)的狀態(tài)),這這些態(tài)如下:
1、接入態(tài)(Attached):設(shè)備接入主機(jī)后,主機(jī)通過檢測(cè)信號(hào)線上的電平變化來發(fā)現(xiàn)設(shè)備的接入;
2、供電態(tài)(Powered):就是給設(shè)備供電,分為設(shè)備接入時(shí)的默認(rèn)供電值,配置階段后的供電值(按數(shù)據(jù)中要求的最大值,可通過編程設(shè)置)
3、缺省態(tài)(Default):USB在被配置之前,通過缺省地址0與主機(jī)進(jìn)行通信;
4、地址態(tài)(Address):經(jīng)過了配置,USB設(shè)備被復(fù)位后,就可以按主機(jī)分配給它的唯一地址來與主機(jī)通信,這種狀態(tài)就是地址態(tài);
5、配置態(tài)(Configured):通過各種標(biāo)準(zhǔn)的USB請(qǐng)求命令來獲取設(shè)備的各種信息,并對(duì)設(shè)備的某此信息進(jìn)行改變或設(shè)置。
6、掛起態(tài)(Suspended):總線供電設(shè)備在3ms內(nèi)沒有總線操作,即USB總線處于空閑狀態(tài)的話,該設(shè)備就要自動(dòng)進(jìn)入掛起狀態(tài),在進(jìn)入掛起狀態(tài)后,總的電流功耗不超過280UA。
標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求命令究竟是什么?
標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求命令是用在控制傳輸中的“初始設(shè)置步驟”里的數(shù)據(jù)包階段(即DATA0,由八個(gè)字節(jié)構(gòu)成)。標(biāo)準(zhǔn)USB設(shè)備請(qǐng)求命令共有11個(gè),大小都是8個(gè)字節(jié),具有相同的結(jié)構(gòu),由5個(gè)字段構(gòu)成(字段是標(biāo)準(zhǔn)請(qǐng)求命令的數(shù)據(jù)部分),結(jié)構(gòu)如下(括號(hào)中的數(shù)字表示字節(jié)數(shù),首字母bm,b,w分別表示位圖、字節(jié),雙字節(jié)):
bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2)