小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

USB接口技術(shù)(一)...

 紅桃‘King 2006-06-18
USB接口技術(shù)(一)
 

USB總線協(xié)議

USBUniversal Serial Bus總線協(xié)議是以Intel為主并有CompaqMicrosoftIBMDECNorthern Telecom以及日本NEC等共七家公司共同制定的串行接口標(biāo)準(zhǔn)1994年11月制定了第一個(gè)草案1996年2月公布了USB規(guī)范版本1.0USB可把多達(dá)127個(gè)外設(shè)同時(shí)聯(lián)到你的系統(tǒng)上所有的外設(shè)通過協(xié)議來共享USB的帶寬其12Mbps的帶寬對于鍵盤鼠標(biāo)等低中速外設(shè)是完全足夠的注在1999年2月發(fā)布的USB規(guī)范版本2.0草案中已建議將12Mbps的帶寬提升到120-240MbpsUSB允許外設(shè)在主機(jī)和其它外設(shè)工作時(shí)進(jìn)行連接配置使用及移除即所謂的即插即用Plug & Play同時(shí)USB總線的應(yīng)用可以清除PC上過多的I/O端口而以一個(gè)串行通道取代使PC與外設(shè)之間的連接更容易。


一. 總線拓?fù)浣Y(jié)構(gòu)


USB總線的物理連接是一種分層的菊花鏈結(jié)構(gòu)集線器(hub)是每個(gè)星形結(jié)構(gòu)的中心PC機(jī)就是主機(jī)和根Hub用戶可以將外設(shè)或附加的Hub與之相連這些附加的Hub可以連接另外的外設(shè)以及下層HubUSB支持最多5個(gè)Hub層以及127個(gè)外設(shè)。


二. USB的物理層


USB的物理接口包括電氣特性和機(jī)械特性:USB通過一個(gè)四線電纜來傳輸信號與電源。其中D+和D-是一對差模的信號線而VBus和GND則提供了5V的電源,它可以給一些設(shè)備(包括Hub)供電。當(dāng)然要有一定的條件限制。USB提供了兩種數(shù)據(jù)傳輸率:一種是12Mb的高速(full speed)模式,另一種是1.5Mb的低速模式。這兩種模式可以同時(shí)存在于一個(gè)USB系統(tǒng)中,而引入低速模式主要是為了降低要求不高的設(shè)備的成本,比如:鼠標(biāo)鍵盤等等。USB信號線在高速模式下必須使用帶有屏蔽的雙絞線,而且最長不能超過5m。而在低速模式時(shí)中可以使用不帶屏蔽或不是雙絞的線,但最長不能超過3m。這主要是由于信號衰減的限制,為了提供信號電壓保證以及與終端負(fù)載相匹配,在電纜的每一端都使用了不平衡的終端負(fù)載,這種終端負(fù)載也保證了能夠檢測外設(shè)與端口的連接或分離并且可以區(qū)分高速與低速設(shè)備。所有的設(shè)備都有上行的接口。上行和下行的接頭是不能互換的,這保證了不會有非法的連接出現(xiàn)。插頭與插座有兩個(gè)系列分別為A和B系列。A用于基本固定的外圍設(shè)備,而系列B用于經(jīng)常拔插的設(shè)備。這兩個(gè)系列是不能互換的。


三.USB設(shè)備


USB設(shè)備包括Hub和功能設(shè)備,而功能設(shè)備又可以細(xì)分為定位設(shè)備字符設(shè)備等等。為了進(jìn)一步敘述,我們給出端點(diǎn)(endpoint)和管道(pipe)的概念。


端點(diǎn):每一個(gè)USB設(shè)備在主機(jī)看來就是一個(gè)端點(diǎn)的集合。主機(jī)只能通過端點(diǎn)與設(shè)備進(jìn)行通訊,以使用設(shè)備的功能。每個(gè)端點(diǎn)實(shí)際上就是一個(gè)一定大小的數(shù)據(jù)緩沖區(qū),這些端點(diǎn)在設(shè)備出廠時(shí)就已定義好。在USB系統(tǒng)中每一個(gè)端點(diǎn)都有唯一的地址,這是由設(shè)備地址和端點(diǎn)號給出的。每個(gè)端點(diǎn)都有一定的特性,其中包括傳輸方式,總線訪問頻率,帶寬端點(diǎn)號,數(shù)據(jù)包的最大容量等等。端點(diǎn)必須在設(shè)備配置后才能生效(端點(diǎn)0除外)。


端點(diǎn)0通常為控制端點(diǎn),用于設(shè)備初始化參數(shù)等。端點(diǎn)1,2等一般用作數(shù)據(jù)端點(diǎn),存放主機(jī)與設(shè)備間往來的數(shù)據(jù)。 管道: 一個(gè)USB管道是驅(qū)動程序的一個(gè)數(shù)據(jù)緩沖區(qū),與一個(gè)外設(shè)端點(diǎn)的連接。它代表了一種在兩者之間移動數(shù)據(jù)的能力。一旦設(shè)備被配置,管道就存在了。管道有兩種類型:數(shù)據(jù)流管道,其中的數(shù)據(jù)沒有USB定義的結(jié)構(gòu),與消息管道,其中的數(shù)據(jù)必須有USB定義的結(jié)構(gòu)。管道只是一個(gè)邏輯上的概念。所有的設(shè)備必須支持端點(diǎn)0以作為設(shè)備的控制管道。通過控制管道,可以獲取完全描述USB設(shè)備的信息。包括設(shè)備類型,電源管理配置端點(diǎn)描述,等等。只要設(shè)備連接到USB上,并且上電,端點(diǎn)0就可以被訪問。與之對應(yīng)的控制管道就存在了。一個(gè)USB設(shè)備可以分為三個(gè)層。最底層是總線接口,用來發(fā)送與接收包。中間層處理總線接口與不同的端點(diǎn)之間的數(shù)據(jù)流。通一個(gè)端點(diǎn)是數(shù)據(jù)最終的使用者或提供者。它可以看作數(shù)據(jù)的源或接收端。最上層就是USB設(shè)備所提供的功能,比如:鼠標(biāo)或鍵盤等。
 
USB接口技術(shù)(二)

Hub


Hub在USB結(jié)構(gòu)中是一個(gè)關(guān)鍵。它提供了附加的USB節(jié)點(diǎn)。這些節(jié)點(diǎn)被稱為端口。Hub可以檢測出每一個(gè)下行端口的狀態(tài)。并且可以給下端的設(shè)備提供電源。


即插即用


USB設(shè)備可以即插即用,但在可以使用之前,必須對設(shè)備進(jìn)行配置。一旦設(shè)備連接到某一個(gè)USB的節(jié)點(diǎn)上,USB就會產(chǎn)生一系列的操作來完成對設(shè)備的配置。這種操作被稱為總線枚舉過程。


1.設(shè)備所連接的Hub檢測出端口上有設(shè)備連接,通過狀態(tài)變化管道向主機(jī)報(bào)告。


2.主機(jī)通過詢問Hub以獲取確切的信息。


3.主機(jī)這時(shí)知道設(shè)備連接到哪個(gè)端口上,于是向這個(gè)端口發(fā)出復(fù)位命令。


4.Hub發(fā)出的復(fù)位信號結(jié)束后,端口被打開,Hub向設(shè)備提供100mA的電源。這時(shí),設(shè)備上電所有的寄存器復(fù)位,并且,以缺省地址0以及端點(diǎn)0響應(yīng)命令。


5.主機(jī)通過缺省地址與端點(diǎn)0進(jìn)行通訊。賦予設(shè)備一個(gè)獨(dú)一的地址,并且讀取設(shè)備的配置信息。


6.最后主機(jī)對設(shè)備進(jìn)行配置,該設(shè)備就可以使用了。當(dāng)該設(shè)備被移走時(shí),Hub依然要報(bào)告主機(jī),并且關(guān)閉端口。一旦主機(jī)接到設(shè)備移走的報(bào)告,就會改寫當(dāng)前結(jié)構(gòu)信息。


設(shè)備的電源


USB設(shè)備的電源可以由USB總線供給,也可以自備電源。一個(gè)USB設(shè)備可以具有這兩種供電方式。但同一時(shí)刻只能由一種方式供電。這兩種供電方式是可以切換的。


設(shè)備的掛起


為了節(jié)電,當(dāng)設(shè)備在指定的時(shí)間內(nèi)沒有總線傳輸,USB設(shè)備自動進(jìn)入掛起狀態(tài)。如果設(shè)備所接的Hub的端口被禁止了,設(shè)備也將進(jìn)入掛起狀態(tài)(稱之為選擇掛起)。當(dāng)然,主機(jī)也可以進(jìn)入掛起狀態(tài)。


USB設(shè)備當(dāng)總線活動時(shí),就會離開掛起狀態(tài)。一個(gè)設(shè)備也可以通過電信號來遠(yuǎn)程喚醒進(jìn)入掛起狀態(tài)的主機(jī)。這個(gè)能力是可選的。如果一個(gè)設(shè)備具有這個(gè)能力,主機(jī)有能力禁止或允許使用這種能力。
 
Re: USB接口技術(shù)(三)
 
USB主機(jī)



USB主機(jī)在USB系統(tǒng)中處于中心地位。并且,對USB及其連接的設(shè)備有著特殊的責(zé)任。主機(jī)控制著所有對USB的訪問一個(gè)外設(shè)。只有主機(jī)允許才有權(quán)力訪問總線。主機(jī)同時(shí)也監(jiān)測著USB的結(jié)構(gòu)。USB主機(jī)包括三層:設(shè)備驅(qū)動程序,USB系統(tǒng)軟件,USB主控制器(主機(jī)的總線接口)。另外,還有兩個(gè)軟件接口:USB驅(qū)動USBD接口,主機(jī)控制驅(qū)動(HCD)接口。



USB數(shù)據(jù)流



從邏輯上講,USB數(shù)據(jù)的傳輸是通過管道進(jìn)行的。USB系統(tǒng)軟件通過缺省管道(與端點(diǎn)0相對應(yīng))管理設(shè)備。設(shè)備驅(qū)動程序通過其它的管道來管理設(shè)備的。功能接口實(shí)際的數(shù)據(jù)傳輸過程是這樣的:設(shè)備驅(qū)動程序通過對USBD接口(USB driver interface)的調(diào)用,發(fā)出輸入輸出請求(IRPI/O Request Packet)。USB驅(qū)動程序接到請求后調(diào)用HCD接口(host controller driver interface),將IRP轉(zhuǎn)化為USB的傳輸(transfer),一個(gè)IRP可以包含一個(gè)或多個(gè)USB傳輸; 然后HCD將USB傳輸分解為總線操作(transaction),由主控制器以包(packet)的形式發(fā)出。需要注意的是,所有的數(shù)據(jù)傳輸都是由主機(jī)開始的,任何外設(shè)都無權(quán)開始一個(gè)傳輸。



IRP是由操作系統(tǒng)定義的,而USB傳輸與總線操作是USB規(guī)范定義的。為了進(jìn)一步說明USB傳輸,我們引出幀frame的概念。 幀:USB總線將1ms定義為一幀,每幀以一個(gè)SOF包為起始,在這1ms里USB進(jìn)行一系列的總線操作。引入幀的概念主要是為了支持與時(shí)間有關(guān)的總線操作。 為了滿足不同外設(shè)和用戶的要求,USB提供了四種傳輸方式:控制傳輸,同步傳輸,中斷傳輸,批傳輸。它們在數(shù)據(jù)格式,傳輸方向,數(shù)據(jù)包容量限制,總線訪問限制等方面有著各自不同的特征:



控制傳輸(Control Transfer)



1.通常用于配置/命令/狀態(tài)等情形



2.其中的設(shè)置操作setup和狀態(tài)操作status的數(shù)據(jù)包具有USB定義的結(jié)構(gòu)。因此控制傳輸只能通過消息管道進(jìn)行



3.支持雙向傳輸



4.對于高速設(shè)備,允許數(shù)據(jù)包最大容量為81632或64字節(jié)。對于低速設(shè)備,只有8字節(jié)一種選擇



5.端點(diǎn)不能指定總線訪問的頻率和占用總線的時(shí)間,USB系統(tǒng)軟件會做出限制



6 具有數(shù)據(jù)傳輸,保證在必要時(shí)可以重試



同步傳輸(Isochronous Transfer)



1.是一種周期的連續(xù)的傳輸方式,通常用于與時(shí)間有密切關(guān)系的信息的傳輸



2.數(shù)據(jù)沒有USB定義的結(jié)構(gòu)數(shù)據(jù)流管道



3.單向傳輸。如果一個(gè)外設(shè)需要雙向傳輸,則必須使用另一個(gè)端點(diǎn)



4.只能用于高速設(shè)備,數(shù)據(jù)包的最大容量可以從0到1023個(gè)字節(jié)



5.具有帶寬保證,并且保持?jǐn)?shù)據(jù)傳輸?shù)乃俾屎愣?。每個(gè)同步管道每幀傳輸一個(gè)數(shù)據(jù)包



6.沒有數(shù)據(jù)重發(fā)機(jī)制,要求具有一定的容錯(cuò)性



7.與中斷方式一起占用總線的時(shí)間不得超過一幀的90%



中斷傳輸(Interrupt Transfer)



1.用于非周期的自然發(fā)生的數(shù)據(jù)量很小的信息的傳輸,如鍵盤鼠標(biāo)等



2.數(shù)據(jù)沒有USB定義的結(jié)構(gòu)數(shù)據(jù)流管道



3.只有輸入這一種傳輸方式即外設(shè)到主機(jī)



4.對于高速設(shè)備允許數(shù)據(jù)包最大容量為小于或等于64字節(jié),對于低速設(shè)備,只能小于或等于8字節(jié)



5.具有最大服務(wù)周期保證,即在規(guī)定時(shí)間內(nèi)保證有一次數(shù)據(jù)傳輸



6.與同步方式一起占用總線的時(shí)間不得超過一幀的90%



7.具有數(shù)據(jù)傳輸保證在必要時(shí)可以重試



批傳輸(Bulk Transfer)



1.用于大量的對時(shí)間沒有要求的數(shù)據(jù)傳輸



2.數(shù)據(jù)沒有USB定義的結(jié)構(gòu)數(shù)據(jù)流管道



3.單向傳輸,如果一個(gè)外設(shè)需要雙向傳輸,則必須使用另一個(gè)端點(diǎn)



4.只能用于高速設(shè)備,允許數(shù)據(jù)包最大容量為81632或64字節(jié)



5.沒有帶寬的保證,只要有總線空閑就允許傳輸數(shù)據(jù),優(yōu)先級小于控制傳輸



6.具有數(shù)據(jù)傳輸,保證在必要時(shí)可以重試,以保證數(shù)據(jù)的準(zhǔn)確性
 
Re: USB接口技術(shù)(四)
 
USB總線協(xié)議



所有總線操作都可以歸結(jié)為三種包的傳輸:任何操作都是從主機(jī)開始的,主機(jī)以預(yù)先排好的時(shí)序發(fā)出一個(gè)描述操作類型,方向外設(shè)地址,以及端點(diǎn)號(這將在以下部分給予解釋)的包。我們稱之為令牌包(Token Packet)。然后在令牌中指定的數(shù)據(jù)發(fā)送者發(fā)出一個(gè)數(shù)據(jù)包或者指出它沒有數(shù)據(jù)可以傳輸。而數(shù)據(jù)的目的地一般要以一個(gè)確認(rèn)包(Handshake Packet)作出響應(yīng),以表明傳輸是否成功。



域的類型



同步域(SYNC field)。所有的包都起始于SYNC域,它被用于本地時(shí)鐘與輸入信號的同步。并且在長度上定義為8位。SYNC的最后兩位作為一個(gè)記號,表明PID域(標(biāo)識域)的開始。在以后的敘述中SYNC域?qū)⒈皇∪ァ?



標(biāo)識域(Packet Identifier Field)。對于每個(gè)包PID都是緊跟著SYNC的。PID指明了包的類型及其格式。主機(jī)和所有的外設(shè)都必須對接收到的PID域進(jìn)行解碼。如果出現(xiàn)錯(cuò)誤或者解碼為未定義的值,那么這個(gè)包就會被接收者忽略。如果外設(shè)接收到一個(gè)PID,它所指明的操作類型或者方向不被支持,外設(shè)將不作出響應(yīng)。



地址域(Address Field)。外設(shè)端點(diǎn)都是由地址域指明的。它包括兩個(gè)子域外設(shè)地址和外設(shè)端點(diǎn)。外設(shè)必須解讀這兩個(gè)域。其中有任何一個(gè)不匹配,這個(gè)令牌就會被忽略。



外設(shè)地址域(ADDR)。指定了外設(shè),它根據(jù)PID所說明的令牌的類型,指明了外設(shè)是數(shù)據(jù)包的發(fā)送者或接收者。ADDR共6位,因此最多可以有127個(gè)地址。一旦外設(shè)被復(fù)位或上電,外設(shè)的地址被缺省為0,這時(shí)必須在主機(jī)枚舉過程中被賦予一個(gè)獨(dú)一的地址。而0地址只能用于缺省值而不能分配作一般的地址。



端點(diǎn)域(ENDP)。有4位,它使設(shè)備可以擁有幾個(gè)子通道,所有的設(shè)備必須支持一個(gè)控制端點(diǎn)0(endpoint 0)。低速的設(shè)備最多支持2個(gè)端點(diǎn)0和一個(gè)附加端點(diǎn)。高速設(shè)備可以支持最多16個(gè)端點(diǎn)。



幀號域(Frame Number Field)。這是一個(gè)11位的域,指明了目前幀的排號。每過一幀(1ms),這個(gè)域的值加1,到達(dá)最大值XFF后,返回0。這個(gè)域只存在于每幀開始時(shí)的SOF令牌中,SOF令牌在下面將詳細(xì)介紹。



數(shù)據(jù)域(Data Field)。范圍是01023字節(jié),而且必須是整數(shù)個(gè)字節(jié)。



CRC校驗(yàn)。包括令牌校驗(yàn)和數(shù)據(jù)校驗(yàn)。



包的類型



令牌包(Token Packed) 其中包括:IN(輸入),OUT(輸出),SETUP(設(shè)置)和SOF(Start of Frame幀起始)四種類型。



對于OUT和SETUP來說,ADDR和ENDP中所指明的端點(diǎn)將接收到主機(jī)發(fā)出的數(shù)據(jù)包,而對IN來說,所指定的端點(diǎn)將輸出一個(gè)數(shù)據(jù)包。



Token和SOF在三個(gè)字節(jié)的時(shí)間內(nèi),以一個(gè)EOP(End of Packet)結(jié)束。如果一個(gè)包被解碼為Token包,但是并沒有在3個(gè)字節(jié)時(shí)間內(nèi)以EOP結(jié)束,它就會被看作非法或被忽略。



數(shù)據(jù)包包括Data0和Data1兩種類型。這兩種包的定義是為了支持?jǐn)?shù)據(jù)觸發(fā)。同步數(shù)據(jù)包包含了PIDDATA和CRC三個(gè)域。



應(yīng)答包(Handshake Packet)僅包含一個(gè)PID域。Handshake用來報(bào)告數(shù)據(jù)傳輸?shù)臓顟B(tài),只有支持流控制的傳輸類型,控制中斷和批傳輸才能返回Handshake。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多