第7章_USB接口_第1頁(yè)
第7章_USB接口_第2頁(yè)
第7章_USB接口_第3頁(yè)
第7章_USB接口_第4頁(yè)
第7章_USB接口_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第7章 USB通用串行總線概述概述USBUSB系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu)USBUSB數(shù)據(jù)流模型數(shù)據(jù)流模型USBUSB協(xié)議層協(xié)議層 USBUSB傳輸管理傳輸管理USBUSB設(shè)備開(kāi)發(fā)設(shè)備開(kāi)發(fā)7.1 7.1 概述概述 問(wèn)題的提出:?jiǎn)栴}的提出: 外設(shè)與外設(shè)與CUPCUP的連接存在的連接存在接口標(biāo)準(zhǔn)各自獨(dú)立接口標(biāo)準(zhǔn)各自獨(dú)立、互不兼容互不兼容、無(wú)、無(wú)法共享的連接頭問(wèn)題,并且法共享的連接頭問(wèn)題,并且安裝、配置麻煩安裝、配置麻煩。如鍵盤(pán)用如鍵盤(pán)用PS/2接口,連接打印機(jī)要用接口,連接打印機(jī)要用25針的并行接口,鼠標(biāo)則要針的并行接口,鼠標(biāo)則要用串行或用串行或PS/2接口接口. 解決基本思路解決基本思路: : 采用采用通用

2、連接器通用連接器和和自動(dòng)配置自動(dòng)配置及及熱插拔熱插拔技術(shù)和相應(yīng)的軟件,技術(shù)和相應(yīng)的軟件,實(shí)現(xiàn)資源共享和外設(shè)簡(jiǎn)單快速連接,提供設(shè)備共享接口來(lái)實(shí)現(xiàn)資源共享和外設(shè)簡(jiǎn)單快速連接,提供設(shè)備共享接口來(lái)解決解決PCPC機(jī)與外部設(shè)備連接的通用性。機(jī)與外部設(shè)備連接的通用性。n針對(duì)這一問(wèn)題的解決,以針對(duì)這一問(wèn)題的解決,以IntelIntel公司為主,并有公司為主,并有CompaqCompaq、MicrosoftMicrosoft、IBM IBM 、DECDEC、NECNEC等公司共等公司共同開(kāi)發(fā),提出了同開(kāi)發(fā),提出了USBUSB通用外設(shè)接口標(biāo)準(zhǔn)。通用外設(shè)接口標(biāo)準(zhǔn)。USBUSB(Universal Serial B

3、usUniversal Serial Bus)的中文含義是)的中文含義是“通用通用串行總線串行總線”. .n于于19941994年年1111月制定了第一個(gè)草案,月制定了第一個(gè)草案,19961996年年2 2月公月公布了布了USB1.0USB1.0版本,目前,已發(fā)展到版本,目前,已發(fā)展到2.02.0版版. .n19971997年,微軟在年,微軟在Windows97Windows97中開(kāi)始外掛模塊形式中開(kāi)始外掛模塊形式提供對(duì)提供對(duì)USBUSB的支持,的支持,19981998后,隨著后,隨著Windows98Windows98中中內(nèi)置了對(duì)內(nèi)置了對(duì)USBUSB接口的支持模塊,加上接口的支持模塊,加上U

4、SBUSB設(shè)備日益設(shè)備日益增多,增多,USB USB 逐漸流行起來(lái)。逐漸流行起來(lái)。USB的主要優(yōu)點(diǎn):速度快速度快 USB1.1:USB1.1: 有全速和低速兩種方式,主模式為全有全速和低速兩種方式,主模式為全速模式,速率為速模式,速率為12Mbps12Mbps,另外為了適應(yīng)一些不需,另外為了適應(yīng)一些不需要很大吞吐量和很高實(shí)時(shí)性的設(shè)備,如鼠標(biāo)等,要很大吞吐量和很高實(shí)時(shí)性的設(shè)備,如鼠標(biāo)等,USBUSB還提供低速方式,速率為還提供低速方式,速率為1.5Mbps1.5Mbps。 USB2.0:USB2.0: 2000 2000年年9 9月推出的月推出的USB2.0USB2.0協(xié)議將使其速協(xié)議將使其速率

5、達(dá)到率達(dá)到480Mbps480Mbps,它非常適用于一些視頻輸入,它非常適用于一些視頻輸入/ /輸出產(chǎn)品,并很有可能替代輸出產(chǎn)品,并很有可能替代SCSISCSI接口標(biāo)準(zhǔn)。接口標(biāo)準(zhǔn)。 設(shè)備安裝和配置容易設(shè)備安裝和配置容易 安裝安裝USBUSB設(shè)備不必再打開(kāi)機(jī)箱,所有設(shè)備不必再打開(kāi)機(jī)箱,所有USBUSB設(shè)備支設(shè)備支持熱拔插,系統(tǒng)對(duì)其進(jìn)行自動(dòng)配置,徹底拋棄了持熱拔插,系統(tǒng)對(duì)其進(jìn)行自動(dòng)配置,徹底拋棄了過(guò)去的跳線和撥碼開(kāi)關(guān)設(shè)置。過(guò)去的跳線和撥碼開(kāi)關(guān)設(shè)置。實(shí)現(xiàn)成本低實(shí)現(xiàn)成本低 USBUSB對(duì)系統(tǒng)與對(duì)系統(tǒng)與PCPC的集成進(jìn)行了優(yōu)化,適合于開(kāi)發(fā)低的集成進(jìn)行了優(yōu)化,適合于開(kāi)發(fā)低成本的外設(shè)。成本的外設(shè)。易于擴(kuò)展易

6、于擴(kuò)展 通過(guò)使用通過(guò)使用HubHub擴(kuò)展可駁接多達(dá)擴(kuò)展可駁接多達(dá)127127個(gè)外設(shè)。標(biāo)準(zhǔn)個(gè)外設(shè)。標(biāo)準(zhǔn)USBUSB電纜長(zhǎng)度為電纜長(zhǎng)度為3 3米(低速為米(低速為5 5米)。通過(guò)米)。通過(guò)HubHub或中繼器可以或中繼器可以使外設(shè)距離達(dá)到使外設(shè)距離達(dá)到3030米。米。使用靈活使用靈活 USBUSB共有共有4 4種傳輸模式:控制傳輸(種傳輸模式:控制傳輸(controlcontrol)、)、同步傳輸(同步傳輸(SynchronizationSynchronization)、中斷傳輸)、中斷傳輸(interruptinterrupt)、塊傳輸()、塊傳輸(bulkbulk),以適應(yīng)不同設(shè)備的),以適應(yīng)

7、不同設(shè)備的需要。需要。能夠采用總線供電能夠采用總線供電 USBUSB工作在工作在5V5V電壓下,總線提供最大達(dá)電壓下,總線提供最大達(dá)500mA500mA電流。電流。物理接口和電氣特性物理接口和電氣特性接口信號(hào)線接口信號(hào)線 USBUSB總線(電纜)包含總線(電纜)包含4 4根信號(hào)線,用以傳送信號(hào)和提根信號(hào)線,用以傳送信號(hào)和提供電源。其中,供電源。其中,D D+ +和和D-D-為信號(hào)線,傳送信號(hào),是一對(duì)雙絞為信號(hào)線,傳送信號(hào),是一對(duì)雙絞線;線;V Vbusbus和和GNDGND是電源線,提供電源。是電源線,提供電源。 USBUSB接口插頭(座)也比較簡(jiǎn)單,只有接口插頭(座)也比較簡(jiǎn)單,只有4 4芯

8、。芯。 VBusD+D-GNDVBusD+D-GND(a) 物理接口物理接口 USB USB接口有兩種形狀的插口,分別稱為接口有兩種形狀的插口,分別稱為A A口口 和和B B口。口。其中其中A A口的方向面向主機(jī),而口的方向面向主機(jī),而B(niǎo) B口的方向面向口的方向面向USBUSB外設(shè)。外設(shè)。與與A A口和口和B B口分別對(duì)應(yīng)有口分別對(duì)應(yīng)有A A插座和插座和B B插座插座 USBUSB輸出驅(qū)動(dòng)特性輸出驅(qū)動(dòng)特性USBUSB采用差分驅(qū)動(dòng)輸出的方式在采用差分驅(qū)動(dòng)輸出的方式在USBUSB電纜上傳輸信號(hào)。電纜上傳輸信號(hào)。信號(hào)的低電平用信號(hào)的低電平用1.5K1.5K電阻接電阻接3.6V3.6V必須低于必須低于

9、0.3V0.3V,信,信號(hào)高電平用號(hào)高電平用15 K15 K電阻接地必須高于電阻接地必須高于2.8V2.8V。輸出驅(qū)動(dòng)必須支持三態(tài)工作,以支持雙向半雙工的數(shù)輸出驅(qū)動(dòng)必須支持三態(tài)工作,以支持雙向半雙工的數(shù)據(jù)傳輸。據(jù)傳輸。 USB接收特性 所有所有USBUSB設(shè)備、集線器和主設(shè)備、集線器和主機(jī)都必須有一個(gè)差分?jǐn)?shù)據(jù)接機(jī)都必須有一個(gè)差分?jǐn)?shù)據(jù)接收器和兩個(gè)單極性接收器。收器和兩個(gè)單極性接收器。差分接收器能分辨差分接收器能分辨D+D+和和D-D-數(shù)數(shù)據(jù)線之間小達(dá)據(jù)線之間小達(dá)200mv200mv的電平的電平差。差。兩個(gè)單極性接收器分別用于兩個(gè)單極性接收器分別用于D+D+和和D-D-數(shù)據(jù)線,它們的開(kāi)關(guān)數(shù)據(jù)線,它

10、們的開(kāi)關(guān)閾值電壓為閾值電壓為0.8V0.8V和和2.0V2.0V。 數(shù)據(jù)編碼和解碼 USBUSB使用一種不歸零反向碼使用一種不歸零反向碼NRZI(None Return Zero Invert)編碼方案。編碼方案。在該編碼方案中,在該編碼方案中,“1”1”表示電平不變,表示電平不變,“0”0”表示電表示電平改變。在數(shù)據(jù)流的每平改變。在數(shù)據(jù)流的每6 6個(gè)連續(xù)個(gè)連續(xù)“1”1”后插入后插入1 1個(gè)個(gè)“0”0”,強(qiáng)迫強(qiáng)迫NRZI碼發(fā)生變化,接收端必須去掉這個(gè)插入的碼發(fā)生變化,接收端必須去掉這個(gè)插入的“0”。上圖列出了一個(gè)數(shù)據(jù)流的上圖列出了一個(gè)數(shù)據(jù)流的NRZINRZI編碼,在圖的第二個(gè)波形圖編碼,在圖的

11、第二個(gè)波形圖中,一開(kāi)始的高電平表示數(shù)據(jù)線上的中,一開(kāi)始的高電平表示數(shù)據(jù)線上的J J(差分(差分“1”1”)態(tài),后)態(tài),后面就是面就是NRZINRZI編碼。編碼?!?”不變不變“0”改變變nUSBUSB主機(jī)或根主機(jī)或根HUBHUB對(duì)設(shè)備提供的對(duì)地電源電壓為對(duì)設(shè)備提供的對(duì)地電源電壓為4.755.25V4.755.25V。設(shè)備能吸入的最大電流值為。設(shè)備能吸入的最大電流值為500mA500mA。nUSBUSB設(shè)備的電源供給有兩種方式:自給方式(設(shè)設(shè)備的電源供給有兩種方式:自給方式(設(shè)備自帶電源)和總線供給方式。備自帶電源)和總線供給方式。USB HubUSB Hub是前一是前一種方式。種方式。nUSB

12、USB主機(jī)有一個(gè)獨(dú)立于主機(jī)有一個(gè)獨(dú)立于USBUSB的電源管理系統(tǒng)的電源管理系統(tǒng)(APMAPM)。)。USBUSB系統(tǒng)軟件通過(guò)與主機(jī)電源管理系統(tǒng)系統(tǒng)軟件通過(guò)與主機(jī)電源管理系統(tǒng)交互來(lái)處理諸如掛起、喚醒等電源事件。交互來(lái)處理諸如掛起、喚醒等電源事件。USB的電源OUTADDRENDPCRC5Token PacketDATA1PayloadDataCRC16Data PacketACKOUTADDRENDPCRC5Token PacketDATA0PayloadDataCRC16Data PacketACKH/S PktH/S PktUSB Packets7.2 USB系統(tǒng)結(jié)構(gòu)USB系統(tǒng)定義: 一個(gè)U

13、SB系統(tǒng)為USB主機(jī)(host)、USB設(shè)備(devices)和USB的互連(Interconnect)三個(gè)部分組成。什么叫USB的互連? 是指是指USBUSB設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作。它。它包括總線拓?fù)浣Y(jié)構(gòu)、通信各層的任務(wù)和相互關(guān)系、數(shù)據(jù)流包括總線拓?fù)浣Y(jié)構(gòu)、通信各層的任務(wù)和相互關(guān)系、數(shù)據(jù)流模型以及主機(jī)與多路模型以及主機(jī)與多路USBUSB設(shè)備通信時(shí)的帶寬分配等內(nèi)容。設(shè)備通信時(shí)的帶寬分配等內(nèi)容。 7.2.1 總線拓?fù)浣Y(jié)構(gòu) USBUSB總線連接了總線連接了USBUSB設(shè)備和設(shè)備和USBUSB主機(jī),主機(jī),USBUSB的物理連接采用的物理連接采用階梯式星型拓

14、撲階梯式星型拓?fù)浣Y(jié)構(gòu)結(jié)構(gòu)。每個(gè)集線器是在星型的中心每個(gè)集線器是在星型的中心,節(jié)點(diǎn)代表功能部件和設(shè)備節(jié)點(diǎn)代表功能部件和設(shè)備, ,從主機(jī)到集線從主機(jī)到集線器,或是從集線器到集線器器,或是從集線器到集線器( (或設(shè)備或設(shè)備) ),每條線段是點(diǎn)對(duì)點(diǎn)連接每條線段是點(diǎn)對(duì)點(diǎn)連接。 邏 輯 設(shè) 備主 機(jī)邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備主 機(jī)邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備邏 輯 設(shè) 備在邏輯上,各個(gè)設(shè)備好象是與主機(jī)直接相連 總線的拓?fù)浣Y(jié)構(gòu) 有的有的USB設(shè)備功能單一,直接掛載在設(shè)備功能單一,直

15、接掛載在USB Hub上。而有上。而有的的USB設(shè)備功能復(fù)雜,會(huì)將多個(gè)設(shè)備功能復(fù)雜,會(huì)將多個(gè)USB功能連在一起,成為一功能連在一起,成為一個(gè)復(fù)合設(shè)備,它甚至可以自己內(nèi)部帶一個(gè)個(gè)復(fù)合設(shè)備,它甚至可以自己內(nèi)部帶一個(gè)Hub,這個(gè),這個(gè)Hub下下接多個(gè)接多個(gè)USB子設(shè)備,其和多個(gè)子設(shè)備作為一個(gè)整體當(dāng)做一個(gè)子設(shè)備,其和多個(gè)子設(shè)備作為一個(gè)整體當(dāng)做一個(gè)USB設(shè)備設(shè)備 , 對(duì)于對(duì)于USB設(shè)備來(lái)說(shuō),每個(gè)設(shè)備來(lái)說(shuō),每個(gè)USB設(shè)備是直接連接到設(shè)備是直接連接到USB Host控制器上的控制器上的。復(fù)合設(shè)備USB邏輯拓?fù)浣Y(jié)構(gòu) 7.2.2 USB主機(jī)在一個(gè)在一個(gè)USBUSB系統(tǒng)中只有一臺(tái)主機(jī)。主機(jī)的系統(tǒng)中只有一臺(tái)主機(jī)。主

16、機(jī)的USBUSB接口稱為接口稱為USBUSB主機(jī)控制器,主機(jī)控制器,通過(guò)它主機(jī)和外圍通過(guò)它主機(jī)和外圍USBUSB設(shè)備進(jìn)行通信。設(shè)備進(jìn)行通信。USBUSB主機(jī)控制器主機(jī)控制器/ /根根Hub(USB Host Controller/Root Hub)Hub(USB Host Controller/Root Hub)分別完成對(duì)傳分別完成對(duì)傳輸?shù)某跏蓟驮O(shè)備的接入。輸?shù)某跏蓟驮O(shè)備的接入。每個(gè)每個(gè)PC的主板上都會(huì)有多個(gè)的主板上都會(huì)有多個(gè)Host控制器,控制器,這個(gè)這個(gè)Host控制器其實(shí)就是一個(gè)控制器其實(shí)就是一個(gè)PCI設(shè)備,掛載在設(shè)備,掛載在PCI總線上總線上 .USBUSB主機(jī)的功能:主機(jī)的功能:l

17、檢測(cè)檢測(cè)USBUSB設(shè)備的安裝和卸載設(shè)備的安裝和卸載l管理管理USBUSB主機(jī)和設(shè)備的間的主機(jī)和設(shè)備的間的控制流、數(shù)據(jù)流控制流、數(shù)據(jù)流l收集狀態(tài)和動(dòng)作信息收集狀態(tài)和動(dòng)作信息l給給USBUSB設(shè)備供電設(shè)備供電HostRoot HUB1. 幀產(chǎn)生USBUSB系統(tǒng)采用幀同步方式傳輸數(shù)據(jù)。系統(tǒng)采用幀同步方式傳輸數(shù)據(jù)。主機(jī)控制器將時(shí)間劃分為以主機(jī)控制器將時(shí)間劃分為以1ms1ms為單位的幀,并以每間隔為單位的幀,并以每間隔1ms1ms時(shí)間產(chǎn)生幀開(kāi)始時(shí)間產(chǎn)生幀開(kāi)始SOF(Start-of-Frame) SOF(Start-of-Frame) 令牌標(biāo)識(shí)新的令牌標(biāo)識(shí)新的一幀開(kāi)始。一幀開(kāi)始。在在SOFSOF令牌之

18、后,主機(jī)控制器傳輸其它的數(shù)據(jù)。令牌之后,主機(jī)控制器傳輸其它的數(shù)據(jù)。 S O FS O FS O FS O FF r a m e N - 1E O F 間 隙F r a m e N ( 1 m s )F r a m e N + 1M ic r o - F r a m e1 2 5 u sS O FS O FS O FS O FF r a m e N - 1E O F 間 隙F r a m e N ( 1 m s )F r a m e N + 1M ic r o - F r a m e1 2 5 u s7.6(c) 幀/微幀的關(guān)系 高速連接時(shí),每高速連接時(shí),每隔隔1ms1ms產(chǎn)生產(chǎn)生8 8個(gè)微個(gè)微

19、幀幀SOFSOF令牌。令牌。7.2.3 USB設(shè)備USB設(shè)備分成HUB、功能設(shè)備兩種。1.USB集線器集線器 n每個(gè)每個(gè)USB Host控制器都會(huì)自帶一個(gè)控制器都會(huì)自帶一個(gè)USB Hub,被稱,被稱為根為根(Root)Hub n是USB實(shí)現(xiàn)即插即用的一個(gè)關(guān)鍵部分。每個(gè)USB hub有一個(gè)面向主機(jī)的端口,稱為上游端口(Upstream Port);同時(shí)還有幾個(gè)用于和下端USB設(shè)備連接的端口,稱為下游端口(Downstream Port)。nHUB可以檢測(cè)到下游端口是否有設(shè)備插入,同時(shí)也可以禁用某一個(gè)或某幾個(gè)下游端口。每個(gè)下游端口可自由連接全速或低速設(shè)備。 USB 集線器結(jié)構(gòu)圖 HUB功能功能一個(gè)

20、一個(gè)USBUSB集線器由控制器(集線器由控制器(ControllerController)和中繼器)和中繼器(Repeater) (Repeater) 兩部分組成。兩部分組成。中繼器是一個(gè)上游端口和下游端口之間的開(kāi)關(guān)中繼器是一個(gè)上游端口和下游端口之間的開(kāi)關(guān) (Switch)(Switch),由協(xié)議控制,由協(xié)議控制它能由硬件產(chǎn)生復(fù)位(它能由硬件產(chǎn)生復(fù)位(ResetReset),休眠(),休眠(SuspendSuspend)和恢)和恢復(fù)(復(fù)(ResumeResume)信號(hào)??刂破魈峁┙涌诩拇嫫鳎糜诤椭鳎┬盘?hào)。控制器提供接口寄存器,用于和主機(jī)通信。機(jī)通信。根據(jù)集線器特定的狀態(tài),主機(jī)使用一定的控制命

21、令可對(duì)根據(jù)集線器特定的狀態(tài),主機(jī)使用一定的控制命令可對(duì)集線器進(jìn)行配置,檢查各端口并對(duì)它們進(jìn)行控制。集線器進(jìn)行配置,檢查各端口并對(duì)它們進(jìn)行控制。功能設(shè)備能在總線上發(fā)送和接收數(shù)據(jù)或控制信息,它是功能設(shè)備能在總線上發(fā)送和接收數(shù)據(jù)或控制信息,它是完成完成某項(xiàng)具體功能的硬件設(shè)備某項(xiàng)具體功能的硬件設(shè)備,如鼠標(biāo)、鍵盤(pán)等。,如鼠標(biāo)、鍵盤(pán)等。每個(gè)功能設(shè)備必須有自己的配置信息,描述自身的功能和資每個(gè)功能設(shè)備必須有自己的配置信息,描述自身的功能和資源要求。在一個(gè)功能設(shè)備被起用前,主機(jī)必須先對(duì)它進(jìn)行配源要求。在一個(gè)功能設(shè)備被起用前,主機(jī)必須先對(duì)它進(jìn)行配置。置。 每個(gè)設(shè)備中每個(gè)設(shè)備中有一個(gè)或多個(gè)邏輯連接點(diǎn)有一個(gè)或多個(gè)邏

22、輯連接點(diǎn),稱為端點(diǎn),稱為端點(diǎn)(Endpoint)。端點(diǎn)在硬件上其實(shí)是一個(gè)有一定深度的)。端點(diǎn)在硬件上其實(shí)是一個(gè)有一定深度的FIFO。端點(diǎn)和主機(jī)共有四種形式的數(shù)據(jù)傳輸類(lèi)型端點(diǎn)和主機(jī)共有四種形式的數(shù)據(jù)傳輸類(lèi)型,在設(shè)備配置時(shí)每,在設(shè)備配置時(shí)每個(gè)端點(diǎn)指明它與主機(jī)進(jìn)行何種類(lèi)型的傳輸。個(gè)端點(diǎn)指明它與主機(jī)進(jìn)行何種類(lèi)型的傳輸。所有設(shè)備都有所有設(shè)備都有一個(gè)端點(diǎn)一個(gè)端點(diǎn)0,主機(jī)與它通信,對(duì)設(shè)備進(jìn)行,主機(jī)與它通信,對(duì)設(shè)備進(jìn)行配置配置和基本的控制和基本的控制。2. 2. 功能設(shè)備功能設(shè)備設(shè)備設(shè)備配置配置1接口接口0端點(diǎn)端點(diǎn)0(管道管道0)端點(diǎn)端點(diǎn)1(管道管道1)其他端點(diǎn)其他端點(diǎn)接口接口1 端點(diǎn)端點(diǎn)其他接口其他接口配置

23、配置2 接口接口其他配置其他配置USB功能設(shè)備邏輯結(jié)構(gòu)功能設(shè)備邏輯結(jié)構(gòu) 客戶軟件客戶軟件(client software)(client software):為一個(gè)特定的:為一個(gè)特定的USBUSB設(shè)備而在主機(jī)上運(yùn)設(shè)備而在主機(jī)上運(yùn)行的軟件。這種軟件由行的軟件。這種軟件由USBUSB設(shè)備的提供者提供,或由操作系統(tǒng)提供。設(shè)備的提供者提供,或由操作系統(tǒng)提供。USBUSB系統(tǒng)軟件系統(tǒng)軟件(USB system software)(USB system software):此軟件用于在特定的操作系:此軟件用于在特定的操作系統(tǒng)中支持統(tǒng)中支持USBUSB,它由操作系統(tǒng)提供。與具體的,它由操作系統(tǒng)提供。與具體的

24、USBUSB設(shè)備無(wú)關(guān),也獨(dú)立于設(shè)備無(wú)關(guān),也獨(dú)立于客戶軟件。客戶軟件。USBUSB主機(jī)控制器主機(jī)控制器(USB Host Controller):(USB Host Controller):總線在主機(jī)方面的接口,是總線在主機(jī)方面的接口,是軟件和硬件的總和。用于支持軟件和硬件的總和。用于支持USBUSB設(shè)備通過(guò)設(shè)備通過(guò)USBUSB連到主機(jī)上。連到主機(jī)上。USB主機(jī)控制器USB系統(tǒng)軟件層客戶軟件層總線接口層USB設(shè)備層功能層主機(jī)設(shè)備邏輯連接邏輯連接物理連接7.2.4 USB7.2.4 USB的通信模型的通信模型 7.3 USB數(shù)據(jù)流模型1.1.端點(diǎn)端點(diǎn)(Endpoint)(Endpoint)在在US

25、BUSB接口中再也不用考慮接口中再也不用考慮I/OI/O地址空間、地址空間、IRQIRQ線及線及DMADMA通通道的問(wèn)題。只給每個(gè)道的問(wèn)題。只給每個(gè)USBUSB外設(shè)分配一個(gè)邏輯地址,但并外設(shè)分配一個(gè)邏輯地址,但并不指定分配任何系統(tǒng)資源。不指定分配任何系統(tǒng)資源。而而USBUSB外設(shè)本身應(yīng)包含一定數(shù)量的獨(dú)立寄存器端口,并外設(shè)本身應(yīng)包含一定數(shù)量的獨(dú)立寄存器端口,并能由能由USBUSB設(shè)備驅(qū)動(dòng)程序直接操作。這些寄存器也就是設(shè)備驅(qū)動(dòng)程序直接操作。這些寄存器也就是USBUSB設(shè)備的端點(diǎn)(設(shè)備的端點(diǎn)(EndpointEndpoint)。)。一個(gè)設(shè)備可以有多個(gè)端點(diǎn),但所有的一個(gè)設(shè)備可以有多個(gè)端點(diǎn),但所有的US

26、BUSB設(shè)備都必須有設(shè)備都必須有一個(gè)零端點(diǎn)以用于設(shè)置,完成一個(gè)零端點(diǎn)以用于設(shè)置,完成ControlControl類(lèi)型傳送。類(lèi)型傳送。2.2.管道管道(Pipe)(Pipe)n USB USB支持功能性和控制性的數(shù)據(jù)傳送,這些傳送發(fā)生在支持功能性和控制性的數(shù)據(jù)傳送,這些傳送發(fā)生在主機(jī)軟件和主機(jī)軟件和USBUSB設(shè)備的端點(diǎn)之間,我們把設(shè)備的端點(diǎn)之間,我們把USBUSB設(shè)備的端點(diǎn)和設(shè)備的端點(diǎn)和主機(jī)軟件的聯(lián)合稱為管道主機(jī)軟件的聯(lián)合稱為管道(PipePipe)。因此,管道是從邏輯)。因此,管道是從邏輯概念上來(lái)描述信息傳輸?shù)耐ǖ?。概念上?lái)描述信息傳輸?shù)耐ǖ馈一個(gè)一個(gè)USBUSB設(shè)備應(yīng)有設(shè)備應(yīng)有一個(gè)端點(diǎn)來(lái)

27、支持接受數(shù)據(jù)一個(gè)端點(diǎn)來(lái)支持接受數(shù)據(jù)的管道,還的管道,還應(yīng)有應(yīng)有另一個(gè)端點(diǎn)來(lái)支持發(fā)送數(shù)據(jù)另一個(gè)端點(diǎn)來(lái)支持發(fā)送數(shù)據(jù)的管道。的管道。n端點(diǎn)端點(diǎn)0 0所對(duì)應(yīng)的管道所對(duì)應(yīng)的管道( (默認(rèn)管道默認(rèn)管道):):主要用于控制類(lèi)型的傳主要用于控制類(lèi)型的傳輸輸. .主機(jī)對(duì)外設(shè)的控制就是通過(guò)默認(rèn)管道發(fā)主機(jī)對(duì)外設(shè)的控制就是通過(guò)默認(rèn)管道發(fā)“外設(shè)請(qǐng)求外設(shè)請(qǐng)求”來(lái)實(shí)現(xiàn)的。來(lái)實(shí)現(xiàn)的。3. USB. USB端點(diǎn)端點(diǎn), ,管道管道, ,通信流通信流USBUSB邏輯設(shè)備邏輯設(shè)備管道管道端點(diǎn)端點(diǎn)通信流通信流緩沖區(qū)緩沖區(qū)主機(jī)主機(jī)客戶軟件客戶軟件4. USB數(shù)據(jù)傳輸因?yàn)橐驗(yàn)?USB 系統(tǒng)不是端到端的拓?fù)浣Y(jié)構(gòu),所以決定了系統(tǒng)不是端到端的拓

28、撲結(jié)構(gòu),所以決定了 USB 設(shè)備之間不能發(fā)送信息,設(shè)備只能響應(yīng)主機(jī)的請(qǐng)求設(shè)備之間不能發(fā)送信息,設(shè)備只能響應(yīng)主機(jī)的請(qǐng)求(遠(yuǎn)程喚(遠(yuǎn)程喚醒除外)。醒除外)。USB 傳輸?shù)姆较蛴袃煞N,從設(shè)備到主機(jī)(傳輸?shù)姆较蛴袃煞N,從設(shè)備到主機(jī)(IN) 和從主機(jī)到和從主機(jī)到設(shè)備(設(shè)備(OUT)。)。設(shè)備要想向主機(jī)發(fā)送數(shù)據(jù),則需將數(shù)據(jù)填充到設(shè)備要想向主機(jī)發(fā)送數(shù)據(jù),則需將數(shù)據(jù)填充到 IN端點(diǎn),然后端點(diǎn),然后等待主機(jī)發(fā)送等待主機(jī)發(fā)送IN請(qǐng)求包,如果主機(jī)永不發(fā)送請(qǐng)求包,如果主機(jī)永不發(fā)送 IN 包,數(shù)據(jù)將包,數(shù)據(jù)將無(wú)限期滯留在端點(diǎn)緩沖器中;無(wú)限期滯留在端點(diǎn)緩沖器中;如果主機(jī)想發(fā)送命令或數(shù)據(jù)到如果主機(jī)想發(fā)送命令或數(shù)據(jù)到 USB

29、 設(shè)備,則需先發(fā)出設(shè)備,則需先發(fā)出 OUT 令牌,后跟要傳輸?shù)臄?shù)據(jù)。令牌,后跟要傳輸?shù)臄?shù)據(jù)。1. 如果設(shè)備有空間存放數(shù)據(jù)且無(wú)誤接受則發(fā)一個(gè)如果設(shè)備有空間存放數(shù)據(jù)且無(wú)誤接受則發(fā)一個(gè) ACK 給主機(jī)給主機(jī);如果設(shè)備忙,則發(fā)送;如果設(shè)備忙,則發(fā)送 NAK ;如果發(fā)生錯(cuò)誤就什么都不發(fā);如果發(fā)生錯(cuò)誤就什么都不發(fā)回。對(duì)于后兩種情況,主機(jī)在隨后重發(fā)數(shù)據(jù)?;亍?duì)于后兩種情況,主機(jī)在隨后重發(fā)數(shù)據(jù)。 在在USBUSB線路上傳輸?shù)淖钚?shù)據(jù)塊是包。一個(gè)包由同步信線路上傳輸?shù)淖钚?shù)據(jù)塊是包。一個(gè)包由同步信號(hào)(號(hào)(SYNCSYNC),包),包IDID(PIDPID),有時(shí)還有一些數(shù)據(jù)和一些),有時(shí)還有一些數(shù)據(jù)和一些CRC

30、CRC校驗(yàn)字節(jié)組成。校驗(yàn)字節(jié)組成。傳輸過(guò)程傳輸過(guò)程O(píng)UTADDRENDPCRC5Token PacketDATA1PayloadDataCRC16Data PacketACKOUTADDRENDPCRC5Token PacketDATA0PayloadDataCRC16Data PacketACKH/S PktH/S PktPIDSYNCADDRENDPCRC8位位8位位7位位4位位5位位標(biāo)志(令牌)包格式標(biāo)志(令牌)包格式 USBUSB是一種查詢(是一種查詢(PolledPolled)式的總線,)式的總線,每一次每一次USBUSB數(shù)據(jù)傳輸數(shù)據(jù)傳輸都都是是由由USBUSB主機(jī)控制器發(fā)起主機(jī)控制

31、器發(fā)起。主機(jī)總是主機(jī)總是用一個(gè)令牌(用一個(gè)令牌(TOKENTOKEN)包開(kāi)始一個(gè)事務(wù))包開(kāi)始一個(gè)事務(wù)。令牌包指定。令牌包指定一個(gè)設(shè)備地址和端點(diǎn)地址。一個(gè)設(shè)備地址和端點(diǎn)地址。 所有設(shè)備對(duì)地址進(jìn)行解碼,與此地址匹配的設(shè)備的端點(diǎn)將與所有設(shè)備對(duì)地址進(jìn)行解碼,與此地址匹配的設(shè)備的端點(diǎn)將與主機(jī)進(jìn)行通信。主機(jī)進(jìn)行通信。 最后是沿?cái)?shù)據(jù)傳輸?shù)姆捶较虬l(fā)送一個(gè)握手(最后是沿?cái)?shù)據(jù)傳輸?shù)姆捶较虬l(fā)送一個(gè)握手(HandshakeHandshake)包。)包。注意:7.4 USB協(xié)議層 7.4.1 7.4.1 包字段格式包字段格式0 1 0 1 0 1 0 0PID0IdleSYNC: 所有包的開(kāi)始都是同步域,所有包的開(kāi)始都

32、是同步域,輸入電路利用它來(lái)同步,以便有輸入電路利用它來(lái)同步,以便有效數(shù)據(jù)到來(lái)時(shí)識(shí)別,長(zhǎng)度為效數(shù)據(jù)到來(lái)時(shí)識(shí)別,長(zhǎng)度為8位。位。同步同步包類(lèi)型包類(lèi)型端點(diǎn)端點(diǎn)設(shè)備地設(shè)備地址址校驗(yàn)校驗(yàn)PIDSYNCADDRENDPCRC8位位8位位7位位4位位5位位同步同步包類(lèi)型包類(lèi)型端點(diǎn)端點(diǎn)設(shè)備地設(shè)備地址址校驗(yàn)校驗(yàn)PIDSYNCADDRENDPCRC8位位8位位7位位4位位5位位表表7.1 PID 7.1 PID 類(lèi)型類(lèi)型PID 類(lèi)型類(lèi)型PID 名名PID3:0描述描述令牌令牌(Token)OUT (輸出輸出)IN (輸入輸入)SOF (幀開(kāi)始幀開(kāi)始)SETUP (建立建立)0001B1001B0101B1101B

33、表示數(shù)據(jù)方向從主機(jī)到設(shè)備表示數(shù)據(jù)方向從主機(jī)到設(shè)備表示數(shù)據(jù)方向從設(shè)備到主機(jī)表示數(shù)據(jù)方向從設(shè)備到主機(jī)幀開(kāi)始標(biāo)記和幀號(hào)幀開(kāi)始標(biāo)記和幀號(hào)表示這是一個(gè)表示這是一個(gè)USB標(biāo)準(zhǔn)控制事務(wù)包標(biāo)準(zhǔn)控制事務(wù)包數(shù)據(jù)數(shù)據(jù)(DATA)DATA0 (數(shù)據(jù)數(shù)據(jù)0)DATA1 *DATA2MDATA0011B1011B0111B1111B偶數(shù)據(jù)包偶數(shù)據(jù)包PID奇數(shù)據(jù)包奇數(shù)據(jù)包PID高速傳輸時(shí)數(shù)據(jù)高速傳輸時(shí)數(shù)據(jù)高速傳輸微幀數(shù)據(jù)高速傳輸微幀數(shù)據(jù)握手握手(Handshake)ACK (確認(rèn)確認(rèn))NAK (不確認(rèn)不確認(rèn))STALL (停止停止)NYET0010B1010B1110B0110B表示傳輸成功完成表示傳輸成功完成;表示設(shè)備表

34、示設(shè)備/接收方正忙或暫時(shí)沒(méi)有數(shù)據(jù)接收方正忙或暫時(shí)沒(méi)有數(shù)據(jù)端口掛起,或一個(gè)控制管道請(qǐng)求不被支持。端口掛起,或一個(gè)控制管道請(qǐng)求不被支持。接收方無(wú)響應(yīng)。接收方無(wú)響應(yīng)。專(zhuān)用專(zhuān)用(Special)PRE (前同步前同步)ERR (錯(cuò)誤錯(cuò)誤)SPLIT(分割事務(wù)分割事務(wù))PING1100B1100B1000B0100B主機(jī)發(fā)送的前同步。打開(kāi)到低速設(shè)備的通信。主機(jī)發(fā)送的前同步。打開(kāi)到低速設(shè)備的通信。分割事務(wù)錯(cuò)誤分割事務(wù)錯(cuò)誤,握手包。握手包。高速分割事務(wù)令牌包。高速分割事務(wù)令牌包。高速流控制探測(cè)令牌包。高速流控制探測(cè)令牌包。* *為為USB2.0USB2.0協(xié)議協(xié)議PIDPID。USB2.0 PIDADDR:

35、設(shè)備地址域,確設(shè)備地址域,確定包的傳輸目的地。定包的傳輸目的地。7個(gè)個(gè)長(zhǎng)度,可有長(zhǎng)度,可有128個(gè)地址。個(gè)地址。同步同步包類(lèi)型包類(lèi)型端點(diǎn)端點(diǎn)設(shè)備地設(shè)備地址址校驗(yàn)校驗(yàn)PIDSYNCADDRENDPCRC8位位8位位7位位4位位5位位CRC:檢查域,檢查域,5位長(zhǎng)度,位長(zhǎng)度,用于用于ADDR域和域和ENDP域的域的校驗(yàn)。校驗(yàn)。 同步包類(lèi)型端點(diǎn)設(shè)備地址校驗(yàn)PIDSYNCADDRENDPCRC58位8位7位4位5位ENDP:端點(diǎn)域,確定包要傳輸?shù)皆O(shè)備端點(diǎn)域,確定包要傳輸?shù)皆O(shè)備的哪個(gè)端點(diǎn)。的哪個(gè)端點(diǎn)。4位長(zhǎng)度,一個(gè)設(shè)備可有位長(zhǎng)度,一個(gè)設(shè)備可有16個(gè)端點(diǎn)號(hào)。個(gè)端點(diǎn)號(hào)。所有的功能部件都必須在端口所有的功能部

36、件都必須在端口0 0提供一個(gè)控制管道(缺省控制管提供一個(gè)控制管道(缺省控制管道)。道)。對(duì)于低速設(shè)備,每個(gè)功能部件對(duì)于低速設(shè)備,每個(gè)功能部件最多提供最多提供3 3個(gè)管道個(gè)管道:在端口:在端口0 0的控制管的控制管道加上道加上2 2個(gè)附加管道。個(gè)附加管道。1.1.全速功能部件全速功能部件可以支持最多可達(dá)可以支持最多可達(dá)1616個(gè)個(gè)的任何類(lèi)型的端口。的任何類(lèi)型的端口。 7.4.2 包格式令牌包由令牌包由PIDPID、地址、端點(diǎn)和、地址、端點(diǎn)和CRCCRC校驗(yàn)字段組成。校驗(yàn)字段組成。其中地址字段和端點(diǎn)字段唯一確定了某個(gè)設(shè)備上的某其中地址字段和端點(diǎn)字段唯一確定了某個(gè)設(shè)備上的某一個(gè)端點(diǎn)。一個(gè)端點(diǎn)。只有主

37、機(jī)才可以發(fā)出令牌包。只有主機(jī)才可以發(fā)出令牌包。OUTADDRENDPCRC5Token PacketDATA1PayloadDataCRC16Data PacketACKOUTADDRENDPCRC5Token PacketDATA0PayloadDataCRC16Data PacketACKH/S PktH/S Pkt令牌包令牌包數(shù)據(jù)包數(shù)據(jù)包(Data Packet)(Data Packet) PIDDATACRC168位01023/8192位16位 數(shù)據(jù)包格式0011 DATA01011 DATA1OUTADDRENDPCRC5Token PacketDATA1PayloadDataCRC

38、16Data PacketACKOUTADDRENDPCRC5Token PacketDATA0PayloadDataCRC16Data PacketACKH/S PktH/S Pkt握手包(Handshake Packet) 握手包(握手包(HandshakeHandshake)由設(shè)備用來(lái)報(bào)告交換的狀態(tài)。握)由設(shè)備用來(lái)報(bào)告交換的狀態(tài)。握手包是由數(shù)據(jù)的接受方發(fā)向數(shù)據(jù)的發(fā)送方的。手包是由數(shù)據(jù)的接受方發(fā)向數(shù)據(jù)的發(fā)送方的。 PID8位握手包握手包格式格式握手包有三種類(lèi)型:握手包有三種類(lèi)型:確認(rèn)確認(rèn) (ACK)表示表示接受數(shù)據(jù)正確接受數(shù)據(jù)正確。發(fā)送設(shè)備會(huì)收到一個(gè)。發(fā)送設(shè)備會(huì)收到一個(gè)ACK。不確認(rèn)不確認(rèn)

39、(NAK)表示表示功能設(shè)備不能接受來(lái)自功能設(shè)備不能接受來(lái)自Host的數(shù)據(jù)的數(shù)據(jù),或者沒(méi)有,或者沒(méi)有任何數(shù)據(jù)返回給任何數(shù)據(jù)返回給Host。1.1.停止(停止(掛起掛起)(STALL)表示表示功能設(shè)備無(wú)法完成數(shù)據(jù)傳輸功能設(shè)備無(wú)法完成數(shù)據(jù)傳輸,并且需,并且需要主機(jī)插手來(lái)解決故障,以使設(shè)備從掛起狀態(tài)中恢復(fù)正常。要主機(jī)插手來(lái)解決故障,以使設(shè)備從掛起狀態(tài)中恢復(fù)正常。 0010B ACK 1010B NAK 1110B STALLOUTADDRENDPCRC5Token PacketDATA1PayloadDataCRC16Data PacketACKOUTADDRENDPCRC5Token PacketD

40、ATA0PayloadDataCRC16Data PacketACKH/S PktH/S Pkt幀開(kāi)始包SOF (Start-of-F Frame Packet) USBUSB的總線時(shí)間被劃分為幀,一個(gè)幀周期可以描述為:在主機(jī)發(fā)幀開(kāi)的總線時(shí)間被劃分為幀,一個(gè)幀周期可以描述為:在主機(jī)發(fā)幀開(kāi)始標(biāo)志(幀啟動(dòng)標(biāo)志)后,總線處于工作狀態(tài),主機(jī)將發(fā)送和接收幾個(gè)交換,始標(biāo)志(幀啟動(dòng)標(biāo)志)后,總線處于工作狀態(tài),主機(jī)將發(fā)送和接收幾個(gè)交換,交換完畢,然后進(jìn)入幀結(jié)束間隔區(qū),此時(shí)總線處空閑狀態(tài),等待下一個(gè)幀啟交換完畢,然后進(jìn)入幀結(jié)束間隔區(qū),此時(shí)總線處空閑狀態(tài),等待下一個(gè)幀啟動(dòng)標(biāo)志的到來(lái),再開(kāi)始下一幀。動(dòng)標(biāo)志的到來(lái),再

41、開(kāi)始下一幀。PIDSYNCFRAME NUMBERCRC8位8位07FFH 11位5位幀開(kāi)始包格式幀開(kāi)始包格式幀號(hào)字段是一個(gè)幀號(hào)字段是一個(gè)1111位的字段,主機(jī)每過(guò)一幀位的字段,主機(jī)每過(guò)一幀就將其內(nèi)容加一。幀號(hào)字段達(dá)到其最大值就將其內(nèi)容加一。幀號(hào)字段達(dá)到其最大值7FFH7FFH時(shí)歸零,且它僅每個(gè)幀最初時(shí)刻在時(shí)歸零,且它僅每個(gè)幀最初時(shí)刻在SOFSOF標(biāo)記中被發(fā)送。標(biāo)記中被發(fā)送。 0101 SOF(幀開(kāi)始)SOF EOF 間隙(FRAME N-1) FRAME N FRAME N+1SOFSOFSOF主機(jī)控制器有義務(wù)將主機(jī)控制器有義務(wù)將USBUSB時(shí)間劃分為以時(shí)間劃分為以1ms1ms為單位的幀。主

42、機(jī)控制為單位的幀。主機(jī)控制器以每器以每1ms1ms間隙產(chǎn)生間隙產(chǎn)生SOF(Start-of-Frame)SOF(Start-of-Frame)標(biāo)識(shí)以示新的一幀的開(kāi)標(biāo)識(shí)以示新的一幀的開(kāi)始始( (如圖)。如圖)。SOFSOF標(biāo)識(shí)是一幀的開(kāi)始部份,在標(biāo)識(shí)是一幀的開(kāi)始部份,在SOFSOF標(biāo)識(shí)之后主機(jī)控制器在該幀的標(biāo)識(shí)之后主機(jī)控制器在該幀的余下時(shí)間內(nèi)傳輸其它的東西。當(dāng)主機(jī)控制器處于正常工作狀態(tài)時(shí),余下時(shí)間內(nèi)傳輸其它的東西。當(dāng)主機(jī)控制器處于正常工作狀態(tài)時(shí),SOFSOF標(biāo)識(shí)必須以標(biāo)識(shí)必須以1ms1ms為間隙連續(xù)的發(fā)送而不管其它的總線活動(dòng)。為間隙連續(xù)的發(fā)送而不管其它的總線活動(dòng)。當(dāng)總線控制器處于不給總線提供能量

43、的狀態(tài)時(shí),它不能產(chǎn)生當(dāng)總線控制器處于不給總線提供能量的狀態(tài)時(shí),它不能產(chǎn)生SOFSOF標(biāo)識(shí)。當(dāng)總線控制器不產(chǎn)生標(biāo)識(shí)。當(dāng)總線控制器不產(chǎn)生SOFSOF標(biāo)識(shí)時(shí),它處于一種節(jié)能方式。標(biāo)識(shí)時(shí),它處于一種節(jié)能方式。幀序號(hào)具有以下各方面的作用幀序號(hào)具有以下各方面的作用: :用于將兩幀唯一的區(qū)別開(kāi)用于將兩幀唯一的區(qū)別開(kāi), ,在每幀在每幀的結(jié)尾處加的結(jié)尾處加1;1;對(duì)于它的后繼幀有效對(duì)于它的后繼幀有效 . . 傳輸傳輸傳輸傳輸傳輸傳輸事務(wù)事務(wù)事務(wù)事務(wù)事務(wù)事務(wù)令牌包令牌包數(shù)據(jù)包數(shù)據(jù)包握手包握手包PIDPID附加信息附加信息CRCCRC 當(dāng)主機(jī)與設(shè)備需要通信當(dāng)主機(jī)與設(shè)備需要通信時(shí),設(shè)備驅(qū)動(dòng)和應(yīng)用程序便時(shí),設(shè)備驅(qū)動(dòng)和應(yīng)

44、用程序便會(huì)啟動(dòng)一個(gè)傳輸會(huì)啟動(dòng)一個(gè)傳輸 。 一個(gè)傳輸包括一個(gè)或多一個(gè)傳輸包括一個(gè)或多個(gè)事務(wù),每個(gè)事務(wù)又包括一個(gè)事務(wù),每個(gè)事務(wù)又包括一個(gè)令牌包,可能還有一個(gè)數(shù)個(gè)令牌包,可能還有一個(gè)數(shù)據(jù)和據(jù)和/或握手包?;蛭帐职?。 每個(gè)每個(gè)USB事務(wù)最多由三事務(wù)最多由三個(gè)段組成:令牌、數(shù)據(jù)和握個(gè)段組成:令牌、數(shù)據(jù)和握手。每個(gè)段由一個(gè)或兩個(gè)被手。每個(gè)段由一個(gè)或兩個(gè)被傳輸?shù)陌M成。所有的包都傳輸?shù)陌M成。所有的包都是以包含了識(shí)別信息的一個(gè)是以包含了識(shí)別信息的一個(gè)包包ID(PID)開(kāi)始。)開(kāi)始。 7.4.3 事務(wù)與傳輸類(lèi)型空閑空閑控制傳輸是雙向傳輸,數(shù)據(jù)量通常較控制傳輸是雙向傳輸,數(shù)據(jù)量通常較小。主要用來(lái)進(jìn)行查詢、配置和

45、給小。主要用來(lái)進(jìn)行查詢、配置和給USBUSB設(shè)備發(fā)送通用的命令。設(shè)備發(fā)送通用的命令。控 制 傳 輸 有 兩 個(gè) 或 三 個(gè) 階 段 :控 制 傳 輸 有 兩 個(gè) 或 三 個(gè) 階 段 : 設(shè)置(設(shè)置(SETUPSETUP)、數(shù)據(jù)()、數(shù)據(jù)(DATADATA,可選,可選擇)、和狀態(tài)(擇)、和狀態(tài)(STATUSSTATUS)。)。每個(gè)控制傳輸必須有設(shè)置和狀態(tài)階段每個(gè)控制傳輸必須有設(shè)置和狀態(tài)階段,可以沒(méi)有數(shù)據(jù)階段,因?yàn)樾枰p向,可以沒(méi)有數(shù)據(jù)階段,因?yàn)樾枰p向傳輸某些信息,所有消息流程使用了傳輸某些信息,所有消息流程使用了終端的終端的ININ和和OUTOUT地址。地址。在一個(gè)控制寫(xiě)傳輸中。數(shù)據(jù)由主機(jī)流在

46、一個(gè)控制寫(xiě)傳輸中。數(shù)據(jù)由主機(jī)流向設(shè)備。讀傳輸中,數(shù)據(jù)由設(shè)備流向向設(shè)備。讀傳輸中,數(shù)據(jù)由設(shè)備流向主機(jī)。主機(jī)。1、控制傳輸(Control Transfers) 控制傳輸發(fā)送設(shè)備請(qǐng)求信息,主要用于讀取設(shè)備配置信息及設(shè)備狀態(tài)、設(shè)置設(shè)備地址,設(shè)置設(shè)備屬性、發(fā)送控制命令等功能。控制傳輸流程控制傳輸流程: DATA08 bytesSetupDataCRC16Data PacketACKH/S PktSETUPADDRENDPCRC5Token Packetn在在SetupSetup階段,主機(jī)送命令給設(shè)備;階段,主機(jī)送命令給設(shè)備; SETUPINADDRENDPCRC5Token PacketDATA1Pa

47、yloadDataCRC16Data PacketACKH/S PktDATAStage(optional)2.2.傳輸?shù)氖莻鬏數(shù)氖荢etupSetup階段所設(shè)定的數(shù)據(jù)階段所設(shè)定的數(shù)據(jù)控制傳輸控制傳輸DATA1OUTADDRENDPCRC5Token PacketCRC16Data PktACKH/S PktSTATUSStage3.Status階段,設(shè)備返回握手信號(hào)給主機(jī)。2、批傳輸 是非周期性的數(shù)據(jù)傳輸,僅全速/高速設(shè)備支持,同時(shí),當(dāng)且僅當(dāng)總線帶寬有效時(shí)才進(jìn)行。 批(批(BulkBulk)傳輸是單向,也可以是雙向。它用于傳送大批數(shù))傳輸是單向,也可以是雙向。它用于傳送大批數(shù)據(jù),這種數(shù)據(jù)的時(shí)

48、間性不強(qiáng),但要確保數(shù)據(jù)的正確性。據(jù),這種數(shù)據(jù)的時(shí)間性不強(qiáng),但要確保數(shù)據(jù)的正確性。批處理事務(wù)是由批處理事務(wù)是由標(biāo)記,數(shù)據(jù)和握手包標(biāo)記,數(shù)據(jù)和握手包構(gòu)成的三時(shí)相的事務(wù)。構(gòu)成的三時(shí)相的事務(wù)。在某些流控制和掛起條件下,數(shù)據(jù)被握手信號(hào)替換,從而產(chǎn)在某些流控制和掛起條件下,數(shù)據(jù)被握手信號(hào)替換,從而產(chǎn)生了沒(méi)有數(shù)據(jù)傳輸?shù)膬蓵r(shí)相的事務(wù)生了沒(méi)有數(shù)據(jù)傳輸?shù)膬蓵r(shí)相的事務(wù)INADDRENDPCRC5Token PacketPayloadDataCRC16Data PacketACKADDRENDPCRC5Token PacketDATA0PayloadDataCRC16Data PacketACKH/S PktH/S

49、PktDATA1IN批量傳輸流程:主機(jī)功能部件空閑注意:在一個(gè)空閑的總線上,批量傳輸是很快的。在全速下以在一個(gè)空閑的總線上,批量傳輸是很快的。在全速下以8 8、1616、3232或或6464字節(jié)傳輸,高速下以字節(jié)傳輸,高速下以512512字節(jié)傳輸。主機(jī)在有可用的總線時(shí)間字節(jié)傳輸。主機(jī)在有可用的總線時(shí)間時(shí)才安排批量傳輸。時(shí)才安排批量傳輸。 當(dāng)主機(jī)準(zhǔn)備好了接收批處理數(shù)據(jù)的時(shí)候,它發(fā)出輸入標(biāo)記。功能當(dāng)主機(jī)準(zhǔn)備好了接收批處理數(shù)據(jù)的時(shí)候,它發(fā)出輸入標(biāo)記。功能部件端口通過(guò)返回?cái)?shù)據(jù)包,或者如果不能返回?cái)?shù)據(jù),則返回部件端口通過(guò)返回?cái)?shù)據(jù)包,或者如果不能返回?cái)?shù)據(jù),則返回NAKNAK或或STALLSTALL握手作為

50、應(yīng)答。握手作為應(yīng)答。NAKNAK表示功能部件暫時(shí)不能返回?cái)?shù)據(jù),而表示功能部件暫時(shí)不能返回?cái)?shù)據(jù),而STALLSTALL表示端口永久地被停止。如果主機(jī)收到合法的的數(shù)據(jù)包,則表示端口永久地被停止。如果主機(jī)收到合法的的數(shù)據(jù)包,則它用它用ACKACK握手來(lái)應(yīng)答。握手來(lái)應(yīng)答。當(dāng)主機(jī)準(zhǔn)備好了傳送成批數(shù)據(jù)的時(shí)候,它首先發(fā)出一個(gè)后跟數(shù)據(jù)當(dāng)主機(jī)準(zhǔn)備好了傳送成批數(shù)據(jù)的時(shí)候,它首先發(fā)出一個(gè)后跟數(shù)據(jù)包的輸出標(biāo)記包。如果數(shù)據(jù)由功能部件無(wú)錯(cuò)地接收到,那么它將包的輸出標(biāo)記包。如果數(shù)據(jù)由功能部件無(wú)錯(cuò)地接收到,那么它將返回三個(gè)握手中的一個(gè)。返回三個(gè)握手中的一個(gè)。3、中斷傳輸中斷傳輸用于支持?jǐn)?shù)據(jù)量少的周期性傳輸需求。中斷(Inte

51、rrupt)傳輸是單向的,且僅輸入到主機(jī),它用于不固定的、少量的數(shù)據(jù)傳送。INADDRENDPCRC5Token PacketDATA1PayloadDataCRC16Data PacketACKH/S Pkt當(dāng)設(shè)備需要主機(jī)為其服務(wù)時(shí),向主機(jī)發(fā)送此類(lèi)信息以通知主機(jī),像鍵盤(pán)、鼠標(biāo)之類(lèi)的輸入設(shè)備采用這種方式。USB的中斷是Polling(查詢)類(lèi)型。中斷傳輸流程:中斷方式傳輸主要用中斷方式傳輸主要用于定時(shí)查詢?cè)O(shè)備是否于定時(shí)查詢?cè)O(shè)備是否有中斷數(shù)據(jù)要傳送。有中斷數(shù)據(jù)要傳送。 鍵盤(pán)、操縱桿和鼠標(biāo)鍵盤(pán)、操縱桿和鼠標(biāo)就屬于這一類(lèi)型。中就屬于這一類(lèi)型。中斷方式傳送是單向的斷方式傳送是單向的并且對(duì)于主機(jī)來(lái)說(shuō)只并

52、且對(duì)于主機(jī)來(lái)說(shuō)只有輸入的方式。有輸入的方式。主機(jī)功能部件4 4、同步、同步( (等時(shí)等時(shí)) )傳輸(傳輸(IsochronousIsochronous) 常用于語(yǔ)音設(shè)備常用于語(yǔ)音設(shè)備 同步傳輸可以單向也可以雙向,用于傳送連續(xù)性、實(shí)時(shí)的數(shù)據(jù)。同步傳輸可以單向也可以雙向,用于傳送連續(xù)性、實(shí)時(shí)的數(shù)據(jù)。同步傳輸要求恒定速率傳輸?shù)臄?shù)據(jù),如聲音、音樂(lè)等。按時(shí)到達(dá)對(duì)同步傳輸要求恒定速率傳輸?shù)臄?shù)據(jù),如聲音、音樂(lè)等。按時(shí)到達(dá)對(duì)于同步傳輸來(lái)說(shuō)最為重要。于同步傳輸來(lái)說(shuō)最為重要。在每一在每一USBUSB幀中,固定的幀中,固定的USBUSB帶寬被留給同步傳輸。帶寬被留給同步傳輸。 INADDRENDPCRC5Token

53、 PacketDATA0PayloadDataCRC16Data Packet同步傳輸流程: 注意注意: : 為了減輕開(kāi)銷(xiāo),同步傳輸沒(méi)為了減輕開(kāi)銷(xiāo),同步傳輸沒(méi)有握手有握手(ACK/NAK/STALL)(ACK/NAK/STALL)和重和重試。錯(cuò)誤檢測(cè)僅限于試。錯(cuò)誤檢測(cè)僅限于1616位的位的CRCCRC。同步傳輸不使用數(shù)據(jù)翻轉(zhuǎn)機(jī)同步傳輸不使用數(shù)據(jù)翻轉(zhuǎn)機(jī)制。全速同步傳輸只使用制。全速同步傳輸只使用DATA0 PIDDATA0 PID。1.1. 在高速模式下,每一個(gè)微幀在高速模式下,每一個(gè)微幀中最多可以傳送三個(gè)同步包中最多可以傳送三個(gè)同步包。主機(jī)主機(jī)功能部件功能部件7.5 USB設(shè)備架構(gòu)設(shè)備架構(gòu)一個(gè)

54、一個(gè)USB設(shè)備可以在邏輯上分為三層:總線接口層設(shè)備可以在邏輯上分為三層:總線接口層(Bus Interface Layer)、設(shè)備層()、設(shè)備層(Device Layer)和功能層()和功能層(Function Layer)??偩€接)。總線接口層處于最底層,它的工作是發(fā)送和接收數(shù)據(jù)包。設(shè)口層處于最底層,它的工作是發(fā)送和接收數(shù)據(jù)包。設(shè)備層是中間層,它的功能有點(diǎn)象一個(gè)路由器,把總線備層是中間層,它的功能有點(diǎn)象一個(gè)路由器,把總線接口層的數(shù)據(jù)派發(fā)到各個(gè)端點(diǎn)。最上層是功能層,實(shí)接口層的數(shù)據(jù)派發(fā)到各個(gè)端點(diǎn)。最上層是功能層,實(shí)現(xiàn)設(shè)備特定的功能?,F(xiàn)設(shè)備特定的功能。本節(jié)主要介紹所有本節(jié)主要介紹所有USB設(shè)備的中

55、間層的一些共同特設(shè)備的中間層的一些共同特征和操作。實(shí)際上,設(shè)備的功能層正是通過(guò)調(diào)用這些征和操作。實(shí)際上,設(shè)備的功能層正是通過(guò)調(diào)用這些特征和操作來(lái)實(shí)現(xiàn)和主機(jī)的通信的。特征和操作來(lái)實(shí)現(xiàn)和主機(jī)的通信的。 7.5.1 設(shè)備的狀態(tài)圖和總線枚舉設(shè)備的狀態(tài)圖和總線枚舉 USB設(shè)備有幾個(gè)可能的狀態(tài)值,其中某些狀態(tài)對(duì)我們是可見(jiàn)設(shè)備有幾個(gè)可能的狀態(tài)值,其中某些狀態(tài)對(duì)我們是可見(jiàn)的,而有些是不可見(jiàn)的。對(duì)于的,而有些是不可見(jiàn)的。對(duì)于USB的實(shí)現(xiàn)者,要關(guān)心的是那的實(shí)現(xiàn)者,要關(guān)心的是那些可見(jiàn)的狀態(tài)(些可見(jiàn)的狀態(tài)(Visible State)。)。USB設(shè)備的設(shè)備的可見(jiàn)狀態(tài)可見(jiàn)狀態(tài)有:有:插入插入(Attached)、)、上

56、電上電(Powered)、)、缺省缺?。―efault)、)、地址地址(Address)、)、被配置被配置(Configured)和)和休眠休眠(Suspended)。)。枚舉就是從設(shè)備讀取一些信息,知道設(shè)備是什么樣的設(shè)備,枚舉就是從設(shè)備讀取一些信息,知道設(shè)備是什么樣的設(shè)備,如何進(jìn)行通信,這樣主機(jī)就可以根據(jù)這些信息來(lái)加載合適的如何進(jìn)行通信,這樣主機(jī)就可以根據(jù)這些信息來(lái)加載合適的驅(qū)動(dòng)程序。調(diào)試驅(qū)動(dòng)程序。調(diào)試USB設(shè)備,很重要的一點(diǎn)就是設(shè)備,很重要的一點(diǎn)就是USB的枚舉的枚舉過(guò)程,只要枚舉成功了,那么就已經(jīng)成功大半了。過(guò)程,只要枚舉成功了,那么就已經(jīng)成功大半了。插入(插入(Attached)設(shè)備插

57、入設(shè)備插入U(xiǎn)SB集線器或主機(jī)根集線器的下游集線器或主機(jī)根集線器的下游端口后,設(shè)備端的程序應(yīng)讓端口后,設(shè)備端的程序應(yīng)讓D+和和D-數(shù)據(jù)線數(shù)據(jù)線發(fā)出一個(gè)大于發(fā)出一個(gè)大于2.5s的閑置(的閑置(Idle)信號(hào),)信號(hào),讓主機(jī)知道有設(shè)備插入。全速設(shè)備的閑置信讓主機(jī)知道有設(shè)備插入。全速設(shè)備的閑置信號(hào)是號(hào)是D+高電平,高電平,D-低電平;低速設(shè)備與之低電平;低速設(shè)備與之相反。這樣,主機(jī)不僅能檢測(cè)到是否有設(shè)備相反。這樣,主機(jī)不僅能檢測(cè)到是否有設(shè)備插入,也能同時(shí)辨別插入的是全速設(shè)備還是插入,也能同時(shí)辨別插入的是全速設(shè)備還是低速設(shè)備。低速設(shè)備。上電(上電(Powered)USB協(xié)議允許設(shè)備有協(xié)議允許設(shè)備有總線供

58、電總線供電(Bus Powered)和)和自供電自供電(Self-powered)兩種供電方式。對(duì)于自供電的設(shè)備,它自兩種供電方式。對(duì)于自供電的設(shè)備,它自帶的電源可以在被插入之前就對(duì)設(shè)備供電。帶的電源可以在被插入之前就對(duì)設(shè)備供電。但無(wú)論哪種方式,設(shè)備的但無(wú)論哪種方式,設(shè)備的USB接口都是由接口都是由主機(jī)或集線器通過(guò)主機(jī)或集線器通過(guò)Vbus總線對(duì)其供電的??偩€對(duì)其供電的。所指的上電狀態(tài)就是指所指的上電狀態(tài)就是指Vbus開(kāi)始對(duì)設(shè)備開(kāi)始對(duì)設(shè)備USB接口供電的狀態(tài)。接口供電的狀態(tài)。 缺?。ㄈ笔。―efault)設(shè)備上電后,它等待接收來(lái)自主機(jī)的復(fù)位設(shè)備上電后,它等待接收來(lái)自主機(jī)的復(fù)位(Reset)信號(hào)。

59、復(fù)位后,設(shè)備處于缺省)信號(hào)。復(fù)位后,設(shè)備處于缺省狀態(tài)。它具有一個(gè)狀態(tài)。它具有一個(gè)缺省地址缺省地址0,等待主機(jī)等待主機(jī)給它分配一個(gè)唯一的非給它分配一個(gè)唯一的非0地址地址,并對(duì)它進(jìn),并對(duì)它進(jìn)行配置。行配置。地址(地址(Address)主機(jī)分配給設(shè)備一個(gè)非主機(jī)分配給設(shè)備一個(gè)非0的唯一地址,使設(shè)備的唯一地址,使設(shè)備進(jìn)入地址狀態(tài)。在分配地址的過(guò)程中,主機(jī)進(jìn)入地址狀態(tài)。在分配地址的過(guò)程中,主機(jī)仍然用缺省地址仍然用缺省地址0和設(shè)備進(jìn)行通信,讀取設(shè)備和設(shè)備進(jìn)行通信,讀取設(shè)備的設(shè)備描述符。在設(shè)備描述符中,設(shè)備報(bào)告的設(shè)備描述符。在設(shè)備描述符中,設(shè)備報(bào)告主機(jī)它的缺省管道端點(diǎn)主機(jī)它的缺省管道端點(diǎn)0的有效數(shù)據(jù)負(fù)載。的有

60、效數(shù)據(jù)負(fù)載。 被配置(被配置(Configured)一個(gè)設(shè)備在被正式起用之前必須被主機(jī)配置。一個(gè)設(shè)備在被正式起用之前必須被主機(jī)配置。設(shè)備先報(bào)告主機(jī)它的設(shè)備先報(bào)告主機(jī)它的配置描述符配置描述符(Configuration Descriptor),里面包),里面包括接口和端點(diǎn)的信息。而后,主機(jī)根據(jù)配置描括接口和端點(diǎn)的信息。而后,主機(jī)根據(jù)配置描述符,向設(shè)備寫(xiě)一個(gè)配置值。這時(shí),設(shè)備就可述符,向設(shè)備寫(xiě)一個(gè)配置值。這時(shí),設(shè)備就可以正常工作了。當(dāng)主機(jī)要對(duì)設(shè)備重新配置時(shí),以正常工作了。當(dāng)主機(jī)要對(duì)設(shè)備重新配置時(shí),它必須對(duì)先取消原來(lái)的配置。它必須對(duì)先取消原來(lái)的配置。休眠(休眠(suspend)當(dāng)設(shè)備發(fā)現(xiàn)當(dāng)設(shè)備發(fā)現(xiàn)3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論