<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > USB主機(jī)如何識(shí)別USB設(shè)備及請(qǐng)求命令

          USB主機(jī)如何識(shí)別USB設(shè)備及請(qǐng)求命令

          作者: 時(shí)間:2011-07-19 來(lái)源:網(wǎng)絡(luò) 收藏

          設(shè)備的?

          本文引用地址:http://www.ex-cimer.com/article/156022.htm

            當(dāng)設(shè)備插上時(shí),就通過(guò)一系列的動(dòng)作來(lái)對(duì)設(shè)備進(jìn)行枚舉配置(配置是屬于枚舉的一個(gè)態(tài),態(tài)表示暫時(shí)的狀態(tài)),這這些態(tài)如下:

            1、接入態(tài)(Attached):設(shè)備接入主機(jī)后,主機(jī)通過(guò)檢測(cè)信號(hào)線上的電平變化來(lái)發(fā)現(xiàn)設(shè)備的接入;

            2、供電態(tài)(Powered):就是給設(shè)備供電,分為設(shè)備接入時(shí)的默認(rèn)供電值,配置階段后的供電值(按數(shù)據(jù)中要求的最大值,可通過(guò)編程設(shè)置)

            3、缺省態(tài)(Default):USB在被配置之前,通過(guò)缺省地址0與主機(jī)進(jìn)行通信;

            4、地址態(tài)(Address):經(jīng)過(guò)了配置,USB設(shè)備被復(fù)位后,就可以按主機(jī)分配給它的唯一地址來(lái)與主機(jī)通信,這種狀態(tài)就是地址態(tài);

            5、配置態(tài)(Configured):通過(guò)各種標(biāo)準(zhǔn)的USB來(lái)獲取設(shè)備的各種信息,并對(duì)設(shè)備的某此信息進(jìn)行改變或設(shè)置。

            6、掛起態(tài)(Suspended):總線供電設(shè)備在3ms內(nèi)沒(méi)有總線操作,即USB總線處于空閑狀態(tài)的話,該設(shè)備就要自動(dòng)進(jìn)入掛起狀態(tài),在進(jìn)入掛起狀態(tài)后,總的電流功耗不超過(guò)280UA。

            標(biāo)準(zhǔn)的USB設(shè)備究竟是什么?

            標(biāo)準(zhǔn)的USB設(shè)備是用在控制傳輸中的“初始設(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)

          各字段的意義如下:

            1、bmRequestType:D7D6D5D4D3D2D1D0

            D7=0主機(jī)到設(shè)備

            =1設(shè)備到主機(jī);

            D6D5=00標(biāo)準(zhǔn)請(qǐng)求命令

            =01 類請(qǐng)求命令

            =10用戶定義的命令

            =11保留值

            D4D3D2D1D0=00000 接收者為設(shè)備

            =00001 接收者為設(shè)備

            =00010 接收者為端點(diǎn)

            =00011 接收者為其他接收者

            =其他 其他值保留

            2、bRequest:請(qǐng)求命令代碼,在標(biāo)準(zhǔn)的USB命令中,每一個(gè)命令都定義了編號(hào),編號(hào)的值就為字段的值,編號(hào)與命令名稱如下(要注意這里的命令代碼要與其他字段結(jié)合使用,可以說(shuō)命令代碼是標(biāo)準(zhǔn)請(qǐng)求命令代碼的核心,正是因?yàn)檫@些命令代碼而決定了11個(gè)USB標(biāo)準(zhǔn)請(qǐng)求命令):

            0) 0 GET_STATUS:用來(lái)返回特定接收者的狀態(tài)

            1) 1 CLEAR_FEATURE:用來(lái)清除或禁止接收者的某些特性

            2) 3 SET_FEATURE:用來(lái)啟用或激活命令接收者的某些特性

            3) 5 SET_ADDRESS:用來(lái)給設(shè)備分配地址

            4) 6 GET_DEscriptOR:用于主機(jī)獲取設(shè)備的特定描述符

            5) 7 SET_DEscriptOR:修改設(shè)備中有關(guān)的描述符,或者增加新的描述符

            6) 8 GET_CONFIGURATION:用于主機(jī)獲取設(shè)備當(dāng)前設(shè)備的配置值(注同上面的不同)

            7) 9 SET_CONFIGURATION:用于主機(jī)指示設(shè)備采用的要求的配置

            8) 10 GET_INTERFACE:用于獲取當(dāng)前某個(gè)接口描述符編號(hào)

            9) 11 SET_INTERFACE:用于主機(jī)要求設(shè)備用某個(gè)描述符來(lái)描述接口

            10) 12 SYNCH_FRAME:用于設(shè)備設(shè)置和報(bào)告一個(gè)端點(diǎn)的同步幀

            以上的11個(gè)命令要說(shuō)得明白真的有一匹布那么長(zhǎng),請(qǐng)各位去看書(shū)吧,這里就不多說(shuō)了,控制傳輸是USB的重心,而這11個(gè)命令是控制傳輸?shù)闹匦?,所以這11個(gè)命令是重中之重,這個(gè)搞明白了,USB就算是入門(mén)了。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();