![USB筆記一頓亂記_第1頁](http://file4.renrendoc.com/view/54f583298798c928f14d2c988ec964b4/54f583298798c928f14d2c988ec964b41.gif)
![USB筆記一頓亂記_第2頁](http://file4.renrendoc.com/view/54f583298798c928f14d2c988ec964b4/54f583298798c928f14d2c988ec964b42.gif)
![USB筆記一頓亂記_第3頁](http://file4.renrendoc.com/view/54f583298798c928f14d2c988ec964b4/54f583298798c928f14d2c988ec964b43.gif)
![USB筆記一頓亂記_第4頁](http://file4.renrendoc.com/view/54f583298798c928f14d2c988ec964b4/54f583298798c928f14d2c988ec964b44.gif)
![USB筆記一頓亂記_第5頁](http://file4.renrendoc.com/view/54f583298798c928f14d2c988ec964b4/54f583298798c928f14d2c988ec964b45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、47/47USB筆記一頓亂記。x51自信是永不枯竭的源泉,自信是奔騰不息的波濤,自信是急流奮進(jìn)的渠道,自信是真正的成功之母。US通信可以分為兩大類:一類用來設(shè)置USB設(shè)備的配置,另一類用來設(shè)置應(yīng)用程序的通信.USB傳輸有4種類型:1控制傳輸(control rnsfer)2.中斷傳輸(iterptransfer)3。批量傳輸(ulk trnsfe)。實(shí)時(shí)傳輸(shon transfr)傳輸由事務(wù)(transaction)組成,每一筆事務(wù)由信息包(packet)所組成,每一個(gè)信息包則包含傳輸?shù)男畔?。每一個(gè)傳輸可能包含一筆或多筆事務(wù),控制傳輸永遠(yuǎn)有多筆事務(wù),因?yàn)樗卸鄠€(gè)階段,每一個(gè)階段包含一筆或多
2、筆事務(wù)。由于所有的傳輸都使用同一個(gè)數(shù)據(jù)路徑,每一筆事務(wù)必須包含有設(shè)備的地址,才能識別是那一個(gè)設(shè)備的事務(wù)。每一筆事務(wù)的開始,是由主機(jī)發(fā)出一個(gè)區(qū)塊的信息開始.此區(qū)塊信息包含有接收設(shè)備的地址,以及一個(gè)在設(shè)備內(nèi)稱為端點(diǎn)(edpoint)的特定位置.主機(jī)也有接收與傳送數(shù)據(jù)的緩沖區(qū),不過主機(jī)并沒有端點(diǎn),而是當(dāng)作與設(shè)備端點(diǎn)通信的出發(fā)點(diǎn)(startng ot)設(shè)備端點(diǎn):一個(gè)USB設(shè)備中的惟一可尋址部分,是主機(jī)與設(shè)備之間通信的來源或目的。一個(gè)設(shè)備端點(diǎn)只能在單方向傳輸數(shù)據(jù),不過控制端點(diǎn)(contro pint)是例外,它可以雙向傳輸數(shù)據(jù)。每一個(gè)設(shè)備端點(diǎn)的惟一地址,需要有一個(gè)端點(diǎn)號碼以及方向。端點(diǎn)號碼可以是0-1,
3、方向如果是輸入I,表示流向主機(jī);方向如果是輸出OUT,則表示流出主機(jī)。如果作為控制傳輸?shù)亩它c(diǎn),必須設(shè)置成雙向傳輸.所以一個(gè)控制端點(diǎn)會有一對輸入與輸出端點(diǎn),來分享同一個(gè)端點(diǎn)號碼。每一個(gè)設(shè)備都必須將端點(diǎn)0(Endpoint 0)設(shè)置成一個(gè)控制端點(diǎn)。除此外,很少需要額外的控制端點(diǎn).除了控制傳輸之外,其他傳輸都是單向傳輸“數(shù)據(jù)”,不過“狀態(tài)與“控制”信息,則可能反向進(jìn)行。除了端點(diǎn)0之外,一個(gè)全速設(shè)備可以有30個(gè)額外的端點(diǎn)。端點(diǎn)號碼由1-1,每一個(gè)號碼同時(shí)支持輸入與輸出.一個(gè)低速設(shè)備則只能有兩個(gè)額外的端點(diǎn),方向可以任意組合。事務(wù)的類型分類如下:事務(wù)類型 數(shù)據(jù)來源 使用此事務(wù)的傳輸類型 內(nèi)容 輸入 設(shè)備
4、所有傳輸類型 一般數(shù)據(jù) 輸出 主機(jī) 所有傳輸類型 一般數(shù)據(jù)設(shè)置(set)主機(jī) 控制傳輸 要求 任何的傳輸都可能使用輸入或輸出事務(wù),但是只有控制傳輸使用設(shè)置事務(wù).當(dāng)設(shè)備收到包含設(shè)備地址的輸出或設(shè)置事務(wù)時(shí),它將接收到的數(shù)據(jù)存儲在適合的端點(diǎn)位置,然后觸發(fā)一個(gè)中斷.設(shè)備的中斷服務(wù)程序會處理接收到的數(shù)據(jù),然后做適當(dāng)?shù)奶幚?。?dāng)設(shè)備收到包含設(shè)備地址的輸入事務(wù)時(shí),如果設(shè)備有準(zhǔn)備傳送給主機(jī)的數(shù)據(jù),它會從指定的端點(diǎn)送出數(shù)據(jù),然后觸發(fā)一個(gè)中斷。設(shè)備的中斷程序會做適當(dāng)?shù)奶幚?,然后做適當(dāng)?shù)奶幚?在一個(gè)傳輸發(fā)生之前,主機(jī)與設(shè)備之間必須建立一個(gè)管道(pie)。UB的管道并不是一個(gè)實(shí)際的對象,它只是設(shè)備的端點(diǎn)與主機(jī)控制器的軟
5、件之間的連接。每一個(gè)設(shè)備都會有一個(gè)默認(rèn)控制管道(Default onoPipe),此默認(rèn)控制管道使用端點(diǎn).端點(diǎn)的描述符,用來告訴主機(jī)如何與該端點(diǎn)通信。描述符包括端點(diǎn)的地址、使用的傳輸類型、數(shù)據(jù)信息包的最大大小、以及傳輸?shù)臅r(shí)距(intervl)等。在實(shí)時(shí)傳輸與中斷傳輸時(shí),主機(jī)會在建立管道之前檢驗(yàn)有無足夠的帶寬。如果有足夠的帶寬,主機(jī)會接受設(shè)置的要求,并且保證傳輸有足夠的時(shí)間。如果沒有足夠的帶寬,主機(jī)會拒絕設(shè)置的要求。并且要求軟件必須重新嘗試一次,可能是等待有足夠的帶寬,或是選擇較小帶寬的設(shè)置??刂苽鬏敚核荱SB規(guī)范中,惟一有定義函數(shù)的傳輸類型??刂苽鬏斪屩鳈C(jī)讀取設(shè)備的信息,設(shè)置設(shè)備的地址,以及
6、選擇設(shè)置配置。所有的USB設(shè)備都必須 支持控制傳輸.中斷傳輸:使用在設(shè)備必須定時(shí)接受主機(jī)或設(shè)備注意的場合。除了控制傳輸之外,中斷傳輸是低速設(shè)備惟一傳輸數(shù)據(jù)的方式.鼠標(biāo)與鍵盤利用中斷傳輸,來傳送鼠標(biāo)移動與按鍵的數(shù)據(jù)。設(shè)備并不一定要支持中斷傳輸,但是一個(gè)特定的設(shè)備類別可能需要它。批量傳輸使用在傳輸速率不是很重要的場合,例如傳送文件給打印機(jī)或是從掃描儀接收數(shù)據(jù)。如果總線被其他必須保證速率的傳輸所占據(jù)時(shí),批量傳輸就必須等待。不過當(dāng)總線閑置時(shí),批量傳輸?shù)乃俾室彩呛芸斓?只有全速與高速的設(shè)備才支持批量傳輸。設(shè)備并不一定要支持批量傳輸,但是一個(gè)特定的設(shè)備類別可能需要它.實(shí)時(shí)傳輸:有保證的傳輸速率,但是沒有錯(cuò)
7、誤的檢驗(yàn)。使用實(shí)時(shí)傳輸?shù)脑O(shè)備包括音頻設(shè)備,來實(shí)時(shí)播放音頻。當(dāng)收到錯(cuò)誤的數(shù)據(jù)時(shí),實(shí)時(shí)傳輸是惟一不會自動重新傳送的類型,所以必須能夠容忍偶爾發(fā)生的錯(cuò)誤。只有全速與高速的設(shè)備支持實(shí)時(shí)傳輸.同樣并不一定所有的設(shè)備要支持實(shí)時(shí)傳輸.管道分為消息管道(mssage ip)和流管道(steam pipe)。消息管道是雙向的管道,流管道則是沒有方向的管道.控制傳輸是惟一使用雙向的消息管道的傳輸,其他的傳輸則是使用單方向的流管道。在消息管道中,每一個(gè)傳輸以一個(gè)包含要求的設(shè)置事務(wù)開始。要完成這個(gè)傳輸,主機(jī)與設(shè)備可能交換數(shù)據(jù)與狀態(tài)信息,或是設(shè)備只傳送狀態(tài)信息。如果設(shè)備支持某個(gè)要求,它會執(zhí)行該要求的動作。如果設(shè)備不支持
8、該要求,它會反映一個(gè)碼來表示不支持。USB規(guī)范并沒有定義流管道的數(shù)據(jù)格式,設(shè)備只是接收傳來的數(shù)據(jù),主機(jī)的軟件或是設(shè)備的固件再做適當(dāng)?shù)奶幚?。傳輸?shù)某跏蓟涸谠O(shè)備與其驅(qū)動程序之間要開始通信之前,傳輸必須先初始化.應(yīng)用程序使用idos提供的標(biāo)準(zhǔn)的A,來使用句柄(andle)打開一個(gè)設(shè)備的通信。應(yīng)用程序使用該句柄以及AP,來調(diào)用設(shè)備的驅(qū)動程序并且開始傳輸。應(yīng)用程序可以要求設(shè)備傳送數(shù)據(jù)過來,或是將數(shù)據(jù)傳送給設(shè)備。每一個(gè)傳輸包含一筆或多筆事務(wù)(transacton),而每一筆事務(wù)包含一個(gè)、兩個(gè)或是三個(gè)信息包(acket)。每一個(gè)信息包包含:一個(gè)信息包標(biāo)識符(packtentfir,PI),CR校驗(yàn)位,以及
9、額外的信息。每一筆事務(wù)包含一個(gè)令牌(oken)信息包,并且可能包含一個(gè)數(shù)據(jù)(data)與或聯(lián)絡(luò)(handhke)信息包(這時(shí)候的信息包也可以稱為相位).一個(gè)完整的傳輸,可能需要多個(gè)幀才能完成,但是一個(gè)事務(wù)是單一的通信,必須完全不能被中斷。在總線上的其他通信,不可以插入一筆事務(wù)之內(nèi)。如果是少量數(shù)據(jù)的傳輸,可能需要一筆事務(wù)。如果數(shù)據(jù)量很大,該傳輸可能分成多筆事務(wù),將數(shù)據(jù)分配在每一筆事務(wù)內(nèi)。事務(wù)的相位:每一筆事務(wù)可以有三個(gè)相位(phse),或是少于三個(gè)。這三個(gè)相位依序產(chǎn)生,分別是令牌(tokn)、數(shù)據(jù)(ata)、聯(lián)絡(luò)(hndshake)信息包。每一個(gè)相位包含一個(gè)或兩個(gè)“事務(wù)信息包”,每一個(gè)事務(wù)信息包
10、是一個(gè)區(qū)塊的固定格式的信息。每一個(gè)事務(wù)信息包的信息是以一個(gè)信息包標(biāo)識符(Pke ,PD)開頭,用來作為識別之用.依據(jù)事務(wù)各類的不同,ID后面可能接著端點(diǎn)地址、數(shù)據(jù)、狀態(tài)信息,或是一個(gè)幀號碼以及錯(cuò)誤檢驗(yàn)位.在事務(wù)的令牌相位(tokn ha)中,主機(jī)傳送一個(gè)通信要求給一個(gè)令牌信息包。PD指示此事務(wù)的類型,例如輸入、輸出、Setp、或是SO(幀開始)。幀開始是一個(gè)時(shí)間參考值,主機(jī)在全速時(shí)以一毫秒的時(shí)距送出,在高速時(shí)以125us的時(shí)距送出。幀開始還包含一個(gè)幀號碼(ramenme),此號碼會加一,當(dāng)達(dá)到最大值時(shí)即恢復(fù)初值.幀號碼表示幀的計(jì)數(shù),所以在一個(gè)幀的個(gè)微幀會使用相同的號碼.端點(diǎn)可能會與幀開始同步,
11、或是使用幀計(jì)數(shù)來當(dāng)作時(shí)間的參考值。幀開始的令牌同時(shí)還會避免讓設(shè)備在沒有傳輸時(shí)進(jìn)入低耗電的掛起狀態(tài).低速的設(shè)備看不到幀開始(OF)信息包,低速設(shè)備的集線器使用一個(gè)較簡單的信息包結(jié)尾(do-ake,EOP)信號,每一個(gè)幀送出一次.與全速設(shè)備一樣,O信號會避免低速設(shè)備,進(jìn)入低耗電的掛起狀態(tài)。在事務(wù)的數(shù)據(jù)相位(aaph)中,主機(jī)或設(shè)備可以在一個(gè)數(shù)據(jù)信息包內(nèi),傳輸任何形式的信息。PI指示此事務(wù)的數(shù)據(jù)交替(data ogle)值.當(dāng)此事務(wù)有多個(gè)數(shù)據(jù)信息包時(shí),數(shù)據(jù)交替值用來指示數(shù)據(jù)的位置。在事務(wù)的聯(lián)絡(luò)相位(ndake phase)中,主機(jī)或設(shè)備在一個(gè)聯(lián)絡(luò)信息包內(nèi),傳送設(shè)備或聯(lián)絡(luò)信息。ID用來儲存狀態(tài)碼(CK
12、,NA,STALL,或NYET)在特殊信息包類型的種PI中,一種只能在低速的設(shè)備使用,一種只能在高速的設(shè)備使用。其他的兩種則是使用在低或全速設(shè)備的UB20集線器,在高速時(shí)與主機(jī)的通信.使用在低速設(shè)備的特殊P是PRE,RE包含一個(gè)前置碼,來告訴主機(jī)下一個(gè)信息包是低速,而且集線器應(yīng)該啟用與任何連接的低速設(shè)備的通信。在低速與全速的總線中,PR PID放在傳送到低速設(shè)備的令牌、數(shù)據(jù)、以及聯(lián)絡(luò)信息包之前。高速的總線將R編入SLIT信息包內(nèi),所以它們不是分開傳送。設(shè)備送出的低速信息包不需要一個(gè)REPID,使用在高速設(shè)備的PD只有ING。主機(jī)在使用多個(gè)數(shù)據(jù)信息包的批量或控制傳輸送出數(shù)據(jù)之前,會先送出PIG來
13、確認(rèn)高速設(shè)備的端點(diǎn)是否忙中。設(shè)備則響應(yīng)一個(gè)狀態(tài)碼。IT D識別一個(gè)令牌信息包,是否是分割事務(wù)的一部分。US2的主機(jī)與集線器,會以高速來送出低速與全速的事務(wù),以節(jié)省總線的時(shí)間。信息包的串行化:每一筆事務(wù)都有一個(gè)令牌信息包,主機(jī)永遠(yuǎn)是令牌信息包的來源。主機(jī)使用信息包類型,接收設(shè)備與端點(diǎn),以及事務(wù)數(shù)據(jù)的方向來設(shè)置一筆事務(wù)。在全速總線的低速事務(wù)中,令牌信息包之前會有一個(gè)PRE信息包。如果是分割事務(wù),令牌信息包之前會一個(gè)LIT信息包。在令牌信息包之后可能會有數(shù)據(jù)信息包,視傳輸?shù)念愋鸵约霸O(shè)備有無數(shù)據(jù)要傳送而定.在令牌信息包中指定的方向,決定數(shù)據(jù)信息包是由主機(jī)或是設(shè)備傳。除了實(shí)時(shí)傳輸之外,所有傳輸類型在收到
14、數(shù)據(jù)信息包后都會傳回一個(gè)聯(lián)絡(luò)信息包。聯(lián)絡(luò)信息包包含一個(gè)狀態(tài)碼,來指示事務(wù)是是否成功。如果沒有收到預(yù)期的聯(lián)絡(luò)信息包,表示錯(cuò)誤情況更為嚴(yán)重。時(shí)間的限制:傳輸與端點(diǎn)的最大信息包大小,限制了一筆事務(wù)能夠容納的數(shù)據(jù)量。一個(gè)有多筆事務(wù)的傳輸可能需要多個(gè)幀,而且?guī)槐剡B續(xù).例如一個(gè)51字節(jié)的批量傳輸,在一個(gè)事務(wù)中的最大字節(jié)數(shù)目是4,所以整個(gè)傳輸至少需要筆事務(wù)。分割事務(wù):當(dāng)USB2。0的集線器與USB2.0的主機(jī)通信時(shí),如果中間沒有插入SB1.x的集線器,它們是以高速來通信。如果有低/全速的設(shè)備連接到US2.的集線器,集線器會自動轉(zhuǎn)換需要的速度。高速傳輸比全速快了40倍,比低速快了30倍。當(dāng)集線器交換低全速的
15、設(shè)備通信時(shí),它會使用分割事務(wù)。如US20主機(jī)-USB2.的集線器-低/全速的設(shè)備,順序如下:主機(jī)初始化并且完成與集線器的開始分割事務(wù)集線器初始化并且完成與設(shè)備的事務(wù)主機(jī)初始化并且完成與集線器的完成分割事務(wù)除了實(shí)時(shí)事務(wù)之外,一筆低/全速的事務(wù)通常需要兩種分割事務(wù): 一個(gè)或多個(gè)開始分割事務(wù)(startslit transction,SPLIT)來傳送信息給設(shè)備,以及一個(gè)或多個(gè)完成分割事務(wù)(cmpetsp tnsaction,CSPIT)讓設(shè)備接收信息。實(shí)時(shí)事務(wù)不使用完成分割事務(wù),因?yàn)闆]有信息需要傳回。分割事務(wù)讓總線更有效率,因?yàn)樗鼫p少了總線等待低/全速設(shè)備的響應(yīng)時(shí)間.中斷與實(shí)時(shí)傳輸有時(shí)間的限制,而
16、批量與控制傳輸則沒有。以批量與控制傳輸?shù)姆指钍聞?wù)為例,在開始分割事務(wù)的階段【主機(jī)初始化并且完成與集線器的開始分割事務(wù)】:()20主機(jī)送出開始分割令牌信息包(art-slit ten pacet,SSPLIT),后接通常的低或全速的令牌信息包,以及任何數(shù)據(jù)信息包。(2)設(shè)備的2。0集線器傳回AC或NAK。()此時(shí)主機(jī)可以自由使用總線來做其他的事務(wù),設(shè)備還不知道事務(wù)的內(nèi)容。()當(dāng)集線器傳回ACK后,它必須完成與設(shè)備的事務(wù).以及繼續(xù)處理主機(jī)或其他連續(xù)設(shè)備,所傳來的任何其他事務(wù)。在完成事務(wù)的階段【集線器初始化并且完成與設(shè)備的事務(wù)】:(1)集線器將從主機(jī)收到的信息包,轉(zhuǎn)換成適合的速度,然后傳送給設(shè)備。(
17、2)集線器儲存設(shè)備的響應(yīng).依據(jù)事務(wù)的不同,設(shè)備可能傳回?cái)?shù)據(jù)信息包、一個(gè)聯(lián)絡(luò)信息包、或是不傳回。(3)傳送到設(shè)備時(shí),事務(wù)以預(yù)期的低或全速完成。(4)設(shè)備不知道這是一個(gè)分割事務(wù)。(5)主機(jī)還沒收到設(shè)備的響應(yīng).(6)當(dāng)集線器完成與設(shè)備的事務(wù)后,主機(jī)可以初始化其他集線器也必須處理的總線交通。這兩個(gè)函數(shù)由集線器的不同硬件模塊來處理。()除了實(shí)時(shí)輸出事務(wù)以外的所有事務(wù),如果主機(jī)認(rèn)為有足夠的時(shí)間完成與設(shè)備的事務(wù),它會開始與集線器的完成分割事務(wù)。在完成分割事務(wù)的階段【主機(jī)初始化并且完成與集線器的完成分割事務(wù)】:()2。主機(jī)送出一個(gè)完成分割令牌信息包(omplespli toknpacet,CSPLIT),后接
18、通常的低或全速的令牌信息包,來要求集線器從設(shè)備傳來的數(shù)據(jù)或狀態(tài)信息。(2)集線器傳回主機(jī)要求的數(shù)據(jù)或狀態(tài)碼,來完成此事務(wù)。(3)主機(jī)不會傳回CK()如果集線器沒有信息包要傳回,它傳回一個(gè)NYET狀態(tài)碼,主機(jī)會稍后再讀取.(5)設(shè)備沒有完成分割事務(wù)的設(shè)置,因?yàn)樗耙呀?jīng)與集線器完成事務(wù)。中斷與實(shí)時(shí)傳輸?shù)姆指钍聞?wù),其過程與批量和控制傳輸?shù)姆指钍聞?wù)類似,但是有比較嚴(yán)格的時(shí)間限制.因?yàn)橹袛嗯c實(shí)時(shí)傳輸?shù)姆指钍聞?wù),是為了讓主機(jī)盡快地接收到設(shè)備準(zhǔn)備的數(shù)據(jù),以及傳輸數(shù)據(jù)到設(shè)備。為了讓傳輸盡快完成,有大信息包的實(shí)時(shí)事務(wù)會使用多個(gè)開始與完成分割事務(wù),然后在每一筆分割事務(wù)中傳輸部分的數(shù)據(jù)。與批量和控制傳輸不同的是,
19、中斷與實(shí)時(shí)傳輸?shù)拈_始分割事務(wù)沒有聯(lián)絡(luò)相位。只有開始分割令牌,后接一個(gè)輸入、輸出或設(shè)置令牌.如果是輸出或設(shè)置事務(wù),后面還會有數(shù)據(jù)。在中斷事務(wù)中集線器會將開始分割,編排在預(yù)期開始與設(shè)備事務(wù)之前的微幀。例如一個(gè)幀中的微幀,以號碼依序編號為0到Y(jié)。如果開始分割是Y,集線器與設(shè)備的事務(wù)最早會在Y1開始.設(shè)備傳回到主機(jī)的數(shù)據(jù)或聯(lián)絡(luò)響應(yīng),最早會在Y2開始.當(dāng)設(shè)備的事務(wù)真的發(fā)生時(shí),前一個(gè)事務(wù)的結(jié)果與補(bǔ)充的位會有影響。所以主機(jī)將完成分割事務(wù),編排在Y,Y,與Y4。如果集線器在完成分割時(shí)還沒有信息傳回,它會傳回一個(gè)NYET狀態(tài)碼,然后主機(jī)再試一次。聯(lián)絡(luò)信號 :USB使用狀態(tài)與控制或聯(lián)絡(luò)信息來管理數(shù)據(jù)的流動.如果接
20、口使用硬件的聯(lián)絡(luò),特定的信號線會攜帶聯(lián)絡(luò)的信息,如果接口使用軟件的聯(lián)絡(luò),攜帶數(shù)據(jù)的信號線同時(shí)也攜帶聯(lián)絡(luò)碼。B使用軟件的聯(lián)絡(luò).除了實(shí)時(shí)傳輸外,事務(wù)是否成功是以一個(gè)狀態(tài)碼來指示。在控制傳輸中,狀態(tài)階段(Satus Sg)會激活一個(gè)設(shè)備,來報(bào)告整個(gè)傳輸是否成功。大部分的聯(lián)絡(luò)信號是在聯(lián)絡(luò)信息包中傳輸,有些則是使用數(shù)據(jù)信息包。S定義的聯(lián)絡(luò)信號狀態(tài)碼是ACK、NA、STALL、NET、E。AK:ACK(aknowedge)狀態(tài)碼表示主機(jī)或是設(shè)備已經(jīng)成功地接收到數(shù)據(jù)。設(shè)備必須在設(shè)置事務(wù)的聯(lián)絡(luò)信息包中傳回K,同時(shí)也可以在輸出事務(wù)的聯(lián)絡(luò)信息包中傳回AK。主機(jī)則是在輸入事務(wù)的聯(lián)絡(luò)信息包中傳回ACK。NK:NAK(
21、negiv aknowledge)狀態(tài)碼表示設(shè)備在忙中。如果主機(jī)在設(shè)備忙時(shí)傳送數(shù)據(jù)給設(shè)備,設(shè)備會在聯(lián)絡(luò)信息包傳回NAK。如果主機(jī)在設(shè)備沒數(shù)據(jù)傳送時(shí)要求數(shù)據(jù),設(shè)備會在數(shù)據(jù)信息包中傳回NK.NK代表暫時(shí)的狀態(tài),主機(jī)會稍后重新嘗試。主機(jī)不會送出NAK狀態(tài)碼.實(shí)時(shí)的端點(diǎn)不支持NA,因?yàn)樗鼪]有聯(lián)絡(luò)信息包來傳回NA.如果主機(jī)或設(shè)備漏了實(shí)時(shí)數(shù)據(jù),該數(shù)據(jù)就此消失.STAL:它有種意義:(1)不支持的控制要求()控制要求失?。?)端點(diǎn)失敗當(dāng)設(shè)備接收到端點(diǎn)不支持的控制傳輸要求時(shí),設(shè)備會傳回一個(gè)STAL給主機(jī).如果設(shè)備支持該控制傳輸要求,但是無法響應(yīng)要求,它也會傳回一個(gè)TLL給主機(jī)。例如主機(jī)送出一個(gè)Set_onfi
22、gurain要求,來要求設(shè)備配置為2.但是設(shè)備只支持配置1,這時(shí)設(shè)備會傳回一個(gè)S.要清除STLL狀態(tài),主機(jī)必須送出另一個(gè)設(shè)置信息包,來開始一個(gè)新的控制傳輸。當(dāng)端點(diǎn)的暫停(Halt)特性設(shè)置時(shí),設(shè)備也會傳回STALL。因?yàn)槎它c(diǎn)的暫停特性,表示端點(diǎn)無法傳送或接收數(shù)據(jù)。批量與中斷端點(diǎn)必須支持功能的STAL(funcionalTAL)??刂贫它c(diǎn)也可以支持功能的TALL,不過UB不建議您這樣做,實(shí)時(shí)端點(diǎn)不支持AL,因?yàn)樗鼪]有聯(lián)絡(luò)信息包來傳回STALL。當(dāng)主機(jī)收到一個(gè)功能的STAL時(shí),它會丟棄所有給設(shè)備的要求.在送出成功的要求來清除設(shè)備的暫停特性之前,主機(jī)不會恢復(fù)通信。NYET:NY表示not yet。只
23、有高速設(shè)備才使用NET。高速的批量與控制傳輸有一個(gè)增強(qiáng)的協(xié)議,讓主機(jī)可以在送出數(shù)據(jù)前先知道設(shè)備是否已經(jīng)準(zhǔn)備好接收。在低速與全速時(shí),當(dāng)主機(jī)要在控制、批量與中斷傳輸中送出數(shù)據(jù)時(shí),它會送出令牌與數(shù)據(jù)信息包。然后從事務(wù)的聯(lián)絡(luò)信息包中,收到設(shè)備的響應(yīng)。如果設(shè)備還沒有準(zhǔn)備好,它會傳回一個(gè)AK讓主機(jī)稍后再重新嘗試。如果數(shù)據(jù)信息包很大,而且設(shè)備常常還沒準(zhǔn)備好,這種模式的傳輸會浪費(fèi)許多的總線時(shí)間.多數(shù)據(jù)信息包的高速批量與控制事務(wù),有更好的處理方式.在收到一個(gè)數(shù)據(jù)信息包后,設(shè)備的端點(diǎn)可以傳回一個(gè)YT聯(lián)絡(luò)信號.這個(gè)NYET表示數(shù)據(jù)可以接受,但是端點(diǎn)還沒有準(zhǔn)備好接收另一個(gè)數(shù)據(jù)信息包。當(dāng)主機(jī)認(rèn)為設(shè)備可能準(zhǔn)備好時(shí),它會送
24、出一個(gè)ING令牌信息包。設(shè)備則是傳回一個(gè)ACK來表示O,或是傳回NAK或TALL來表示不OK。只傳送一個(gè)PING信息包,比傳送整個(gè)數(shù)據(jù)信息包來的有效率。即使端點(diǎn)對PIN或輸出響應(yīng)ACK狀態(tài)碼,它仍然可以在收到后來的數(shù)據(jù)信息包時(shí)傳回NAK,不過此種情況比較罕見.此時(shí)主機(jī)必須再使用另一個(gè)PNG,來重試一次。2。0的集線器也可能在完成分割事務(wù)時(shí)使用ET,主機(jī)與低全速的設(shè)備則不會送出T??刂苽鬏?shù)臓顟B(tài):AC、NK、SAL除了用在表示事務(wù)的狀態(tài)外,也可以用來表示控制傳輸?shù)某晒εc否。在主機(jī)到設(shè)備的數(shù)據(jù)階段(aa stage)中,控制傳輸?shù)耐瓿膳c否由一個(gè)零長度數(shù)據(jù)信息包的額外狀態(tài)碼來表示.如果是控制寫入(o
25、ntrolWit)的傳輸,設(shè)備在數(shù)據(jù)階段(Daasage)接收數(shù)據(jù)。傳輸?shù)臓顟B(tài)在狀態(tài)階段(Sttsstge)的數(shù)據(jù)信息包內(nèi)傳回.一個(gè)零長度數(shù)據(jù)信息包表示傳輸成功,否則設(shè)備會傳回NA或ALL.此時(shí)主機(jī)在狀態(tài)階段的聯(lián)絡(luò)信息包內(nèi)傳回一個(gè)AC,表示它已經(jīng)收到響應(yīng)。如果是控制讀取(contoRead)的傳輸,主機(jī)在數(shù)據(jù)階段接收數(shù)據(jù)。設(shè)備在狀態(tài)階段的聯(lián)絡(luò)信息包內(nèi)傳回傳輸?shù)臓顟B(tài)。主機(jī)通常會等待接收所有在數(shù)據(jù)階段的信息包,然后在狀態(tài)階段發(fā)出一個(gè)零長度的數(shù)據(jù)信息包.設(shè)備使用ACK、NAK或STLL來響應(yīng)。如果主機(jī)在送出所有數(shù)據(jù)信息包前開始狀態(tài)階段,設(shè)備必須放棄數(shù)據(jù)階段并且傳回一個(gè)狀態(tài)碼。數(shù)據(jù)的檢驗(yàn):USB的信息
26、包包含了錯(cuò)誤檢驗(yàn)的位,讓接收端識別接收的數(shù)據(jù)與傳送的數(shù)據(jù)是否符合。如果是需要多筆事務(wù)的傳輸,一個(gè)數(shù)據(jù)交替數(shù)值(datatoggl )會保持發(fā)送端與接收端同步,來保證沒有事務(wù)會遺失掉。(1)錯(cuò)誤檢驗(yàn)位(2)數(shù)據(jù)交替位在需要多筆事務(wù)的傳輸中,數(shù)據(jù)交替位(dat-toggl bit)通過讓發(fā)送端與接收端同步,來保證沒有事務(wù)遺失。數(shù)據(jù)交替位是包含在輸入與輸出事務(wù)的令牌信息包的PID字段中,AT0是001的碼,DAA1是1011的碼,所以位表示數(shù)據(jù)交替的狀態(tài)。在控制器芯片中,一個(gè)緩存器位通常用來指示數(shù)據(jù)交替的狀態(tài)。此位的另一個(gè)名稱是DATA0/,或是DATA1/0(!)。發(fā)送端與接收端都會追蹤數(shù)據(jù)交替的
27、狀態(tài).在配置設(shè)備時(shí),兩者的位都設(shè)置成DAT0。當(dāng)接收到端檢測到一筆進(jìn)來的數(shù)據(jù)事務(wù)時(shí),它會將收到的數(shù)據(jù)交替位與它自己的數(shù)據(jù)交替狀態(tài)做比較。如果該位符合,接收端會交替它的位,然后傳回一個(gè)CK聯(lián)絡(luò)信息包給發(fā)送端。此AK信號讓發(fā)送端交替它的位??刂苽鬏斢袃蓚€(gè)功能:(1)攜帶SB規(guī)范定義的要求,讓主機(jī)了解設(shè)備的功能與設(shè)置配置(2)攜帶群組或廠商定義的要求每一個(gè)設(shè)備必須在端點(diǎn)(EndPont0)的默認(rèn)管道,支持控制傳輸??刂苽鬏斒褂脙蓚€(gè)或三個(gè)階段的結(jié)構(gòu),包括設(shè)置、數(shù)據(jù)(選擇性的)與狀態(tài)。每一個(gè)階段可以包含一筆或多筆事務(wù)。每一個(gè)控制傳輸都必須有設(shè)置與狀態(tài)階段,數(shù)據(jù)階段則是選擇性的。由于控制傳輸是雙向的傳輸,
28、所以控制傳輸?shù)南⒐艿?同時(shí)使用端點(diǎn)的輸入與輸出地址 。在控制寫入(control write)的傳輸中,在數(shù)據(jù)階段的數(shù)據(jù)是由主機(jī)流向設(shè)備。在控制讀取(conrol ead)的傳輸中,在數(shù)據(jù)階段的數(shù)據(jù)是由設(shè)備流向主機(jī).在設(shè)置階段,主機(jī)送出要求來開始設(shè)置事務(wù).令牌信息包包含有一個(gè)P,來指示這是一個(gè)控制傳輸。數(shù)據(jù)信息包包含有要求的信息,例如要求號碼,此傳輸有無數(shù)據(jù)階段,以及數(shù)據(jù)傳輸?shù)姆较虻?USB規(guī)范定義了11個(gè)標(biāo)準(zhǔn)的要求.有些要求設(shè)備必須響應(yīng),例如設(shè)備的地址。另外的要求,設(shè)備可以傳回一個(gè)狀態(tài)碼來表示是否支持。設(shè)備也可能支持群組或是廠商定義的要求.如果數(shù)據(jù)階段存在的話,此階段會包含有一筆或多筆輸入
29、或輸出事務(wù).依照要求的種類,數(shù)據(jù)事務(wù)的來源可能是主機(jī)或是外圍設(shè)置。在數(shù)據(jù)階段的所有數(shù)據(jù)信息包,必須是相同方向。高速的控制寫入傳輸,在數(shù)據(jù)階段有一個(gè)以上的數(shù)據(jù)信息包。如果設(shè)備在收到一個(gè)數(shù)據(jù)信息包后傳回NYET,主機(jī)會在送出下一個(gè)信息包前使用ING協(xié)議。在狀態(tài)階段,包含有一筆輸入或輸出事務(wù),設(shè)備會報(bào)告上一個(gè)階段是否成功。在狀態(tài)階段的數(shù)據(jù)信息包來源,是上一筆數(shù)據(jù)事務(wù)的數(shù)據(jù)接收者.如果沒有數(shù)據(jù)階段,送出狀態(tài)階段的數(shù)據(jù)信息包的是設(shè)備。設(shè)備在狀態(tài)階段送出的數(shù)據(jù)或聯(lián)絡(luò)信息包,包含有一個(gè)狀態(tài)碼來指示設(shè)置與數(shù)據(jù)階段的傳輸是否成功。如果主機(jī)在高速總線上,執(zhí)行低/全速設(shè)備的控制傳輸.主機(jī)會使用分割事務(wù),來執(zhí)行所傳輸
30、事務(wù)。信息包大?。涸跀?shù)據(jù)階段的數(shù)據(jù)信息包大小,視設(shè)備的速度而定。如果是低速的設(shè)備,數(shù)據(jù)信息包大小最大是8字節(jié)。如果是全速的設(shè)備,數(shù)據(jù)信息包大小最大可以是、1、2或64字節(jié).如果是高速的設(shè)備,數(shù)據(jù)信息包的大小必須是4字節(jié)。此大小只包含數(shù)據(jù)信息包的傳輸信息,而不包含I與RC位。除了最后一個(gè)數(shù)據(jù)信息包,所有數(shù)據(jù)信息包都必須是最大信息包大小。主機(jī)在檢測時(shí)從描述符中,讀取最大信息包的大小.對默認(rèn)控制管道而言,大小為設(shè)備描述符的大小。對其他控制端點(diǎn)而言,大小為端點(diǎn)描述符的大小。在有些控制讀取傳輸中,設(shè)備傳回的數(shù)據(jù)量可能不同。如果設(shè)備傳回的數(shù)據(jù)量比要求的字節(jié)少,在響應(yīng)下一個(gè)輸入令牌信息包時(shí),設(shè)備應(yīng)該傳回一個(gè)
31、零字節(jié)的數(shù)據(jù)信息包,來指示已經(jīng)沒有數(shù)據(jù)可傳回.傳輸速度:主機(jī)控制器保留了部分帶寬給控制傳輸用,如果是低/全速比值是%,如果是高速此值是20。如果控制傳輸不需要用到這么多,批量傳輸可以使用剩下來的的部分。如果總線有不使用的帶寬,控制傳輸可以使用多于保留的值。主機(jī)會盡量將能使用的時(shí)間,分配給所有的傳輸。一個(gè)幀或微幀可以包含多筆事務(wù),一筆事務(wù)也可以分配在不同的幀或微幀中.USB并沒有規(guī)定控制傳輸只能使用在設(shè)備配置上,換句話說控制傳輸也可以用來傳輸其他的數(shù)據(jù).控制傳輸使用數(shù)據(jù)交替位,來保證沒有數(shù)據(jù)遺失掉。在一個(gè)控制讀取傳輸?shù)臄?shù)據(jù)階段,主機(jī)在收到一個(gè)設(shè)備傳來的數(shù)據(jù)信息包后,通常會傳回一個(gè)ACK,然后送出
32、一個(gè)輸出令牌信息包,來開始狀態(tài)階段。批量傳輸:批量傳輸(blk transfer)適合使用在時(shí)間不重要的傳輸.批量傳輸可以傳輸大量的數(shù)據(jù)而不會阻塞總線,因?yàn)樗鼤屍渌麄鬏旑愋拖葓?zhí)行,等待有可以傳輸?shù)臅r(shí)間。使用批量傳輸?shù)陌◤闹鳈C(jī)傳送數(shù)據(jù)到打印機(jī),從掃描儀傳送數(shù)據(jù)給主機(jī),以及讀/寫磁盤等。在一個(gè)閑置的總線中,批量傳輸是最快的傳輸類型.只有全速與高速設(shè)備,才可以使用批量傳輸。批量傳輸包含一個(gè)或多個(gè)輸入或輸出事務(wù)。批量傳輸是單方向的的傳輸,所有的事務(wù)必須全部是輸入事務(wù),或是全部是輸出事務(wù)。要做雙向的傳輸,必須有另一個(gè)分開的管道。當(dāng)所要求的數(shù)據(jù)量已經(jīng)傳輸完,或者當(dāng)一個(gè)信息包含有少于最大數(shù)據(jù)(包含一個(gè)零
33、長度信息包)時(shí),批量傳輸即結(jié)束。一個(gè)全速的批量傳輸,最大的信息包大小可以是8、16、32或6字節(jié)。高速的批量傳輸,最大的信息包大小必須是52字節(jié)。在檢測設(shè)備的過程中,主機(jī)從設(shè)備的描述符中讀取每一個(gè)批量管道的最大信息包大小。數(shù)據(jù)傳輸?shù)牧靠梢孕∮?、等于或大于最大信息包的大小。如果?shù)據(jù)沒有辦法放在一個(gè)信息包內(nèi),主機(jī)會使用多筆事務(wù)來完成傳輸。中斷傳輸:中斷傳輸(inrup trnser)使用在必須在指定時(shí)間內(nèi)傳輸完的數(shù)據(jù)上。一般的應(yīng)用包括鍵盤、鼠標(biāo)、游戲桿以及集線器的狀態(tài)報(bào)表國.低速的設(shè)備只支持控制與中斷傳輸,有可能將中斷傳輸應(yīng)用在一般數(shù)據(jù)的傳輸上。idos包含有啟用設(shè)備中斷傳輸?shù)尿?qū)動程序。只要設(shè)備符
34、合HI(hmainerface de,人機(jī)接口設(shè)備)規(guī)范,應(yīng)用程序就可以執(zhí)行設(shè)備的中斷傳輸。在低速與全速時(shí),中斷端點(diǎn)能夠得到的帶寬是有限的。高速的限制較寬,它讓中斷端點(diǎn)以全速的40倍來傳輸。中斷傳輸與其他USB傳輸一樣,只發(fā)生在主機(jī)輪詢設(shè)備的時(shí)候,并不是由設(shè)備觸發(fā)的硬件中斷。低速、中速與高速設(shè)備都支持中斷傳輸.設(shè)備并不一定都需要支持中斷傳輸,但是一個(gè)設(shè)備類別可能需要。例如類別的設(shè)備,支持中斷輸入傳輸來傳送數(shù)據(jù)給主機(jī)。一個(gè)中斷傳輸包含有一筆或多筆輸入事務(wù),或是一筆或多筆輸出事務(wù)。中斷傳輸?shù)慕Y(jié)構(gòu)與批量傳輸相同。惟一的差別是在日程(sheu)上。中斷傳輸是單向的傳輸,所有的事務(wù)必須全部是輸入事務(wù),或
35、是全部是輸出事務(wù).要做雙向的中斷傳輸,必須有另一條管道。當(dāng)所要求的數(shù)據(jù)已經(jīng)全部傳完,或是數(shù)據(jù)信息包(包含零長度數(shù)據(jù)信息包)包含的數(shù)據(jù)小于最大數(shù)據(jù)時(shí),中斷傳輸即告結(jié)束。在高速總線上與低或全速設(shè)備做中斷傳輸時(shí),主機(jī)使用侵割事務(wù)來傳輸所有的事務(wù)。與高速批量輸出傳輸不同的是,高速中斷輸出傳輸在有多筆事務(wù)的傳輸上不使用PIN協(xié)議。低速的設(shè)備,最大的信息包大小可以是1-字節(jié).全速的設(shè)備,最大的信息包大小可以是16字節(jié).高速的設(shè)備,最大的信息包大小可以是1-1024字節(jié)。如果在一筆事務(wù)內(nèi)無法傳輸完全部的數(shù)據(jù),主機(jī)會使用多筆事務(wù)來完成傳輸。傳輸速度:中斷傳輸會保證最大延遲(aximu lenc),也就是事務(wù)之
36、間的時(shí)間。中斷傳輸沒有保證的傳輸速率,而是保證事務(wù)之間的時(shí)間不會超過最大延遲值。最大延遲是由儲存在設(shè)備內(nèi)的端點(diǎn)描述符指定.如果是低速的設(shè)備,最大延遲可以在12ms之間。如果是全速的設(shè)備,最大延遲可以在1255ms之間。如果是高速的設(shè)備,最大延遲可以在125u-4s之間(以微幀的寬度125us為單位)因?yàn)橹鳈C(jī)可以使用大于要求速率的速度來傳輸數(shù)據(jù),所以中斷傳輸無法保證一個(gè)正確的傳送速率,惟一的例外是最大延遲等于最大可能速率的時(shí)候。實(shí)時(shí)傳輸:實(shí)時(shí)傳輸(ishronostansfe)適用在以固定速率或特定時(shí)間內(nèi)傳輸,可以容忍錯(cuò)誤的串流數(shù)據(jù)上.在全速時(shí)每個(gè)幀可傳輸?shù)臄?shù)據(jù),實(shí)時(shí)傳輸比中斷傳輸多。實(shí)時(shí)傳輸?shù)?/p>
37、應(yīng)用包括實(shí)時(shí)的語音與音樂,不過使用固定速率的數(shù)據(jù)并不一定需要實(shí)時(shí)傳輸。例如主機(jī)可以使用批量傳輸,來傳送一個(gè)音樂文件給設(shè)備。設(shè)備在收到該音樂文件后,再以適當(dāng)?shù)乃俾蕘聿シ?。?shí)時(shí)傳輸是保證大量數(shù)據(jù)可以盡快地通過總線的方式,數(shù)據(jù)不一定要以固定速率來傳輸。與批量傳輸不同的是,一旦實(shí)時(shí)傳輸開始,主機(jī)保證可以在預(yù)期的時(shí)間內(nèi)完成。只有全速與高速設(shè)備,可以做實(shí)時(shí)傳輸,設(shè)備并不一定要支持實(shí)時(shí)傳輸,不過設(shè)備群組可能需要它。所謂實(shí)時(shí)表示在每一個(gè)幀或微幀內(nèi),必須傳輸一個(gè)固定數(shù)目的字節(jié)數(shù)據(jù)。除了實(shí)時(shí)傳輸之外,其他的傳輸類型都不能夠保證每個(gè)幀內(nèi)會有指定數(shù)目的字節(jié)數(shù)據(jù)。一個(gè)全速的實(shí)時(shí)傳輸,在每個(gè)幀內(nèi)包含有一筆輸入或輸出事務(wù)。
38、高速的實(shí)時(shí)傳輸比較有彈性,最多可以在每個(gè)微幀內(nèi)包含有3筆事務(wù),最少可以在每32768個(gè)微幀內(nèi)包含有1筆事務(wù).檢測設(shè)備:在應(yīng)用程序能夠與設(shè)備通信之前,主機(jī)必須先了解該設(shè)備的設(shè)置與能力,并且指定給該設(shè)備一個(gè)驅(qū)動程序。檢測設(shè)備(emeton)就是主機(jī)與設(shè)備最初的數(shù)據(jù)交換過程,讓主機(jī)知道設(shè)備的設(shè)置與功能。檢測設(shè)備的過程包括:()指定設(shè)備的地址 (2)從設(shè)備內(nèi)讀取數(shù)據(jù)結(jié)構(gòu)()指定與加載一個(gè)設(shè)備驅(qū)動程序(4)從接收的數(shù)據(jù)選項(xiàng)中選擇一個(gè)適當(dāng)?shù)脑O(shè)置在檢測設(shè)備的過程后,設(shè)備已經(jīng)設(shè)置好并且可以開始傳輸.檢測設(shè)備的過程:集線器的一個(gè)重要工作,就是檢測設(shè)備是否連接還是移除。每一個(gè)集線器都有一個(gè)中斷輸入管道(nterr
39、upt IN ipe),將這些連接狀況報(bào)告給主機(jī)。當(dāng)系統(tǒng)開機(jī)的時(shí)候 ,主機(jī)會以輪詢其根集線器來得知有哪些設(shè)備是連接的,其中也包括額外的集線器與設(shè)備。在開機(jī)后主機(jī)會繼續(xù)定時(shí)地輪詢,來看看有哪些設(shè)備是新連接,哪些則已經(jīng)移除。為了要了解一個(gè)新設(shè)備,主機(jī)會送出一連串的要求給設(shè)備的集線器,讓集線器建立主機(jī)與設(shè)備之間的通信管道。接著主機(jī)送出包含標(biāo)準(zhǔn)B要求的控制傳輸,給設(shè)備的端點(diǎn)0(Edpon0)。所有的USB設(shè)備都必須支持控制傳輸,標(biāo)準(zhǔn)USB要求,以及端點(diǎn)0。設(shè)備必須響應(yīng)要求的信息,并且采取適當(dāng)?shù)膭幼?。從用戶的觀點(diǎn)來看,檢測設(shè)備的過程應(yīng)該是自動執(zhí)行,除非是ido聲明發(fā)現(xiàn)了新的設(shè)備,或是在設(shè)置時(shí)發(fā)生了錯(cuò)誤.
40、通常在設(shè)備的第一次設(shè)置時(shí),用戶必須提供包含設(shè)備的if文件與驅(qū)動程序的磁盤。在檢測設(shè)備的過程完成后,Ww會將檢測到的新設(shè)備加入到控制面板的設(shè)備管理器名冊內(nèi)。檢測的步驟:在檢測設(shè)備的過程中,設(shè)備會經(jīng)過USB規(guī)范定義的4個(gè)狀態(tài):(1) 開機(jī)(Powered)(2) 默認(rèn)(Defat)(3) 地址(Adress)(4) 配置(Cofigued)USB規(guī)范共定義了個(gè)設(shè)備狀態(tài),另外兩個(gè)是:()連接(Atched)() 掛起(spend)下面是Winows檢測設(shè)備的過程中所發(fā)生的事件,這些事件并不一定是依照順序發(fā)生:(1)用戶將設(shè)備插入一個(gè)USB連接端口,或是在系統(tǒng)開機(jī)前設(shè)備已經(jīng)插入一個(gè)連接端口.此連接端口
41、可能是在根集線器上,或是在下游的其他集線器上。連接端口的電源 由集線器提供,此時(shí)設(shè)備處于開機(jī)狀態(tài)(Powee tate).(2)集線器檢測設(shè)備。集線器監(jiān)視著連接端口上每一條信號線的電壓。集線器在其兩條信號線(D+與D)上,各有1的下拉電阻, 全速的設(shè)備在D+線上有15的上拉電阻器,低速的設(shè)備則是在D線上有1.5的上拉電阻器。高速的設(shè)備是以全速來連接。 當(dāng)設(shè)備插入一個(gè)連接端口后,設(shè)備的上拉電阻讓信號線電壓上升,來告訴集線器有設(shè)備已經(jīng)連接上。在檢測設(shè)備的時(shí)候,集線器繼續(xù)提供電源給設(shè)備。但是尚未開始 UB的傳輸,因?yàn)樵O(shè)備還沒準(zhǔn)備好接收.(3)主機(jī)識別新設(shè)備.每一個(gè)集線器會使用中斷管道,來報(bào)告給主機(jī)集
42、線器上所發(fā)現(xiàn)的事件。當(dāng)主機(jī)知道一個(gè)事件后,它會重新發(fā)送一個(gè)Get_Port_Satus要求給集線器 以獲得更多的信息。GtPo_Status要求屬于標(biāo)準(zhǔn)的集線器類別(hubcass)要求,集線器傳回的信息告訴主機(jī)此設(shè)備是否是新連接的。(4)集線器檢測設(shè)備是否是低速或全速。在集線器重置(est)設(shè)置之前,集線器會檢驗(yàn)兩條信號線上的電壓,來決定設(shè)備是屬于低速還是全速。集線器靠著閑置(idle) 時(shí)哪一條線有較高的電壓,來決定設(shè)備的速度。USB1。允許集線器在復(fù)位后才檢測設(shè)備的速度。USB.則需要在設(shè)備復(fù)位前知道其速度,如此才能在復(fù)位期間檢查設(shè) 備是否有高速的能力。()集線器重置設(shè)備。當(dāng)主機(jī)了解一個(gè)
43、新設(shè)備后,主機(jī)控制器會傳送給集線器一個(gè)St_Port_Fture要求,來要求集線器重置連接端口。集線器將設(shè)備的UB數(shù)據(jù)線設(shè)置 在重置狀態(tài)下至少0毫秒。重置是一個(gè)特狀況,發(fā)生在D+與D都是在邏輯低的時(shí)候.在正常時(shí),這兩條線有相反的邏輯狀態(tài).集線器只傳送重置信號給新設(shè)備,其 他總線上的集線器與設(shè)備都不會看到此重置信號。(6) 主機(jī)識別一個(gè)全速設(shè)備是否支持高速。要知道一個(gè)設(shè)備是否支持高速,需要使用兩個(gè)特殊的信號狀態(tài)。在Cip 狀態(tài)時(shí)只有D線會被驅(qū)動,在p K狀態(tài)時(shí)只有 D-線會被驅(qū)動。在重置期間,支持高速的設(shè)備會送出一個(gè)ChirK。高速的集線器檢測到該chip后,會反映一串的交替hirp K與J。當(dāng)
44、設(shè)備檢測到KJKJKJ的樣式后 它會移除它的全速上升,然后再高速執(zhí)行所有的通信。如果集線器沒有對設(shè)備的ChpK做出響應(yīng),設(shè)備知道它必須繼續(xù)使用全速通信.高速的設(shè)備必須能夠在全 速時(shí),響應(yīng)檢測設(shè)備的要求.(7)集線器建立設(shè)備與總線間的信號路徑。主機(jī)送出一個(gè)Gt_Porttatu要求,來證明設(shè)備已經(jīng)離開重置狀態(tài)?;貍鲾?shù)據(jù)中的一個(gè)位,用來指示設(shè)備是否仍然處于重置 狀態(tài)。如果有必要,主機(jī)會重復(fù)傳送要求直到設(shè)備已經(jīng)離開重置狀態(tài)。當(dāng)集線器移除重置信號后,設(shè)備處于默認(rèn)狀態(tài)(efautstate)。設(shè)備的SB緩存器是在它們的 重置狀態(tài),而設(shè)備已經(jīng)準(zhǔn)備好響應(yīng)端點(diǎn)的默認(rèn)管道上的控制傳輸?,F(xiàn)在設(shè)備可以使用默認(rèn)地址0
45、h,來與主機(jī)開始通信 。(8)主機(jī)送出一個(gè)Gt_ecriptor要求,來了解默認(rèn)管道的最大信息包大?。╩aximm pet sz).主機(jī)送出此要求給設(shè)備的地址0,端點(diǎn)0由于主機(jī)在同一時(shí)間內(nèi)只檢 測一個(gè)設(shè)備,所以即使有數(shù)個(gè)設(shè)備都連接到主機(jī)上,只有一個(gè)設(shè)備會反映地址0的通信。 設(shè)備描述符的第8個(gè)字節(jié),包含有端點(diǎn)支持的最大信息包大小。 Windows主機(jī)會要求64個(gè)字節(jié),不過在收到一個(gè)信息包后,不管此信息包是否有6個(gè)字節(jié),Wno主機(jī)都會開始傳輸?shù)臓顟B(tài)階段.在完成狀態(tài)階段后,Winds主機(jī) 會要求集線器重置設(shè)備(步驟5) B規(guī)范并沒有要求此重置動作,因?yàn)樵O(shè)備應(yīng)該有能力在任何時(shí)間處理主機(jī)的放棄控制傳輸行
46、為,然后響應(yīng)下一個(gè)設(shè)置信息包。不過重置是一個(gè)較謹(jǐn)慎的操作,來保 證在重置終止時(shí),設(shè)備會片在一個(gè)預(yù)知的狀態(tài)上.(9)主機(jī)指定一個(gè)地址。主機(jī)控制器送出一個(gè)Set_dress要求,來指定設(shè)備一個(gè)惟一地址.設(shè)備在讀取該要求后傳回一個(gè)確認(rèn)信號,然后儲存該新地址。設(shè)備現(xiàn)在處 于地址狀態(tài)(dessSate),所有的通信都會使用此新地址。此新地址會持續(xù)有效到設(shè)備移除,或是重置,或是系統(tǒng)關(guān)機(jī)時(shí)。在下一次檢測設(shè)備時(shí),設(shè)備有可能指 定不同的地址。(10)主機(jī)了解設(shè)備的能力.主機(jī)送出一個(gè)Get_Desriptor要求到新地址上,來讀取設(shè)備的描述符(evc descror)。描述符是一個(gè)數(shù)據(jù)結(jié)構(gòu),包含有端點(diǎn)0的最大信
47、息包大小,設(shè)備支持的配置數(shù)目,以及設(shè)備的其他基本信息。 主機(jī)通過要求一個(gè)或多個(gè)指定在設(shè)備描述符內(nèi)的配置描述符,來了解更多設(shè)備的信息。通常設(shè)備對配置描述符(configuration dipt)的要求,會反映此描述 符及其所有的附屬描述符. Widws主機(jī)開始只要求配置描述符的9個(gè)字節(jié),在這些字節(jié)內(nèi)包含有配置描述符及其所有的附屬描述符的總長度。然后no使用所得到的總長度,最多到FF字節(jié) 繼續(xù)再要求配置描述符。這個(gè)動作會讓設(shè)備開始傳送配置描述符,后接每一個(gè)配置的接口描述符(intredecripr)。如果描述符的總長度超過FF字節(jié), Wnows會在第次要求時(shí)取得完整的描述符。(11)主機(jī)指定以及加
48、載一個(gè)設(shè)備驅(qū)動程序(復(fù)合設(shè)備除外).在主機(jī)從設(shè)備的描述符了解設(shè)備的所有能力后,它會尋找一個(gè)最適合的驅(qū)動程序來管理主機(jī)與設(shè)備的通信。 在選擇驅(qū)動程序的時(shí)候,Wdows會試圖將系統(tǒng)的。i文件內(nèi)的信息,與從設(shè)備內(nèi)讀出的廠商和產(chǎn)品ID與版本號碼做比較,如果不符合的話,inows會與任何從設(shè) 備內(nèi)讀出的類(class)、子類(sblass)與協(xié)議(prtocl)比較。當(dāng)操作系統(tǒng)指定以及加載設(shè)備的驅(qū)動程序后,驅(qū)動程序通常會要求設(shè)備重新傳送描述符,或是其他 類相關(guān)的描述符。 此步驟的例外是復(fù)合設(shè)備。復(fù)合設(shè)備有多個(gè)接口,每一個(gè)接口需要一個(gè)驅(qū)動程序。 主機(jī)只能在這些接口啟用后,也就是設(shè)置設(shè)備的配置后,才能指定驅(qū)
49、動程序。(2)主機(jī)的驅(qū)動程序選擇一個(gè)設(shè)置配置。在從設(shè)備的描述符了解設(shè)備后,驅(qū)動程序會送出一個(gè)Set_Cnfigration要求以及配置號碼,來要求一個(gè)設(shè)置配置。許多設(shè)備 都只支持一個(gè)設(shè)置配置,設(shè)備在讀取要求后設(shè)置其配置.現(xiàn)在設(shè)備是處在設(shè)置配置狀態(tài)(Conigu stae),而且設(shè)備的接口是啟用的,已經(jīng)準(zhǔn)備好可以使用。 其他兩個(gè)狀態(tài): 連接(ttahe)與掛起(Suspnd),可以存在于任何時(shí)間。連接狀態(tài):如果集線器不提供電源(VBUS)給連接端口,設(shè)備是處于連接狀態(tài)(Attached sate)。這種情況可能發(fā)生在集線器檢測到過電流,或是主機(jī)要求集線器移除給 連接端口的電源.當(dāng)VBUS上沒有電
50、源時(shí),主機(jī)與設(shè)備無法通信,如同設(shè)備根本沒有連接一樣。掛起狀態(tài):掛起狀態(tài)表示設(shè)備在總線上,至少有ms沒有任何動作,包括幀開端的標(biāo)記(StartofFramekrs)。此時(shí)設(shè)備必須消耗最小的總線電力。不論有配置或沒有配置的設(shè)備,都必須支持掛起狀態(tài).描述符:描述符(desciptor)是一個(gè)數(shù)據(jù)結(jié)構(gòu),使主機(jī)了解設(shè)備的格式化信息。在檢測設(shè)備的期間,主機(jī)使用控制傳輸來要求設(shè)備傳回描述符。在檢測設(shè)備的過程中,要求的描述符首先是整個(gè)設(shè)備,然后是每一個(gè)設(shè)置配置,每一個(gè)設(shè)置配置的接口,最后是每一個(gè)接口的端點(diǎn)。標(biāo)準(zhǔn)描述符類型:描述符類型 是否需要evie(設(shè)備) 是device_quaifir 只有同時(shí)支持全速與
51、高速的設(shè)備才需要,其他設(shè)備不允許configratn(配置) 是oter_sped_cofigurati 只有同時(shí)支持全速與高速的設(shè)備才需要,其他設(shè)備不允許interfa(接口) 是endpint(端點(diǎn)) 否,如果設(shè)備只使用端點(diǎn)0string(字符串) 否,選擇性的描述文字itre_poer 否,支持接口層級的電源管理較高階的描述符會通知主機(jī)、任何其他的低階描述符.每一個(gè)設(shè)備只能有一個(gè)設(shè)備描述符(dvice desiptr),設(shè)備描述符包含整個(gè)設(shè)備的信息,以及設(shè)備支持的配置號碼。每一個(gè)設(shè)備也會有一個(gè)或多個(gè)配置描述符(coiuration decritor),來包含設(shè)備的電源管理使用,以及設(shè)置配
52、置所支持的接口號碼。每一個(gè)接口描述符(inerfacdscrto)有零個(gè)或多個(gè)端點(diǎn)描述符(endont decritpor),來包含與端點(diǎn)通信所需的信息。沒有端點(diǎn)描述符的接口,仍然可以使用通信用的控制端點(diǎn)。當(dāng)設(shè)備收到一個(gè)配置描述符的要求后,它應(yīng)該傳回該配置描述符以及所有該配置的接口、端點(diǎn)以及其他附屬描述符,來達(dá)到所要求的字節(jié)數(shù)目.同時(shí)支持全速與高速的設(shè)備,另外還支持兩個(gè)額外的描述符:devce_ualifier 與 ohersped_ofiurati。這兩個(gè)額外的描述符與其他附屬描述符,包含了使用非目前選擇的速度時(shí)的設(shè)備行為.字符串描述符(stringdsrtor)用來存儲廠商或設(shè)備名稱等文字
53、,其他的描述符可以存儲這些字符串描述符的索引值。主機(jī)可以使用Gt_Desrptr要求,來讀取這些字符串描述符。US2.0規(guī)范新增了一個(gè)intrfacepwer描述符,這個(gè)功能使得除了設(shè)備層級外,接口層級也能夠啟用電源管理。除了標(biāo)準(zhǔn)描述符外,設(shè)備也可以包含類別(cla)或廠商(vndor)特定的描述符。這些特定的描述符,提供設(shè)備更詳細(xì)的信息。例如一個(gè)接口描述符可以指定該接口,是否屬于D類別并且支持H類別描述符。每一個(gè)描述符都包含有一個(gè)數(shù)值,來識別其描述符的類型。下面列出SB與HID規(guī)范所定義的數(shù)值,此數(shù)值的位7永遠(yuǎn)是,位6與位5用來識別描述符的類型:0h是標(biāo)準(zhǔn)01是類別2是廠商03是保留位4到位
54、0用來識別描述符-描述符的數(shù)值 (DescriptorType)-類型 數(shù)值(十六進(jìn)制) 描述符標(biāo)準(zhǔn)(anrd) 01 device 02 confurain sring 4 nteface 05 ndpont 0 device_qaliier 07 other_peed_coniraon 08 nerface_poe類別(as) 1 D 29 hubHI類別特定 22 report 23 pical廠商定義的描述符 F -每一個(gè)描述符包含有數(shù)個(gè)字段.大部分的字段名稱使用前置名稱(prei),來指出該字段數(shù)據(jù)的格式與內(nèi)容。例如代表byte(位),w代表word(16位),bm代表t ap,c代
55、表biarcodeddecial,i代表idx,id代表ientifer.設(shè)備類代碼DeviceClss查下表:-設(shè)備的類別(bDecCls)-值(十進(jìn)制) 值(十六進(jìn)制) 說明 0 0 x00 接口描述符中提供類的值 2 0 x2 通信類 9 0 x9 集線器類 220 0 xC 用于診斷用途的設(shè)備類 224 0E0 無線通信設(shè)備類 255 0 xFF 廠商定義的設(shè)備類-設(shè)備描述符:設(shè)備描述符(dec dscriptr)是在設(shè)備連接時(shí),主機(jī)第一讀取的描述符,包含了主機(jī)需要從設(shè)備讀取的基本信息。設(shè)備描述符有14個(gè)字段。依照功能來分類,設(shè)備描述的字段包含了描述符本身、設(shè)備、配置以及類別4大類。-
56、設(shè)備描述符表-位移(十進(jìn)制) 字段 大小(字節(jié)) 數(shù)據(jù) 說明 0 bLength 數(shù)字 描述符大?。ㄗ止?jié)) bescriporype 1 常數(shù) 常數(shù) 2 dUSB 2 BCD S4 bDeceClss 類別 類別碼5 bDicbclass 1 子類別 子類別碼 6 bDeviceProtol 1 協(xié)議 協(xié)議碼 7 bMaxPackeSize(0) 1 數(shù)字 端點(diǎn)0的最大信息包大小 idVedr 2 ID 廠商 10 idProduct 2 ID 產(chǎn)品ID 12 bcdeice CD 設(shè)備版本號碼4 Manufacrr 1 索引值 制造者的字符串描述符的索引值15 iroc 1 索引值 產(chǎn)品的字
57、符串描述符的索引值 16 iSeralNumbe 索引值 序號的字符串描述符的索引值 bNuonfigurtns 1 數(shù)字 可能配置的數(shù)目- 第1種:描述符-bLent,bciptorTyp第2種:設(shè)備-cdUSB,idVeno,idPouct,bcdDvic,Maufcturer,Prodct,iSerimber第種:配置-NumCigurin,bMaxakeSi()第4種:類別bDeiceCas,bDevieSubclas,bDeviceProtc解釋:Length :描述符的大小,以字節(jié)為單位。DecritTyp:常數(shù)DVIE(h)cdS:設(shè)備符合的USB規(guī)范版本號碼。此號碼為BCD(b
58、inarcod dml)格式,前面的字節(jié)是版本的整數(shù)部分,下個(gè)位是版本的第一個(gè)小數(shù)點(diǎn)數(shù)字。 最后個(gè)位是版本的第二個(gè)小數(shù)點(diǎn)數(shù)字。例如版本1.是010h,版本11是0110,版本20是0200idVndor: US mpementers Frm的成員,以及其他付費(fèi)取得惟一廠商ID的權(quán)利的制造者。每一個(gè)商業(yè)化產(chǎn)品,都必須有一個(gè)設(shè)備描述符。主機(jī)必須擁有一個(gè)包含 idenor的。inf文件,Wdos使用此數(shù)值來決定要加載的驅(qū)動程序。iddt:制造者指定一個(gè)產(chǎn)品D,來識別此設(shè)備。設(shè)備描述符與。inf文件都可以包含此數(shù)值,windows使用此數(shù)值來決定要加載的驅(qū)動程序。每一個(gè)產(chǎn)品I特定于一個(gè) 廠商ID,所以
59、不同家的廠商可以使用相同的產(chǎn)品D而不會有沖突。bcdDevice:設(shè)備的版本號碼,此號碼為CD格式,由制造者指定,這個(gè)數(shù)值是選擇性的,也可以用來決定要加載的驅(qū)動程序。iManufacturer:指向描述制造者的字符串的索引值,此字段是選擇性的,如果未使用則為零。Prdct:指向描述產(chǎn)品的字符串的索引值,此字段選擇性,如果未使用則為零 。iSerialNumbe:指向包含設(shè)備序列號的字符串的索引值,此字段是選擇性的,如果未使用則為零.序列號使用在總線上有一個(gè)以上相同的設(shè)備時(shí),主機(jī)用來識別哪一臺 是哪一臺。如果有一個(gè)外圍設(shè)備有相同的廠商與產(chǎn)品D,主機(jī)也可以使用序號來識別它是以前使用過的,或者是新安
60、裝的。如果一個(gè)設(shè)備有相同的序列 號,但是插入PC上不同的連接端口,dows就不需要重新加載此設(shè)備的驅(qū)動程序。umCnfiurtio:設(shè)備支持的設(shè)置配置的數(shù)目.bMaxPacketize0:端點(diǎn)0的最大信息包大小,主機(jī)使用此值來提出要求。低速設(shè)備的最大信息包大小必須是8個(gè)字節(jié),全速設(shè)備可以是8,16,32,或64個(gè)字節(jié),高速設(shè)備 必須是4個(gè)字節(jié)。eviclass:對于屬于類的設(shè)備,此值為該類的名稱。數(shù)值1到F保留為USB定義的類,例如集線器,打印機(jī),以及通信設(shè)備等。數(shù)值Fh由廠商指定,屬于廠商特定的 類。有些設(shè)備,例如ID,類是指定在接口描述符內(nèi)。這些設(shè)備的bDviceSublass必須是一個(gè)定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025嶺南文化創(chuàng)意產(chǎn)業(yè)園項(xiàng)目啟動儀式籌辦服務(wù)合同協(xié)議書
- 2025含破碎錘挖掘機(jī)買賣合同書
- 2025咖啡粉批發(fā)合同
- 2025金屬制品委托加工合同
- 2023三年級英語上冊 Unit 5 Let's eat The first period第一課時(shí)說課稿 人教PEP
- 5 應(yīng)對自然災(zāi)害(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治六年級下冊
- 保母阿姨合同范例
- 人用工合同范例
- 上海檢測合同范例
- 金屬防水材料施工方案
- 2025年廣西教育出版社有限公司招聘筆試參考題庫含答案解析
- 中醫(yī)膏方臨床應(yīng)用與制備工藝規(guī)范 DB32/T 4870-2024
- JJG(交通) 208-2024 車貨外廓尺寸動態(tài)現(xiàn)場檢測設(shè)備
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)英語試卷(含答案)
- 2025年信息系統(tǒng)集成服務(wù)公司組織架構(gòu)和業(yè)務(wù)流程
- 西藏自治區(qū)拉薩市城關(guān)區(qū)多校2024-2025學(xué)年六年級上學(xué)期期中英語試題
- 胸外科講課全套
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 公安法制培訓(xùn)
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
- 淺談如何有效提高小學(xué)數(shù)學(xué)教學(xué)質(zhì)量課件
評論
0/150
提交評論