版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、USB 傳輸協(xié)議(2010-11-10 15:13:19)轉(zhuǎn)載標(biāo)簽:雜談1總線協(xié)議USB 是一種輪詢(xún)方式的總線,主機(jī)控制器初始化所有的數(shù)據(jù)傳輸。每個(gè)總線執(zhí)行動(dòng)作按照傳輸前制定的原則, 最多傳輸三個(gè)數(shù)據(jù)包。 每次傳輸開(kāi)始, 主機(jī) 控制器發(fā)送一個(gè)描述傳輸動(dòng)作的種類(lèi)、方向、 USB 設(shè)備地址和端口號(hào)的數(shù)據(jù)包,這個(gè)數(shù)據(jù) 包通常稱(chēng)為標(biāo)志包 PID ( packet ID), USB 設(shè)備從解碼后的數(shù)據(jù)包中取出屬于自己的數(shù)據(jù)。傳輸開(kāi)始時(shí), 由標(biāo)志包來(lái)標(biāo)志數(shù)據(jù)的傳輸方向, 然后發(fā)送端發(fā)送數(shù)據(jù)包, 接收端相應(yīng)地 發(fā)送一個(gè)握手的數(shù)據(jù)包, 以表明傳輸是否成功。 發(fā)送端和接收端之間的數(shù)據(jù)傳輸, 可視為在 主機(jī)和設(shè)備
2、端口之間的一條通道中進(jìn)行。通道可分為兩類(lèi): 流通道和消息通道。 各通道之間的數(shù)據(jù)流動(dòng)是相互獨(dú)立的, 一個(gè) USB 設(shè)備可以有幾條通道。例如,一個(gè) USB 設(shè)備可建立向其他設(shè)備發(fā)送數(shù)據(jù)和從其他設(shè)備接收 數(shù)據(jù)的兩條通道。2USB 的傳輸方式為了滿(mǎn)足不同的通信要求, USB 提供了四種傳輸方式:控制( control )方式傳輸,等時(shí) (isochronous )方式傳輸,中斷( interrupt )方式傳輸及批( bulk )方式傳輸。每種傳輸模 式應(yīng)用到具有相同名字的終端時(shí),具有不同的性質(zhì)。(1) 控制方式傳輸控制傳輸是雙向傳輸, 數(shù)據(jù)量通常較小。 控制傳輸類(lèi)型支持外設(shè)與主機(jī)之間的控制、 狀
3、態(tài)、配置等信息的傳輸, 為外設(shè)與主機(jī)之間提供一條控制通道。 每種外設(shè)都支持控制傳輸類(lèi) 型,這樣,主機(jī)與外設(shè)之間就可以傳輸配置和命令/狀態(tài)信息。(2)等時(shí)方式傳輸?shù)葧r(shí)傳輸提供了確定的帶寬和間隔時(shí)間(latency)。它用于時(shí)間嚴(yán)格并具有較強(qiáng)容錯(cuò)性 的流數(shù)據(jù)傳輸,或者用于要求恒定的數(shù)據(jù)傳輸速率和即時(shí)應(yīng)用中。例如,在執(zhí)行即時(shí)通話的網(wǎng)絡(luò)電話應(yīng)用中,使用等時(shí)傳輸模式是很好的選擇。等時(shí)數(shù)據(jù)要求確定的帶寬值和確定的最大傳輸次數(shù),對(duì)于等時(shí)傳輸來(lái)說(shuō),即時(shí)數(shù)據(jù)傳遞比精度和數(shù)據(jù)的完整性更重要一些。(3)中斷方式傳輸中斷方式傳輸主要用于定時(shí)查詢(xún)?cè)O(shè)備是否有中斷申請(qǐng)。這種傳輸方式的典型應(yīng)用是在少量的、分散的、不可預(yù)測(cè)數(shù)據(jù)
4、的傳輸方面,鍵盤(pán)、操縱桿和鼠標(biāo)等就屬于這一類(lèi)型。這些設(shè) 備與主機(jī)間的數(shù)據(jù)傳輸量小、無(wú)周期性,但對(duì)響應(yīng)時(shí)間敏感, 要求馬上響應(yīng)。中斷方式傳輸是單向的,并且對(duì)于主機(jī)來(lái)說(shuō)只有輸入方式。(4)批方式傳輸主要應(yīng)用于大量傳輸數(shù)據(jù)又沒(méi)有帶寬和間隔時(shí)間要求的情況下,要求保證傳輸。打印機(jī)和掃描儀就屬于這種類(lèi)型,在滿(mǎn)足帶寬的情況下,才進(jìn)行該類(lèi)型的數(shù)據(jù)傳輸。USB采用分塊帶寬分配方案,若外設(shè)超過(guò)當(dāng)前或潛在的帶寬分配要求,則主機(jī)將拒絕與外設(shè)進(jìn)行數(shù)據(jù)傳輸。等時(shí)和中斷傳輸類(lèi)型的終端保留帶寬,并保證數(shù)據(jù)按一定的速率傳輸,集中和控制終端按可用的最佳帶寬來(lái)傳輸數(shù)據(jù)。但是,10%的帶寬為批傳輸和控制傳輸保留,數(shù)據(jù)塊傳輸僅在帶寬滿(mǎn)
5、足要求的情況下才會(huì)出現(xiàn)。問(wèn)題一:USB的傳輸線結(jié)構(gòu)是如何的呢?答案一: 一條USB的傳輸線分別由地 線、電源線、D+、D-四條線構(gòu)成,D+和D-是差分輸入線,它使用的是 3.3V的 電壓(注意哦,與CMOS的5V電平不同),而電源線和地線可向設(shè)備提供 5V 電壓,最大電流為500MA (可以在編程中設(shè)置的,至于硬件的實(shí)現(xiàn)機(jī)制,就不 要管它了)。問(wèn)題二:數(shù)據(jù)是如何在USB傳輸線里面?zhèn)魉偷拇鸢付簲?shù)據(jù)在USB線里傳送 是由低位到高位發(fā)送的。問(wèn)題三:USB的編碼方案?答案三:USB采用不歸零取反來(lái)傳輸數(shù)據(jù),當(dāng)傳 輸線上的差分?jǐn)?shù)據(jù)輸入0時(shí)就取反,輸入1時(shí)就保持原值,為了確保信號(hào)發(fā)送 的準(zhǔn)確性,當(dāng)在US
6、B總線上發(fā)送一個(gè)包時(shí),傳輸設(shè)備就要進(jìn)行位插入 *作(即 在數(shù)據(jù)流中每連續(xù)6個(gè)1后就插入一個(gè)0),從而強(qiáng)迫NRZI碼發(fā)生變化。這個(gè) 了解就行了,這些是由專(zhuān)門(mén)硬件處理的。問(wèn)題四:USB的數(shù)據(jù)格式是怎么樣的呢?答案四:和其他的一樣,USB數(shù)據(jù)是由二進(jìn)制數(shù)字串構(gòu)成的,首先數(shù)字串構(gòu)成域(有七種),域再構(gòu)成包,包再構(gòu) 成事務(wù)(IN、OUT、SETUP ),事務(wù)最后構(gòu)成傳輸(中斷傳輸、并行傳輸、批 量傳輸和控制傳輸)。下面簡(jiǎn)單介紹一下域、包、事務(wù)、傳輸,請(qǐng)注意他們之間 的關(guān)系。(一)域:是USB數(shù)據(jù)最小的單位,由若干位組成(至于是多少位由 具體的域決定),域可分為七個(gè)類(lèi)型:1、同步域(SYNC),八位,值固
7、定為0000 0001,用于本地時(shí)鐘與輸入同步2、標(biāo)識(shí)域(PID),由四位標(biāo)識(shí)符+四位標(biāo)識(shí)符反碼構(gòu)成,表明包的類(lèi)型和格式, 這是一個(gè)很重要的部分,這里可以計(jì)算出,USB的標(biāo)識(shí)碼有16種,具體分類(lèi)請(qǐng) 看問(wèn)題五。3、地址域(ADDR ):七位地址,代表了設(shè)備在主機(jī)上的地址,地址 000 0000 被命名為零地址,是任何一個(gè)設(shè)備第一次連接到主機(jī)時(shí), 在被主機(jī)配置、枚舉前 的默認(rèn)地址,由此可以知道為什么一個(gè) USB主機(jī)只能接127個(gè)設(shè)備的原因。4、 端點(diǎn)域(ENDP ),四位,由此可知一個(gè) USB設(shè)備有的端點(diǎn)數(shù)量最大為16 個(gè)。5、幀號(hào)域(FRAM),11位,每一個(gè)幀都有一個(gè)特定的幀號(hào),幀號(hào)域最大容量
8、 0x800,對(duì)于同步傳輸有重要意義(同步傳輸為四種傳輸類(lèi)型之一,請(qǐng)看下面)。6、數(shù)據(jù)域(DATA ):長(zhǎng)度為01023字節(jié),在不同的傳輸類(lèi)型中,數(shù)據(jù)域的長(zhǎng) 度各不相同,但必須為整數(shù)個(gè)字節(jié)的長(zhǎng)度7、校驗(yàn)域(CRC ):對(duì)令牌包和數(shù)據(jù)包(對(duì)于包的分類(lèi)請(qǐng)看下面)中非 PID域進(jìn)行校驗(yàn)的一種方法,CRC校驗(yàn)在通訊中應(yīng)用很泛,是一種很好的校驗(yàn)方法, 至于具體的校驗(yàn)方法這里就不多說(shuō),請(qǐng)查閱相關(guān)資料,只須注意CRC碼的除法是模2運(yùn)算,不同于10進(jìn)制中的除法。(二)包:由域構(gòu)成的包有四種類(lèi)型,分別是令牌包、數(shù)據(jù)包、握手包和特殊 包,前面三種是重要的包,不同的包的域結(jié)構(gòu)不同,介紹如下1、令牌包:可分為輸入包、
9、輸出包、設(shè)置包和幀起始包(注意這里的輸入包是用于設(shè)置輸入命令的,輸出包是用來(lái)設(shè)置輸出命令的,而不是放據(jù)數(shù)的)其中輸 入包、輸出包和設(shè)置包的格式都是一樣的:SYNC+PID+ADDR+ENDP+CRC5 (五位的校驗(yàn)碼)(上面的縮寫(xiě)解釋請(qǐng)看上面域的介紹,PID碼的具體定義請(qǐng)看問(wèn)題五)幀起始包的格式:SYNC+PID+11 位 FRAM+CRC5 (五位的校驗(yàn)碼)2、數(shù)據(jù)包:分為DATA0包和DATA1包,當(dāng)USB發(fā)送數(shù)據(jù)的時(shí)候,當(dāng)一次發(fā) 送的數(shù)據(jù)長(zhǎng)度大于相應(yīng)端點(diǎn)的容量時(shí),就需要把數(shù)據(jù)包分為好幾個(gè)包,分批發(fā)送, DATA0包和DATA1包交替發(fā)送,即如果第一個(gè)數(shù)據(jù)包是 DATA0,那第二個(gè)數(shù) 據(jù)包
10、就是DATA1。但也有例外情況,在同步傳輸中(四類(lèi)傳輸類(lèi)型中之一),所有的數(shù)據(jù)包都是為 DATA0 ,格式如下: SYNC+PID+01023 字節(jié) +CRC163、握手包:結(jié)構(gòu)最為簡(jiǎn)單的包,格式如下SYNC+PID (注上面每種包都有不同類(lèi)型的, USB1.1 共定義了十種包, 具體請(qǐng)見(jiàn)問(wèn)題五)(三)事務(wù):分別有IN事務(wù)、OUT事務(wù)和SETUP事務(wù)三大事務(wù),每一種事 務(wù)都由令牌包、 數(shù)據(jù)包、 握手包三個(gè)階段構(gòu)成, 這里用階段的意思是因?yàn)檫@些包 的發(fā)送是有一定的時(shí)間先后順序的,事務(wù)的三個(gè)階段如下:1、令牌包階段:?jiǎn)?dòng)一個(gè)輸入、輸出或設(shè)置的事務(wù)2、數(shù)據(jù)包階段:按輸入、輸出發(fā)送相應(yīng)的數(shù)據(jù)3、握手包
11、階段:返回?cái)?shù)據(jù)接收情況,在同步傳輸?shù)?IN 和 OUT 事務(wù)中沒(méi)有這個(gè) 階段,這是比較特殊的。事務(wù)的三種類(lèi)型如下 (以下按三個(gè)階段來(lái)說(shuō)明一個(gè)事務(wù)) :1、IN事務(wù):令牌包階段一一主機(jī)發(fā)送一個(gè)PID為IN的輸入包給設(shè)備,通知設(shè) 備要往主機(jī)發(fā)送數(shù)據(jù);數(shù)據(jù)包階段 設(shè)備根據(jù)情況會(huì)作出三種反應(yīng)(要注意: 數(shù)據(jù)包階段也不總是傳送數(shù)據(jù)的,根據(jù)傳輸情況還會(huì)提前進(jìn)入握手包階段)1 ) 設(shè)備端點(diǎn)正常,設(shè)備往入主機(jī)里面發(fā)出數(shù)據(jù)包( DATA0 與 DATA1 交替);2)設(shè)備正在忙,無(wú)法往主機(jī)發(fā)出數(shù)據(jù)包就發(fā)送 NAK 無(wú)效包, IN 事務(wù)提前結(jié)束, 到了下一個(gè) IN 事務(wù)才繼續(xù); 3) 相應(yīng)設(shè)備端點(diǎn)被禁止,發(fā)送錯(cuò)誤
12、包 STALL 包, 事務(wù)也就提前結(jié)束了, 總線進(jìn)入空閑狀態(tài)。 握手包階段 主機(jī)正確接收到數(shù)據(jù) 之后就會(huì)向設(shè)備發(fā)送 ACK 包。2、OUT事務(wù):令牌包階段一一主機(jī)發(fā)送一個(gè)PID為OUT的輸出包給設(shè)備,通 知設(shè)備要接收數(shù)據(jù);數(shù)據(jù)包階段 比較簡(jiǎn)單,就是主機(jī)會(huì)設(shè)備送數(shù)據(jù), DATA 0與DATA1交替握手包階段一一設(shè)備根據(jù)情況會(huì)作出三種反應(yīng)1 )設(shè)備端點(diǎn)接收正確,設(shè)備往入主機(jī)返回 ACK ,通知主機(jī)可以發(fā)送新的數(shù)據(jù), 如果數(shù)據(jù)包發(fā)生了 CRC 校驗(yàn)錯(cuò)誤,將不返回任何握手信息;2)設(shè)備正在忙,無(wú)法往主機(jī)發(fā)出數(shù)據(jù)包就發(fā)送 NAK 無(wú)效包,通知主機(jī)再次發(fā) 送數(shù)據(jù);3)相應(yīng)設(shè)備端點(diǎn)被禁止,發(fā)送錯(cuò)誤包 STA
13、LL 包,事務(wù)提前結(jié)束,總線直接進(jìn) 入空閑狀態(tài)。3、SETUT事務(wù):令牌包階段一一主機(jī)發(fā)送一個(gè)PID為SETUP的輸出包給設(shè)備, 通知設(shè)備要接收數(shù)據(jù);數(shù)據(jù)包階段比較簡(jiǎn)單,就是主機(jī)會(huì)設(shè)備送數(shù)據(jù), 注意, 這里只有一個(gè)固定為 8 個(gè)字節(jié)的 DATA0 包,這 8 個(gè)字節(jié)的內(nèi)容就是標(biāo)準(zhǔn)的 US B 設(shè)備請(qǐng)求命令(共有 11 條,具體請(qǐng)看問(wèn)題七) 握手包階段 設(shè)備接收到 主機(jī)的命令信息后, 返回 ACK ,此后總線進(jìn)入空閑狀態(tài), 并準(zhǔn)備下一個(gè)傳輸 (在 SETUP 事務(wù)后通常是一個(gè) IN 或 OUT 事務(wù)構(gòu)成的傳輸)(四)傳輸:傳輸由 OUT、IN、SETUP 事務(wù)其中的事務(wù)構(gòu)成,傳輸有四種類(lèi) 型,中
14、斷傳輸、批量傳輸、同步傳輸、控制傳輸,其中中斷傳輸和批量轉(zhuǎn)輸?shù)慕Y(jié) 構(gòu)一樣,同步傳輸有最簡(jiǎn)單的結(jié)構(gòu),而控制傳輸是最重要的也是最復(fù)雜的傳輸。1 、中斷傳輸:由 OUT 事務(wù)和 IN 事務(wù)構(gòu)成,用于鍵盤(pán)、鼠標(biāo)等 HID 設(shè)備的數(shù)據(jù) 傳輸中2、批量傳輸:由 OUT 事務(wù)和 IN 事務(wù)構(gòu)成,用于大容量數(shù)據(jù)傳輸,沒(méi)有固定的 傳輸速率,也不占用帶寬,當(dāng)總線忙時(shí),USB會(huì)優(yōu)先進(jìn)行其他類(lèi)型的數(shù)據(jù)傳輸, 而暫時(shí)停止批量轉(zhuǎn)輸。3、同步傳輸:由OUT事務(wù)和IN事務(wù)構(gòu)成,有兩個(gè)特殊地方,第一,在同步傳 輸?shù)腎N和OUT事務(wù)中是沒(méi)有返回包階段的;第二,在數(shù)據(jù)包階段所有的數(shù)據(jù) 包都為DATA04、控制傳輸:最重要的也是最復(fù)
15、雜的傳輸,控制傳輸由三個(gè)階段構(gòu)成(初始設(shè) 置階段、可選數(shù)據(jù)階段、狀態(tài)信息步驟),每一個(gè)階段可以看成一個(gè)的傳輸,也 就是說(shuō)控制傳輸其實(shí)是由三個(gè)傳輸構(gòu)成的,用來(lái)于 USB設(shè)備初次加接到主機(jī)之 后,主機(jī)通過(guò)控制傳輸來(lái)交換信息,設(shè)備地址和讀取設(shè)備的描述符,使得主機(jī)識(shí) 別設(shè)備,并安裝相應(yīng)的驅(qū)動(dòng)程序,這是每一個(gè) USB開(kāi)發(fā)者都要關(guān)心的問(wèn)題。1、初始設(shè)置步驟:就是一個(gè)由SET事務(wù)構(gòu)成的傳輸2、可選數(shù)據(jù)步驟:就是一個(gè)由IN或OUT事務(wù)構(gòu)成的傳輸,這個(gè)步驟是可選的, 要看初始設(shè)置步驟有沒(méi)有要求讀/寫(xiě)數(shù)據(jù)(由SET事務(wù)的數(shù)據(jù)包階段發(fā)送的標(biāo)準(zhǔn) 請(qǐng)求命令決定)3、 狀態(tài)信息步驟:顧名思義,這個(gè)步驟就是要獲取狀態(tài)信息,
16、由 IN或OUT事 務(wù)構(gòu)成構(gòu)成的傳輸,但是要注意這里的IN和OUT事務(wù)和之前的INT和OUT事 務(wù)有兩點(diǎn)不同:1)傳輸方向相反,通常IN表示設(shè)備往主機(jī)送數(shù)據(jù),OUT表示主機(jī)往設(shè)備送數(shù) 據(jù);在這里,IN表示主機(jī)往設(shè)備送數(shù)據(jù),而 OUT表示設(shè)備往主機(jī)送數(shù)據(jù),這是 為了和可選數(shù)據(jù)步驟相結(jié)合;2)在這個(gè)步驟里,數(shù)據(jù)包階段的數(shù)據(jù)包都是 0長(zhǎng)度的,即SYNC+PID+CRC16除了以上兩點(diǎn)有區(qū)別外,其他的一樣,這里就不多說(shuō)(思考:這些傳輸模式在實(shí)際*作中應(yīng)如何通過(guò)什么方式去設(shè)置?)問(wèn)題五:標(biāo)識(shí)碼有哪些?答案五:如同前面所說(shuō)的標(biāo)識(shí)碼由四位數(shù)據(jù)組成,因此可以表示十六種標(biāo)識(shí)碼,在 USB1.1規(guī)范里面,只用了十
17、種標(biāo)識(shí)碼,USB2.0 使用了十六種標(biāo)識(shí)碼,標(biāo)識(shí)碼的作用是用來(lái)說(shuō)明包的屬性的, 標(biāo)識(shí)碼是和包聯(lián)系 在一起的,首先簡(jiǎn)單介紹一下數(shù)據(jù)包的類(lèi)型,數(shù)據(jù)包分為令牌包、數(shù)據(jù)、握手包 和特殊包四種(具體分類(lèi)請(qǐng)看問(wèn)題七),標(biāo)識(shí)碼分別有以下十六種:令牌包 : 0x01輸出(OUT)啟動(dòng)一個(gè)方向?yàn)橹鳈C(jī)到設(shè)備的傳輸,并包含了設(shè)備地址和標(biāo) 號(hào)0x09輸入(IN)啟動(dòng)一個(gè)方向?yàn)樵O(shè)備到主機(jī)的傳輸,并包含了設(shè)備地址和標(biāo)號(hào) 0x05幀起始(SOF )表示一個(gè)幀的開(kāi)始,并且包含了相應(yīng)的幀號(hào)0x0d設(shè)置(SETUP )啟動(dòng)一個(gè)控制傳輸,用于主機(jī)對(duì)設(shè)備的初始化數(shù)據(jù)包:0x03偶數(shù)據(jù)包(DATA0),0x0b奇數(shù)據(jù)包(DATA1 )
18、握手包:0x02確認(rèn)接收到無(wú)誤的數(shù)據(jù)包(ACK)0x0a無(wú)效,接收(發(fā)送)端正在忙而無(wú)法接收(發(fā)送)信息0x0e錯(cuò)誤,端點(diǎn)被禁止或不支持控制管道請(qǐng)求特殊包 0x0C前導(dǎo),用于啟動(dòng)下 行端口的低速設(shè)備的數(shù)據(jù)傳輸問(wèn)題六:USB主機(jī)是如何識(shí)別USB設(shè)備的?答案六:當(dāng)USB設(shè)備插上主機(jī) 時(shí),主機(jī)就通過(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ù)中要求的
19、最大值,可通過(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)(Con figured ):通過(guò)各種標(biāo)準(zhǔn)的USB請(qǐng)求命令來(lái)獲取設(shè)備的 各種信息,并對(duì)設(shè)備的某此信息進(jìn)行改變或設(shè)置。6、掛起態(tài)(Suspended ):總線供電設(shè)備在3ms內(nèi)沒(méi)有總線*作,即U SB總線處于空閑狀態(tài)的話,該設(shè)備就要自動(dòng)進(jìn)入掛起狀態(tài),在進(jìn)入掛起狀態(tài)后, 總的電流功耗不超過(guò)280UA。問(wèn)題七:剛才在答案四提到的標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求命令
20、究竟是什么?答案七: 標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求命令是用在控制傳輸中的 初始設(shè)置步驟”里的數(shù)據(jù)包階段 (即DATA0,由八個(gè)字節(jié)構(gòu)成),請(qǐng)看回問(wèn)答四的內(nèi)容。標(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)+wlndex (2)+wLength ( 2) 各字段的意義如下:1、bmRequestType : D7D6D5D4D3D2D1D0D7=0主機(jī)到設(shè)備=1設(shè)備到
21、主機(jī);D6D5=00標(biāo)準(zhǔn)請(qǐng)求命令=01類(lèi)請(qǐng)求命令=10用戶(hù)定義的命令=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)與命令名稱(chēng)如下(要注意這里的命令代碼要與 其他字段結(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)清除或禁
22、止接收者的某些特性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ī)要
23、求設(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)了。問(wèn)題八:在標(biāo)準(zhǔn)的USB請(qǐng)求命令中,經(jīng)常會(huì)看到 Descriptor,這是什么來(lái)的 呢?回答八:Descriptor即描述符,是一個(gè)完整的數(shù)據(jù)結(jié)構(gòu),可以通過(guò)C語(yǔ)言等 編程實(shí)現(xiàn),并存儲(chǔ)在USB設(shè)備中,用于描述一個(gè)USB設(shè)備的所有屬性,USB 主機(jī)是通過(guò)一系列命令來(lái)要求設(shè)備發(fā)送這些信息的。它的作用就
24、是通過(guò)如問(wèn)答節(jié) 中的命令*作來(lái)給主機(jī)傳遞信息,從而讓主機(jī)知道設(shè)備具有什么功能、屬于哪 一類(lèi)設(shè)備、要占用多少帶寬、使用哪類(lèi)傳輸方式及數(shù)據(jù)量的大小,只有主機(jī)確定了這些信息之后,設(shè)備才能真正開(kāi)始工作,所以描述符也是十分重要的部分,要好好掌握。標(biāo)準(zhǔn)的描述符有5種,USB為這些描述符定義了編號(hào):1 設(shè)備描述符2 配置描述符3 字符描述符4 接口描述符5 端點(diǎn)描述符上面的描述符之間有一定的關(guān)系,一個(gè)設(shè)備只有一個(gè)設(shè)備描述符,而一個(gè)設(shè)備描述符可以包含多個(gè)配置描述符,而一個(gè)配置描述符可以包含多個(gè)接口描述符,一個(gè)接口使用了幾個(gè)端點(diǎn),就有幾個(gè)端點(diǎn)描述符。這間描述符是 用一定的字段構(gòu)成的,分別如下說(shuō)明:1、設(shè)備描述符
25、struct _DEVICE_DEscriptOR_STRUCT BYTE bLength;/設(shè)備描述符的字節(jié)數(shù)大小,為 0x12BYTE bDescriptorType; / 描 述 符 類(lèi) 型 編 號(hào), 為 0x01 WORD bcdUSB; /USB 版本號(hào)BYTE bDeviceClass; /USB 分配的設(shè)備類(lèi)代碼,0x010xfe為標(biāo)準(zhǔn)設(shè)備類(lèi),Oxff 為廠商自定義類(lèi)型/0x00不是在設(shè)備描述符中定義的,如 HIDBYTE bDeviceSubClass; /usb 分配的子類(lèi)代碼,同上,值由USB規(guī)定和分 配的BYTE bDeviceProtocl; /USB 分配的設(shè)備協(xié)議代
26、碼,同上BYTE bMaxPacketSizeO; / 端點(diǎn)0的最大包的大小WORD idVendor;/廠商編號(hào)WORD idProduct;/產(chǎn)品編號(hào)WORD bcdDevice;/設(shè)備出廠編號(hào)BYTE iManufacturer;/描述廠商字符串的索引BYTE iProduct; / 描述產(chǎn)品字符串的索引BYTE iSerialNumber; / 描述設(shè)備序列號(hào)字符串的索引BYTE bNumConfiguration; / 可能的配置數(shù)量2、配置描述符 struct _CONFIGURATION_DEscriptOR_STRUCT 配置所返回的所有數(shù)量的大小 此配置所支持的接口數(shù)量 /Set_Configuration 命令需要的參數(shù)值 描述該配置的字符串的索引值 供電模式的選擇BYTE bLength; / 設(shè) 備 描 述 符 的 字 節(jié) 數(shù) 大 小 , 為 0x12 BYTE bDescriptorType; / 描述符類(lèi)型編號(hào)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【語(yǔ)文課件】井岡翠竹 (鄂教版)課件
- 《基層醫(yī)院感染培訓(xùn)》課件
- 三年級(jí)寫(xiě)作入門(mén)指導(dǎo)
- 平行和相交(黃玉紅的課件)
- 【大學(xué)課件】市場(chǎng)營(yíng)銷(xiāo)調(diào)研與預(yù)測(cè)
- 一步一步走啊走視頻專(zhuān)用課件
- 《第三節(jié) 合理發(fā)展交通運(yùn)輸》課件1
- 固定收益策略報(bào)告:資金下還是短端上
- 《導(dǎo)師孫名松教授》課件
- 單位管理制度展示大全【職工管理篇】十篇
- 代發(fā)工資委托書(shū)格式樣本
- YBT 6246-2024《核電工程用熱軋帶肋鋼筋》
- 管桁架焊接 (1)講解
- 大學(xué)助農(nóng)直播創(chuàng)業(yè)計(jì)劃書(shū)
- 心理健康教育國(guó)內(nèi)外研究現(xiàn)狀
- 燃?xì)饨?jīng)營(yíng)安全重大隱患判定標(biāo)準(zhǔn)課件
- 《經(jīng)濟(jì)學(xué)原理》題庫(kù)(含參考答案)
- 廣州社會(huì)保險(xiǎn)退款申請(qǐng)表
- 2024年時(shí)事政治熱點(diǎn)題庫(kù)200道附答案(基礎(chǔ)題)
- 2024年知識(shí)競(jìng)賽-競(jìng)彩知識(shí)筆試參考題庫(kù)含答案
- (正式版)SHT 3045-2024 石油化工管式爐熱效率設(shè)計(jì)計(jì)算方法
評(píng)論
0/150
提交評(píng)論