DZ201PLC控制的恒壓供水系統(tǒng)
DZ201PLC控制的恒壓供水系統(tǒng),dz201plc,控制,節(jié)制,供水系統(tǒng)
基于USB總線的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)摘要通用串行總線USB(Universal Serial Bus)是一種新型的微機(jī)總線接口規(guī)范。隨著客戶(hù)對(duì)系統(tǒng)數(shù)據(jù)采集速度要求的不斷提高,USB以其使用方便、易于擴(kuò)展、速度快等優(yōu)點(diǎn)而越來(lái)越多的應(yīng)用于數(shù)據(jù)采集系統(tǒng)中。本文介紹了一種基于USB總線的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法,采用PHILIPS公司的USB接口芯片PDIUSBD12與單片機(jī)AT89C51進(jìn)行通信,并和PC機(jī)通信而編制出友善的設(shè)備應(yīng)用程序。該系統(tǒng)用傳統(tǒng)的USB總線取代了RS232串行總線,通過(guò)對(duì)USB協(xié)議和設(shè)備構(gòu)架的充分理解,對(duì)以單片機(jī)89C51和USB接口芯片PDIUSBD12為主的數(shù)據(jù)采集系統(tǒng)進(jìn)行了硬件設(shè)計(jì)和軟件編程,并在此設(shè)計(jì)的基礎(chǔ)上給出相應(yīng)的原理圖。硬件設(shè)計(jì)主要解決的是PDIUSBD12和ADC0809與單片機(jī)之間的接口電路問(wèn)題,軟件編程大致分為三部分:一是為滿(mǎn)足D12在USB上的最大傳輸速率而編寫(xiě)的固件程序;二是在PC機(jī)中的Windows 2000工作環(huán)境下編寫(xiě)USB設(shè)備驅(qū)動(dòng)程序;三是充分了解D12的主要功能特點(diǎn),并編寫(xiě)出應(yīng)用程序。通過(guò)該數(shù)據(jù)采集系統(tǒng),我們可以對(duì)USB協(xié)議有很深刻的理解,對(duì)D12接口芯片有很熟練的應(yīng)用,能更好領(lǐng)悟USB接口的優(yōu)勢(shì)。關(guān)鍵詞:USB總線;單片機(jī);數(shù)據(jù)采集;固件;Windows驅(qū)動(dòng)程序模型;設(shè)備驅(qū)動(dòng)程序;客戶(hù)應(yīng)用程序ABSTRACTUniversal Serial Bus is a new specification for microcomputer bus interface. With the continuing advance of the clients demand for the speed of a data collection system, USB is more and more widely used in data collection system for its advantages such as convenience, expanding port with ease and high speed etc.this article presents a particular description of the design and development of a data collection system based on USB.single chip programs the fireware to the USB interface chipPDIUSBD12; communication appears between D12 and up-location computer and man-machine mutual interface comes into being; lots of data from the industry spot are printed, analyzed and disposed on time. On the base of wonderful understanding to USB protocol and device truss, I finish the hardware design and software programme of the data collection system. And draw the principle chart.? The software programme mainly includes: the fireware code in need of D12s maximum transmission rate; USB device driver and client application under the circustance of Win2000 operation system in computer. After this data collection system,we can understand the USB protocol profoundly and apply the interface chip-PDIUSBDI2 proficiently. In all, the advantages of this interface technique may helps to your design arrangement.KEY WORDS:USB bus;data collection;MCU;fireware;WDM;device drive program;client application目錄文摘 .1英文文摘 .11 緒論 .1.1 課題背景 .1.2 課題的提出 .1.3 USB簡(jiǎn)介 .1.4 主要工作 .2 USB1.1協(xié)議 .2.1 USB的互連 .2.2 USB的主機(jī) .2.2.1 USB主機(jī)概述 .2.2.2 USB驅(qū)動(dòng)(USBD) .2.3USB設(shè)備 .2.3.1 USB設(shè)備狀態(tài) .2.3.2 通用USB設(shè)備操作 .2.3.3 USB設(shè)備請(qǐng)求 .2.4 USB的物理層 .2.5 USB數(shù)據(jù)流 .3 數(shù)據(jù)采集系統(tǒng)的固件設(shè)計(jì) .3.1 固件的開(kāi)發(fā)環(huán)境 .3.2 采用PDIUSBD12的固件設(shè)計(jì) .3.2.1 固件要完成的主要工作 .3.2.2 PDIUSBD12芯片特點(diǎn) .3.2.3 PDIUSBD12固件程序的編寫(xiě) .3.3 固件的文件結(jié)構(gòu) .3.4 固件的編程實(shí)現(xiàn) .3.4.1 底層函數(shù) .3.4.2 命令接口 .3.4.3 中斷服務(wù)程序ISR.C .3.4.4 主循環(huán)MAINLOOP.C .4 USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì) .4.1 Windows2000驅(qū)動(dòng)程序 .4.2 WDM驅(qū)動(dòng)程序結(jié)構(gòu)模型 .4.2.1 USB設(shè)備驅(qū)動(dòng)程序?qū)哟谓Y(jié)構(gòu) .4.2.2設(shè)備對(duì)象 .4.2.3標(biāo)準(zhǔn)總線驅(qū)動(dòng)程序和類(lèi)驅(qū)動(dòng)程序 .4.2.4 WDM驅(qū)動(dòng)程序的結(jié)構(gòu) .4.3 USB驅(qū)動(dòng)的開(kāi)發(fā)環(huán)境 .4.3.1 驅(qū)動(dòng)的開(kāi)發(fā)工具 .4.3.2 驅(qū)動(dòng)開(kāi)發(fā)環(huán)境的安裝與設(shè)置 .4.4 驅(qū)動(dòng)程序的實(shí)現(xiàn) .4.4.1 驅(qū)動(dòng)入口 .4.4.2數(shù)據(jù)傳輸控制 .5 USB設(shè)備應(yīng)用程序設(shè)計(jì) .5.1 Win32 API簡(jiǎn)介 .5.2動(dòng)態(tài)鏈接庫(kù) .5.3 MFC的應(yīng)用程序開(kāi)發(fā) .5.4設(shè)備應(yīng)用程序與WDM的通信 .5.4.1 Win32應(yīng)用程序?qū)DM的通信 .5.4.2 WDM對(duì)Win32應(yīng)用程序的通信 .5.5 應(yīng)用程序的實(shí)現(xiàn) .6 數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì) .6.1 硬件系統(tǒng)的結(jié)構(gòu) .6.2 接口芯片選擇 .6. 接口硬件設(shè)計(jì) .6.3.1 A/D與單片機(jī)接口電路 .6.3.2 PDIUSBDI2與單片機(jī)接口電路 .1 緒論1.1 課題背景隨著數(shù)字化的廣泛應(yīng)用,數(shù)據(jù)采集也越來(lái)越重要,傳統(tǒng)的外設(shè)與主機(jī)的通信口一般采用ISA、PCI、C PCI、1394等標(biāo)準(zhǔn),基于這些接口的產(chǎn)品,安裝麻煩,價(jià)格昂貴,并受計(jì)算機(jī)插槽數(shù)量、地址中斷資源限制,且可擴(kuò)展性差,USB的出現(xiàn),很好地解決了以上問(wèn)題。USB作為一種新型的串口通信標(biāo)準(zhǔn),具有較高的傳輸速率,可擴(kuò)展性好,采用總線供電,使用靈活。它共有4種傳輸模式:控制傳輸、同步傳輸、中斷傳輸、批量傳輸,以適應(yīng)不同設(shè)備的需要。信息技術(shù)與電子技術(shù)的迅猛發(fā)展,使得計(jì)算機(jī)和外圍設(shè)備也得到飛速發(fā)展和應(yīng)用。過(guò)去人們單純追求計(jì)算機(jī)與外設(shè)之間的傳輸速度,現(xiàn)在糾錯(cuò)能力和操作安裝的簡(jiǎn)易性也成為人們關(guān)注的目標(biāo)。USB通訊技術(shù)的出現(xiàn),使高傳輸速度、強(qiáng)糾錯(cuò)能力、易擴(kuò)展性、方便的即插即用,有機(jī)的結(jié)合在一起。USB設(shè)備需要依據(jù)USB協(xié)議進(jìn)行數(shù)據(jù)的解包與打包,底層硬件設(shè)備與操作系統(tǒng)之間需要以驅(qū)動(dòng)程序?yàn)闃蛄骸r?qū)動(dòng)程序以WDM為模型,以DDK為開(kāi)發(fā)工具,以IRP為消息傳播載體,來(lái)實(shí)現(xiàn)與Windows系統(tǒng)底層核心機(jī)制相交互的功能。1.2課題的提出盡管RS232是一種十分成熟且應(yīng)用廣泛的通訊方式,但是隨著控制系統(tǒng)的日益復(fù)雜,所要采集的量也會(huì)越來(lái)越多。因此尋求一種高速、安全、方便的通訊形式是十分必要的。USB技術(shù)雖然出現(xiàn)的時(shí)間并不長(zhǎng),但是由于它的種種優(yōu)點(diǎn),被越來(lái)越多的廠商和用戶(hù)所接受,出現(xiàn)了USB打印機(jī)、攝像頭等產(chǎn)品。盡管目前USB接口的應(yīng)用主要集中在電腦的周邊外設(shè),但是USB產(chǎn)品進(jìn)入工控領(lǐng)域?qū)⑹潜厝坏内厔?shì)。采用PDIUSBD12芯片和89C51單片機(jī)設(shè)計(jì)的基于USB總線的數(shù)據(jù)采集系統(tǒng),具有可靠性高、數(shù)據(jù)不丟失、抗干擾性強(qiáng)、便于數(shù)據(jù)傳輸和處理等優(yōu)點(diǎn),可在信號(hào)測(cè)試、信號(hào)采集場(chǎng)合廣泛使用。所以本課題的研究是具有一定的現(xiàn)實(shí)意義和經(jīng)濟(jì)意義的。1.3 USB簡(jiǎn)介通用串行總線(Universal Serial Bus,簡(jiǎn)稱(chēng)USB)是康柏、微軟、IBM, DEC等公司為了解傳統(tǒng)總線的不足推出的一種新型串行總線接口規(guī)范, 自1995年在Comdex上亮相以來(lái)至今己廣泛地為各PC廠家所支持。現(xiàn)在生產(chǎn)的PC機(jī)幾乎都配備了,USB接口,Microsoft的windows98, NT以及MacOS, Linux, FreeBSD等流行操作系統(tǒng)都增加了對(duì)USB的支持。USB的主要特點(diǎn)如下:1. 速度快。 USB 有全速和低速兩種方式,主模式為全速模式,速率為12Mbps,從而使一些要求高速數(shù)據(jù)的外設(shè),如:高速硬盤(pán)、攝像頭等,都能統(tǒng)一到同一個(gè)總線框架下。另外為了適應(yīng)一些不需要很大吞吐量但是有很高實(shí)時(shí)性要求的設(shè)備,如鼠標(biāo)、鍵盤(pán)、游戲桿等,USB還提供低速方式,速率為1.5Mbps。如表1-1所示。新推出的USB2.0協(xié)議提供最高達(dá)480Mbps的數(shù)據(jù)傳輸速率可以適應(yīng)各種不同類(lèi)型的外設(shè)。表1-1 USB使用分類(lèi)表性能 應(yīng)用 特性低速 交互設(shè)備10-20kb/s鍵盤(pán)、鼠標(biāo)、游戲棒 低價(jià)格、熱插拔、易用性中速電話、音頻、壓縮視頻500kb/s-10Mb/sISBN、PBX、POTS 低價(jià)格、易用性、動(dòng)態(tài)插拔、限定帶寬和延遲高速音頻、磁盤(pán)25-500Mb/s音頻、磁盤(pán) 高帶寬、限定延遲、易用性2. 支持熱插拔和即插即用。 所有的USB 設(shè)備可以隨時(shí)的插入和拔離系統(tǒng),USB 主機(jī)能夠動(dòng)態(tài)的識(shí)別設(shè)備的狀態(tài),并自動(dòng)給接入的設(shè)備分配地址和配置參數(shù),添加、刪除設(shè)備完全不用關(guān)閉計(jì)算機(jī),也不必像過(guò)去那樣需要手動(dòng)跳線和撥碼開(kāi)關(guān)來(lái)設(shè)置新的外設(shè)。3. 易于擴(kuò)展。USB使用的是一種易于擴(kuò)展的樹(shù)狀結(jié)構(gòu),通過(guò)使用USB Hub擴(kuò)展可連接多達(dá)127個(gè)外設(shè)。標(biāo)準(zhǔn)USB電纜長(zhǎng)度為3米(低速為5米)。通過(guò)Hub或中繼器可以使外設(shè)距離達(dá)到30米。4. 使用靈活。 USB共有4種傳輸模式:控制傳輸(control),步傳輸(synchronization)、中斷傳輸(interrupt)、批量傳輸(bulk),適應(yīng)不同設(shè)備的需要。5. 能夠采用總線供電。 普通使用串口、并口的設(shè)備都需要單獨(dú)的供電系統(tǒng),而USB設(shè)備則不需要,因?yàn)閁SB接口提供了內(nèi)置電源e USB電源能向低壓設(shè)備提供最大5V, 500mA 的電源,從而降低了這些設(shè)備的成本并提高了性?xún)r(jià)比。6. 實(shí)現(xiàn)成本低。 USB對(duì)系統(tǒng)與PC的集成進(jìn)行了優(yōu)化,適合于開(kāi)發(fā)低成本的外設(shè)。本文設(shè)計(jì)的基于USB總線的數(shù)據(jù)采集系統(tǒng)正是充分地利用了USB 總線的上述優(yōu)點(diǎn),從而有效地解決了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的缺陷。很方便地就能夠?qū)崿F(xiàn)低成本、高可靠性、實(shí)時(shí)的數(shù)據(jù)采集,適用于對(duì)瞬態(tài)信號(hào)進(jìn)行采集和處理。1.4主要工作本論文所設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)是在單片機(jī)89051控制下進(jìn)行數(shù)據(jù)采集,并通過(guò)PHILIPS公司的USB接口芯片PDIUSBDI2上傳給PC機(jī)進(jìn)行分析、顯示和存盤(pán)。該系統(tǒng)用傳統(tǒng)的USB總線取代了RS232串行總線,通過(guò)對(duì)USB協(xié)議和設(shè)備構(gòu)架的充分理解,對(duì)以單片機(jī)89C51和USB接口芯片D12為主的數(shù)據(jù)采集系統(tǒng)進(jìn)行了硬件設(shè)計(jì)和軟件編程,并在此設(shè)計(jì)的基礎(chǔ)上給出相應(yīng)的原理圖。硬件設(shè)計(jì)主要解決的是D12與單片機(jī)的接口電路的設(shè)計(jì)。軟件設(shè)計(jì)可分為三部分:一是充分了解D12的主要功能特點(diǎn),為滿(mǎn)足D12在USB上的最大傳輸速率而編寫(xiě)固件程序,用C51語(yǔ)言編寫(xiě):二是在充分了解WDM驅(qū)動(dòng)程序的基礎(chǔ)上編寫(xiě)USB的設(shè)備驅(qū)動(dòng)程序;三是編寫(xiě)出界面友好、具有強(qiáng)大的數(shù)據(jù)處理和分析能力的應(yīng)用程序。2 USB1.1協(xié)議2.1 USB的互連一個(gè) USB系統(tǒng)主要被定義為三個(gè)部分:USB的互連;USB的設(shè)備;USB的主機(jī)。USB的互連是指 USB設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作,主要包括以下幾方面:總線的拓?fù)浣Y(jié)構(gòu):USB 設(shè)備與主機(jī)之間的各種連接方式;內(nèi)部層次關(guān)系:根據(jù)性能疊置,USB 的任務(wù)被分配到系統(tǒng)的每一個(gè)層次;數(shù)據(jù)流模式:描述了數(shù)據(jù)在系統(tǒng)中通過(guò) USB從產(chǎn)生方到使用方的流動(dòng)方式;USB的調(diào)度:USB 提供了一個(gè)共享的連接。對(duì)可以使用的連接進(jìn)行了調(diào)度以支持同步數(shù)據(jù)傳輸,并且避免的優(yōu)先級(jí)判別的開(kāi)銷(xiāo)??偩€拓樸結(jié)構(gòu)包括四個(gè)重要的組成部分。主機(jī)和設(shè)備:USB 系統(tǒng)的基礎(chǔ)組成部分。物理拓樸結(jié)構(gòu):描述 USB系統(tǒng)中的各組成部分是如何連接起來(lái)的。邏輯拓樸結(jié)構(gòu):描述 USB系統(tǒng)中各種組成部分的地位和作用,以及描述從主機(jī)和設(shè)備的角度觀察到的 USB系統(tǒng)??蛻?hù)軟件層與應(yīng)用層的關(guān)系:描述從客戶(hù)軟件層看到的應(yīng)用層的情況,以及從應(yīng)用層看到的客戶(hù)軟件層的情況。USB 系統(tǒng)中的設(shè)備與主機(jī)的連接方式采用的是星形連接,如圖 2-1。復(fù)合設(shè)備設(shè)備設(shè)備 設(shè)備 設(shè)備設(shè)備 設(shè)備主機(jī)HUBHUB根 HUB圖 21 USB物理總線的拓?fù)鋱D中的 Hub是一類(lèi)特殊的 USB設(shè)備,它是一組 USB的連接點(diǎn),主機(jī)中有一個(gè)被嵌入的Hub叫根 Hub(root Hub)。主機(jī)通過(guò)根 Hub提供若干個(gè)連接點(diǎn)。為了防止環(huán)狀連接,采用星形連接來(lái)體現(xiàn)層次性,如圖 4-5。這種連接的形狀很像一棵樹(shù)。用于提供具體功能的設(shè)備叫應(yīng)用設(shè)備。許多不同功能的設(shè)備放在一起被看作一個(gè)整體,叫包。例如,鍵盤(pán)和軌跡球可以被視作一個(gè)整體,在它的內(nèi)部,提供具體功能的設(shè)備被永久地接到Hub上,而這個(gè)Hub被接到USB上。所有這些設(shè)備及這個(gè)Hub被看作一個(gè)復(fù)合設(shè)備,而這個(gè)Hub又被看作這個(gè)復(fù)合設(shè)備的內(nèi)部Hub。在主機(jī)看來(lái),這個(gè)復(fù)合設(shè)備和一個(gè)帶著若干設(shè)備的單獨(dú)Hub是一樣的。圖中也標(biāo)出了一個(gè)復(fù)合設(shè)備??偩€邏輯拓樸結(jié)構(gòu)。在物理結(jié)構(gòu)上,設(shè)備通過(guò)Hub連到主機(jī)上。但在邏輯上,主機(jī)是直接與各個(gè)邏輯設(shè)備通信的,就好像它們是直接被連到主機(jī)上一樣。這個(gè)邏輯關(guān)系如圖2-2所示。與之對(duì)應(yīng)的物理結(jié)構(gòu)就是圖2-1中的結(jié)構(gòu)。Hub也是邏輯設(shè)備,但在圖2-2中,為了簡(jiǎn)化起見(jiàn),未被畫(huà)出,雖然USB系統(tǒng)中的工作都是從邏輯角度來(lái)看待的,但主機(jī)必須對(duì)物理結(jié)構(gòu)有個(gè)了解。例如,在處理Hub被移去的情況時(shí),當(dāng)一個(gè)Hub被移出,通過(guò)它與主機(jī)相連的設(shè)備也應(yīng)一起被移去,這是由其物理結(jié)構(gòu)決定的。圖2-2 USB邏輯總線的拓?fù)淙?客戶(hù)軟件層與應(yīng)用層的關(guān)系USB系統(tǒng)的物理上、邏輯上的拓樸結(jié)構(gòu)反映了總線的共享性。操縱 USB應(yīng)用設(shè)備的客戶(hù)軟件只關(guān)心設(shè)備上與它相關(guān)的接口,客戶(hù)軟件必須通過(guò) USB軟件編程接口來(lái)操縱應(yīng)用設(shè)備。這與另一些總線如 PCL,ELSA,PCMUA 等不同,這些總線是直接訪問(wèn)內(nèi)存或 I/O的。在運(yùn)行中,客戶(hù)軟件必須獨(dú)立于 USB上的其它設(shè)備。這樣,設(shè)備和客戶(hù)軟件的設(shè)計(jì)者就可以只關(guān)心該設(shè)備與主機(jī)硬件的相互作用和主機(jī)軟件的相互作用的細(xì)節(jié)問(wèn)題。圖 2-3說(shuō)明了在圖 2-2的邏輯結(jié)構(gòu)下,一個(gè)設(shè)備設(shè)計(jì)者看到的客戶(hù)軟件與相應(yīng)應(yīng)用的關(guān)系的視圖。邏輯設(shè)備 邏輯設(shè)備邏輯設(shè)備主機(jī)客戶(hù)軟件應(yīng)用客戶(hù)軟件應(yīng)用客戶(hù)軟件應(yīng)用圖2-3客戶(hù)軟件和應(yīng)用間的關(guān)系2.2 USB的主機(jī)2.2.1 USB主機(jī)概述圖 2-4展示了 USB通信模型之間基本的信息流與互連關(guān)系:圖 2-4 通信模型層次關(guān)系圖由圖 2-4可見(jiàn),主機(jī)與設(shè)備都被劃分成不同的層次。主機(jī)上垂直的箭頭是實(shí)際的信息流。設(shè)備上對(duì)應(yīng)的接口是基于不同實(shí)現(xiàn)的。在主機(jī)與設(shè)備之間的所有通信最終都是通過(guò)USB的電纜進(jìn)行,然而,在上層的水平層之間存在邏輯的主機(jī)-設(shè)備信息流。主機(jī)上的客戶(hù)軟件和設(shè)備功能部件之間的通信是基于實(shí)際的應(yīng)用需求及設(shè)備所能提供的能力??蛻?hù)軟件與功能部件之間的透明通信的要求,決定主機(jī)和設(shè)備下層部件的功能以及它們的界面(interface),圖 2-5描述了從主機(jī)角度看到的它與設(shè)備的連接。圖 2-5 主機(jī)通信圖客戶(hù)USB 系統(tǒng)主機(jī)控制器功能部件USB 設(shè)備USB總線接口邏輯的信息流 實(shí)際的信息流 通道,代表相應(yīng)層之間連接的抽象USB 系統(tǒng) 硬件定義客戶(hù)(管理界面)硬件定義IRPS 配置信息USB 驅(qū)動(dòng)器 主機(jī)軟件主機(jī)控制器驅(qū)動(dòng)主機(jī)控制器 SIE通道組(到某一接口)標(biāo)準(zhǔn)通道(到缺省端口地址)USB電纜主機(jī)在整個(gè) USB系統(tǒng)中是唯一的,它包括如下幾個(gè)層次。USB總線接口USB系統(tǒng)(USB System)USB客戶(hù)(Client)其中,USB 總線接口處理電氣及協(xié)議層的互連。從互連的角度看,USB 設(shè)備和 USB主機(jī)都提供類(lèi)似的 USB總線接口,如串行接口引擎。由于主機(jī)在 USB系統(tǒng)中的特殊性,USB主機(jī)上的總線接口還必須具備主機(jī)控制器的功能,主機(jī)控制器具有一個(gè)內(nèi)集成的集線器(根集線器)提供與 USB電纜的連接。USB系統(tǒng)使用主機(jī)控制器來(lái)管理主機(jī)與 USB設(shè)備的數(shù)據(jù)傳輸。USB 系統(tǒng)與主機(jī)控制器之間的界面基于主機(jī)控制器的硬件特性。USB 系統(tǒng)層相對(duì)于主機(jī)控制器而言,處理的是以客戶(hù)觀點(diǎn)見(jiàn)到的數(shù)據(jù)傳輸及客戶(hù)與設(shè)備的交互。這包括附加的 USB信息,比如協(xié)議頭。USB系統(tǒng)還必須管理 USB的系統(tǒng)資源,以使得客戶(hù)的訪問(wèn)成為可能。USB系統(tǒng)有三個(gè)主要組成部份:主機(jī)控制器驅(qū)動(dòng)USB驅(qū)動(dòng)主機(jī)軟件主機(jī)控制器驅(qū)動(dòng)的存在,方便地將各種不同的主機(jī)控制器實(shí)現(xiàn)映射到 USB系統(tǒng),客戶(hù)可以不必知道設(shè)備到底接在哪個(gè)主機(jī)控制器上就能同設(shè)備進(jìn)行通信。USB 驅(qū)動(dòng)提供了基本的面向客戶(hù)的主機(jī)界面。在 HCD與 USB之間的接口稱(chēng)為主機(jī)控制器驅(qū)動(dòng)接口(Host Controller Driver Interface HCDI)。這層接口不能被客戶(hù)直接訪問(wèn),所以也不是由USB具體來(lái)完成的。一個(gè)典型的 HCDI是由支撐各種不同主機(jī)控制器的操作系統(tǒng)來(lái)定義的。USBD提供 I/O請(qǐng)求包(I/O Request Packets)形式的數(shù)據(jù)傳輸,以某一特定通道來(lái)傳輸數(shù)據(jù)。另外,USBD 為它的客戶(hù)提供一個(gè)容易被支配及配置的抽象的設(shè)備。作為這種抽象的一部份,USBD 擁有標(biāo)準(zhǔn)通道對(duì)設(shè)備進(jìn)行一些標(biāo)準(zhǔn)的控制。這標(biāo)準(zhǔn)通道實(shí)現(xiàn)了 USBD與抽象設(shè)備之間的邏輯通信。(見(jiàn)圖 2-5)在有些操作系統(tǒng)中,提供了額外的非 USB系統(tǒng)軟件以支持設(shè)備的配置及設(shè)備驅(qū)動(dòng)程序的加載。在這樣的操作系統(tǒng)中,設(shè)備驅(qū)動(dòng)程序應(yīng)使用提供的主機(jī)軟件接口而不是直接訪問(wèn)USBDI??蛻?hù)層描述的是直接與 USB設(shè)備進(jìn)行交互所需要的軟件包。當(dāng)所有的設(shè)備都已連上系統(tǒng)時(shí),這些客戶(hù)就可以直接通設(shè)備進(jìn)行通信。一個(gè)客戶(hù)不能直接訪問(wèn)設(shè)備的硬件??偠灾鳈C(jī)可提供如下的功能:檢測(cè) USB設(shè)備的連接與斷開(kāi)。管理主機(jī)與設(shè)備之間的標(biāo)準(zhǔn)控制流。管理主機(jī)與設(shè)備之間的數(shù)據(jù)流。收集狀態(tài)及一些活動(dòng)的統(tǒng)計(jì)數(shù)字。控制主機(jī)控制器與USB設(shè)備的電氣接口,包括提供有限的能源。2.2.2 USB驅(qū)動(dòng)(USBD)USBD提供了供操作系統(tǒng)組件特別是設(shè)備驅(qū)動(dòng)程序訪問(wèn)設(shè)備的一組接口。這些操作系統(tǒng)組件只能通過(guò) USBD來(lái)訪問(wèn) USB。USBD 的具體實(shí)現(xiàn)基于不同的操作系統(tǒng)。一個(gè) USBD可以訪問(wèn)一個(gè)或多個(gè) HCD,而一個(gè) HCD可能與一個(gè)或多個(gè)主機(jī)控制器相連。某些操作系統(tǒng)可能允許對(duì) USBD的初始化進(jìn)行一些設(shè)置。從客戶(hù)的觀點(diǎn)來(lái)看,與客戶(hù)進(jìn)行通信的 USBD管理著所有連接著的 USB設(shè)備。1. USBD概況USBD的客戶(hù)直接命令設(shè)備或從通道直接輸入和輸出數(shù)據(jù)流。USBD 為客戶(hù)提供兩組工具。命令工具和通道工具。命令工具允許客戶(hù)配置和控制 USBD操作同時(shí)配置及控制 USB設(shè)備。命令工具提供了對(duì)設(shè)備標(biāo)準(zhǔn)通道的所有訪問(wèn)。通道工具允許 USBD客戶(hù)管理特定設(shè)備的數(shù)據(jù)和控制數(shù)據(jù)的傳輸。通道工具不允客戶(hù)直接訪問(wèn)設(shè)備的標(biāo)準(zhǔn)通道。圖 2-6給出了 USBD的總體框架。圖 2-6 USB 驅(qū)動(dòng)結(jié)構(gòu)(1) USBD初始化具體的 USBD初始化工作是與操作系統(tǒng)有關(guān)的。當(dāng) USB系統(tǒng)初始化時(shí),USB 的管理信息被創(chuàng)建,其中包括缺省地址設(shè)備及它的標(biāo)準(zhǔn)通道。當(dāng)一個(gè)設(shè)備連上 USB時(shí),它響應(yīng)特殊的缺省地址,直到他的唯一地址由主機(jī)給出。為了讓 USB系統(tǒng)能與新的設(shè)備進(jìn)行通信,設(shè)備在剛連上總線時(shí),設(shè)備的卻省地址必須是可用服務(wù)通道接口命令接口信息和流通道 配置管理 設(shè)備數(shù)據(jù)訪問(wèn) 總線設(shè)備管理 能量控制主機(jī)控制器驅(qū)動(dòng)主機(jī)控制器驅(qū)動(dòng)主機(jī)控制器 主機(jī)控制器的。在設(shè)備的初始化期間,設(shè)備的缺省地址被修改成一個(gè)唯一的地址。(2) USBD通道使用通道是設(shè)備與主機(jī)的邏輯連結(jié)。一個(gè)通道由且僅由一個(gè)客戶(hù)所擁有。雖然通道的基本屬性不因通道的擁有者而改變,但在兩類(lèi)不同客戶(hù)所擁有的通道之間還存在一定的差異:標(biāo)準(zhǔn)通道 他們由 USBD擁有和管理。其他的通道 它們由 USBD的客戶(hù)擁有和管理。雖然標(biāo)準(zhǔn)通道經(jīng)常用于完成一些客戶(hù)通過(guò)命令接口所傳遞的請(qǐng)求,但是它們不能由客戶(hù)直接訪問(wèn)的。(3) USBD服務(wù)功能USBD提供如下種類(lèi)的服務(wù):通過(guò)命令工具配置設(shè)備通過(guò)命令工具及通道工具提供傳輸服務(wù)事件通知狀態(tài)報(bào)告及錯(cuò)誤恢復(fù)2. USBD命令工具功能USBD命令工具允許客戶(hù)訪問(wèn)設(shè)備。通常,這些命令允許客戶(hù)以讀寫(xiě)形式訪問(wèn)某個(gè)設(shè)備數(shù)據(jù)及控制部份??蛻?hù)要做的僅是提供設(shè)備的標(biāo)識(shí)碼和相關(guān)數(shù)據(jù)緩沖區(qū)或空緩沖區(qū)指針。USBD命令傳輸時(shí)并不需要 USB設(shè)備是已被配置好。USBD 提供的設(shè)備配置設(shè)施大部分使用是用命令傳輸。下面的是有關(guān)命令工具提供的功能:(1)接口狀態(tài)控制USBD客戶(hù)必須能夠設(shè)置具體的接口。接口狀態(tài)的改變使得所有與該接口相連的通道都進(jìn)入新的狀態(tài)。另外接口的所有通道都能夠被重新設(shè)置或廢棄。(2)通道狀態(tài)控制USBD通道狀態(tài)由兩部份組成主機(jī)狀態(tài)。反映的端口狀態(tài)。通道狀態(tài)值總是包含上述兩部份。USBD 的客戶(hù)管理由 USBD報(bào)告通道狀態(tài),且客戶(hù)能夠與端口交互以改變它狀態(tài)。(3)獲取描述碼USBD提供取得標(biāo)準(zhǔn)設(shè)備描述符,設(shè)備配置描述符,字串描述符和設(shè)備類(lèi)或者廠商定義的描述符的功能。(4)取得當(dāng)前配置參數(shù)USBD提供取得任何設(shè)備當(dāng)前配置參數(shù)的描述符的功能。如果設(shè)備沒(méi)有被配置,則不返回描述符。當(dāng)客戶(hù)請(qǐng)求為設(shè)備設(shè)置特定的參數(shù)時(shí)也返回當(dāng)前配置的描述符。返回的配置信息中包括如下一些內(nèi)容:所有存放在設(shè)備上的配置描述符,包括接口的所有其他可替換配置。返回接口的當(dāng)前的配置的描述符。接口當(dāng)前配置中的某一端口(一個(gè)接口可能具有多個(gè)端口)的通道句柄。接口當(dāng)前配置中的某一端口的最大允許包長(zhǎng)。另外,對(duì)于任一通道,USBDI 必須提供返回該通道的當(dāng)前正使用的最大包長(zhǎng)的值的機(jī)制。(5)增加設(shè)備USBDI必須提供某種機(jī)制以便于當(dāng)增加新的設(shè)備的時(shí)候,集成器驅(qū)動(dòng)器能通知 USBD并能取得該新 USB設(shè)備的 USBD標(biāo)識(shí)。USBD 的任務(wù)包括分配設(shè)備地址并且為設(shè)備準(zhǔn)備使用的標(biāo)準(zhǔn)通道。(6)設(shè)備斷開(kāi)USBDI必須提供某種機(jī)制以便于集線器控制器通知 USBD特定的設(shè)備已斷開(kāi)。(7)管理狀態(tài)USBDI必須提供取得和清除設(shè)備或接口或通道上與設(shè)備有關(guān)的狀態(tài)的功能。(8)向設(shè)備發(fā)送與設(shè)備類(lèi)有關(guān)的命令USBD的客戶(hù),特別是特定類(lèi)的和自適應(yīng)的驅(qū)動(dòng)器使用 USBD提供的該種機(jī)制向設(shè)備送出一個(gè)或多個(gè)設(shè)備類(lèi)命令。(9)向設(shè)備發(fā)送特殊的廠商定義的命令客戶(hù)使用 USBDI提供的該種機(jī)制向設(shè)備送出一到多個(gè)廠商定義的命令。(10)更改接口配置USBDI必須提供更改特定接口配置的機(jī)制。修改了配置后,接口的新通道句柄替換了舊的通道句柄。在上述的請(qǐng)求執(zhí)行的過(guò)程中,接口必須是空閑的。(11)創(chuàng)建設(shè)備配置配置軟件向 USBD提出進(jìn)行設(shè)備配置的請(qǐng)求時(shí)提供一個(gè)包含配置信息的數(shù)據(jù)緩沖區(qū)。USBD根據(jù)提供的配置信息為設(shè)備端口請(qǐng)求資源。如果所有的資源請(qǐng)求都得到滿(mǎn)足,USBD設(shè)置設(shè)備配置參數(shù),并且返回當(dāng)前設(shè)備所有活躍態(tài)接口句柄和與該接口中的某一端口相連的通道句柄。接口的設(shè)置可使用缺省參數(shù)。(12)設(shè)置描述符對(duì)于支持該項(xiàng)行為的設(shè)備,USBDI允許升級(jí)設(shè)備上的描述符或者增加新的描述符。3. USBD通道設(shè)施USBD的通道設(shè)施使客戶(hù)與設(shè)備之間高速的低附加信息的數(shù)據(jù)傳輸成為可能。數(shù)據(jù)傳輸?shù)母咝阅苁峭ㄟ^(guò)將 USBD的一部份通道管理任務(wù)轉(zhuǎn)交給客戶(hù)來(lái)實(shí)現(xiàn)的。所以通道設(shè)施比USBD命令設(shè)施所提供的數(shù)據(jù)傳輸服務(wù)更直接。通道設(shè)施不允許訪問(wèn)設(shè)備的標(biāo)準(zhǔn)通道。只有在 USB及設(shè)備的配置都順利完成后,客戶(hù)才有可能進(jìn)行 USBD的通道傳輸。當(dāng)設(shè)備被配置的時(shí)候 USBD根據(jù)配置參數(shù)為設(shè)備的所有通道請(qǐng)求資源。當(dāng)特定的接口或通道空閑的時(shí)候,客戶(hù)可以更改配置??蛻?hù)為輸出的通道提供一個(gè)滿(mǎn)的數(shù)據(jù)緩沖區(qū),并且在請(qǐng)求完成以后取得傳輸狀態(tài)信息??蛻?hù)可以根據(jù)返回的狀態(tài)信息判斷傳輸是否順利完成??蛻?hù)為輸入通道提供空的數(shù)據(jù)緩沖區(qū),并且在請(qǐng)求完成以后得到一個(gè)具有數(shù)據(jù)的緩沖區(qū)及傳輸?shù)臓顟B(tài)信息??蛻?hù)可根據(jù)該狀態(tài)信息判斷傳輸數(shù)據(jù)的數(shù)量及質(zhì)量。根據(jù)所支持的數(shù)據(jù)傳輸類(lèi)型,USBD共有四種通道類(lèi)型:控制傳輸、同步數(shù)據(jù)傳輸、中斷傳輸、塊傳輸。2.3 USB設(shè)備USB設(shè)備可被劃分三層:底層是傳送和接收數(shù)據(jù)包的總線接口中間層處理總線接口與不同端點(diǎn)之間的數(shù)據(jù)路由端節(jié)點(diǎn)是數(shù)據(jù)的終結(jié)提供處或使用處,它可被看作數(shù)據(jù)源或數(shù)據(jù)接收端(Sink)最上層的功能由串行總線設(shè)備提供,比如鼠標(biāo),或 ISDN接口。2.3.1 USB設(shè)備狀態(tài)USB設(shè)備有若干可能的狀態(tài),其中一些對(duì)于USB與主機(jī)(host)來(lái)說(shuō)是外置的,而另外一些對(duì)USB設(shè)備來(lái)說(shuō)是內(nèi)置的,表2-1描述的就是這些外置狀態(tài)之間的轉(zhuǎn)化關(guān)系。表2-1外呈(可見(jiàn))的設(shè)備狀態(tài)連接加電缺省編址配置掛起說(shuō) 明不 _ _ _ _ _ 設(shè)備尚未連接至接口.其他特性無(wú)關(guān)是 不 _ _ _ _ 設(shè)備已連接至接口,但未加電. 其他特性無(wú)關(guān).是 是 不 _ _ _ 設(shè)備已連接至接口,并且已加電.但尚未被復(fù)位.是 是 是 不 _ _ 設(shè)備已連接至接口,已加電. 并被復(fù)位.但尚未分配地址.設(shè)備在缺省地址處可尋址.是 是 是 是 不 _ 設(shè)備已連接至接口,已加電. 并被復(fù)位.且分配了唯一地址.尚未被配置.是 是 是 是 是 不 設(shè)備已連接至接口,已加電. 并被復(fù)位.且分配了唯一地址,并被配置.設(shè)備功能可被使用.是 是 _ _ _ 是 設(shè)備在至少 3 毫秒以?xún)?nèi)探測(cè)不到總線活動(dòng),自動(dòng)進(jìn)如掛起.設(shè)備功能不可用.2.3.2 通用USB設(shè)備操作所有的USB 設(shè)備支持通用的操作集,下面簡(jiǎn)要地描述這些操1. 動(dòng)態(tài)插接與拔開(kāi)USB設(shè)備必須在任意時(shí)刻允許被插接與拔開(kāi)。提供連接點(diǎn)或端口的集線器應(yīng)當(dāng)負(fù)責(zé)匯報(bào)端口的狀態(tài)改變情況。當(dāng)主機(jī)探測(cè)到連接操作后,會(huì)使得所連的集線器端口生效,設(shè)備也會(huì)因此而復(fù)位,一個(gè)被復(fù)位了的 USB設(shè)備有如下特性:對(duì)缺省 USB地址發(fā)生響應(yīng)沒(méi)有被配置初始狀態(tài)不是掛起當(dāng)設(shè)備從一個(gè)集線器端口移去時(shí),集線器會(huì)使得原來(lái)連接的端口失效,并且通知主機(jī)設(shè)備已移去。2. 地址分配當(dāng) USB設(shè)備連接以后,由主機(jī)負(fù)責(zé)給此設(shè)備分配一個(gè)唯一的地址,這個(gè)操作是在設(shè)備復(fù)位及端口使能操作以后。3. 配置USB設(shè)備在正常被使用以前,必須被配置,由主機(jī)負(fù)責(zé)配置設(shè)備。主機(jī)一般會(huì)從 USB設(shè)備獲取配置信息后再準(zhǔn)定此設(shè)備有哪些功能。作為配置操作的一部分,主機(jī)會(huì)設(shè)置設(shè)備的配置值,并且,如果必要的話會(huì)選擇合適的接口的備選設(shè)置。只須一個(gè)簡(jiǎn)單配置,一個(gè)設(shè)備可能支持多重接口。一個(gè)接口是一組端結(jié)點(diǎn)集合,它們代表了設(shè)備向主機(jī)提供的單一的功能或特性,用來(lái)與這組相關(guān)端結(jié)點(diǎn)通信的協(xié)議以及接口內(nèi)各端結(jié)點(diǎn)的目的可以作為一個(gè)設(shè)備類(lèi)的一部分或者由廠商制定具體定義。另外,一個(gè)配置中的結(jié)口可能有備選設(shè)置。這些備選設(shè)置會(huì)重定義相關(guān)端結(jié)點(diǎn)的數(shù)目或特性。如果是這樣的話,設(shè)備必須支持 GetInterface(接口請(qǐng)求)與 Set Interface(接口設(shè)置)請(qǐng)求,來(lái)匯報(bào)及選擇指定的接口的設(shè)備選設(shè)置。4. 數(shù)據(jù)傳送數(shù)據(jù)可能以四種方式在 USB設(shè)備端結(jié)點(diǎn)與主機(jī)之間傳送。四種傳送方式參見(jiàn)第五章。在不同設(shè)置下,一個(gè)終端結(jié)點(diǎn)可能被用于不同的傳輸方式,但一旦設(shè)置選定,傳送方式就選定了。5. 電源管理USB總線電源是一個(gè)有限的資源,在設(shè)備標(biāo)識(shí)階段,主機(jī)估測(cè)電源的需求。如果電源的需求量超過(guò) USB總線所能提供的電量,主機(jī)軟件則不能選擇那個(gè)配置。USB設(shè)備應(yīng)將電源需求量限制在一個(gè)單元以下,直到被配置。中止(掛起)的設(shè)備,不管是否已經(jīng)配置過(guò)了,應(yīng)將總線耗電降到第 7章定義的標(biāo)準(zhǔn)以下。視接到設(shè)備的端口電源負(fù)載能力而定,USB 設(shè)備在配置了以后可從 VBus汲取達(dá) 5個(gè)單元的電量。遠(yuǎn)程喚醒能力參許一個(gè)被掛起的 USB設(shè)備發(fā)達(dá)信號(hào)給處于掛起狀態(tài)的主機(jī)。這個(gè)信號(hào)會(huì)使得主機(jī)醒來(lái),處理觸發(fā)事件。USB 設(shè)備通過(guò)配置描述來(lái)向主機(jī)匯報(bào)其遠(yuǎn)程喚醒的能力。USB 設(shè)備的遠(yuǎn)程喚醒能力應(yīng)能被禁止的。6. 請(qǐng)求處理除 SetAddress( )請(qǐng)求以外,在安裝完成返回 ACK信號(hào)以后,設(shè)備就開(kāi)始處理請(qǐng)求。在某一狀態(tài)成功結(jié)束以前,設(shè)備應(yīng)當(dāng)“完成”對(duì)請(qǐng)求的處理。許多請(qǐng)求費(fèi)時(shí)較多,像這樣的請(qǐng)求,該設(shè)備類(lèi)應(yīng)定義一個(gè)方法而不是等待交換狀態(tài)信息階段的結(jié)束來(lái)表示該操作已經(jīng)完成。像這樣的操作有:集線器端口的復(fù)位至少需 10ms來(lái)完成。當(dāng)端口復(fù)位產(chǎn)生時(shí),SetPortFeature(PORT-RESET)請(qǐng)求就結(jié)束了。當(dāng)端口狀態(tài)改變并表明此端口已經(jīng)生效時(shí),一個(gè)信號(hào)就會(huì)產(chǎn)生表明復(fù)位信號(hào)已經(jīng)結(jié)束。這種技術(shù)可以防止當(dāng)主機(jī)知道某一個(gè)請(qǐng)求費(fèi)時(shí)較長(zhǎng)的情況一直探測(cè)此請(qǐng)求是否已完成。7. 請(qǐng)求錯(cuò)誤如果一設(shè)備收到一個(gè)請(qǐng)求,它或是在設(shè)備中無(wú)定義,或是不適用于當(dāng)前設(shè)置,或是數(shù)值不對(duì),這時(shí)就會(huì)產(chǎn)生一個(gè)請(qǐng)求錯(cuò)誤。設(shè)備在下一個(gè)數(shù)據(jù)傳輸階段或狀態(tài)交換階段返回一個(gè)表明錯(cuò)誤的STALL PID信號(hào),一般在下一個(gè)數(shù)據(jù)傳輸返回更好,這樣可減少不必要的總線活動(dòng)。2.3.3 USB設(shè)備請(qǐng)求所有的USB設(shè)備在“設(shè)備的缺省控制通道”處對(duì)主機(jī)的請(qǐng)求發(fā)出響應(yīng)。這些請(qǐng)求是通過(guò)使用控制傳輸來(lái)達(dá)到的,請(qǐng)求及請(qǐng)求的參數(shù)通過(guò)Setup包發(fā)向設(shè)備,由主機(jī)負(fù)責(zé)設(shè)置Setup包內(nèi)的每個(gè)域的值。每個(gè)Setup包有8個(gè)字節(jié)。見(jiàn)表2-2。表2-2 Setup數(shù)據(jù)包的格式偏移量 域 大小 值 描述0bmRequestType1 位圖 請(qǐng)求特征:D7: 傳輸方向0=主機(jī)至設(shè)備1=設(shè)備至主機(jī)D6.5: 種類(lèi)0=標(biāo)準(zhǔn)1=類(lèi)2=廠商3=保留D4.0: 接受者0=設(shè)備1=接口2=端點(diǎn)3=其他4.31=保留1 bRequest 1 值 具體請(qǐng)求2 wValue 2 值 字長(zhǎng)域,根據(jù)不同的請(qǐng)求含義改變.4 wIndex 2 索引或偏移字長(zhǎng)域,根據(jù)不同的請(qǐng)求含義改變.典型用于傳送索引或偏移.6 wLength 2 如有數(shù)據(jù)傳送階段,此為數(shù)據(jù)字節(jié)數(shù).2.4 USB的物理層USB的物理接口包括電氣特性和機(jī)械特性。USB通過(guò)一個(gè)四線電纜來(lái)傳輸信號(hào)與電源如圖2-7所示。圖2-7 USB電纜定義其中D+和D-是一對(duì)差模的信號(hào)線而VBus和GND則提供了5V的電源它可以給一些設(shè)備(包括Hub)供電當(dāng)然要有一定的條件限制。USB1.1提供了兩種數(shù)據(jù)傳輸率一種是12Mb的高速模式,另一種是1.5Mb的低速模式,這兩種模式可以同時(shí)存在于一個(gè)USB系統(tǒng)中。而引入低速模式主要是為了降低要求不高的設(shè)備的成本,比如鼠標(biāo)、鍵盤(pán)等等。USB信號(hào)線在高速模式下必須使用帶有屏蔽的雙絞線,而且最長(zhǎng)不能超過(guò)5m。而在低速模式時(shí)中可以使用不帶屏蔽或不是雙絞的線,但最長(zhǎng)不能超過(guò)30m。這主要是由于信號(hào)衰減的限制,為了提供信號(hào)電壓保證以及與終端負(fù)載相匹配,在電纜的每一端都使用了不平衡的終端負(fù)載,這種終端負(fù)載也保證了能夠檢測(cè)外設(shè)與端口的連接或分離,并且可以區(qū)分高速與低速設(shè)備。所有的設(shè)備都有上行的接口,上行和下行的接頭是不能互換的,這保證了不會(huì)有非法的連接出現(xiàn)。插頭與插座有兩個(gè)系列分別為A和B系列,A用于基本固定的外圍設(shè)備,而系列B用于經(jīng)常拔插的設(shè)備,這兩個(gè)系列是不能互換的。2.5 USB 數(shù)據(jù)流從邏輯上講USB數(shù)據(jù)的傳輸是通過(guò)管道進(jìn)行的。圖2-6描述了USB數(shù)據(jù)傳輸?shù)倪^(guò)程。USB系統(tǒng)軟件通過(guò)缺省管道(與端點(diǎn)0相對(duì)應(yīng))管理設(shè)備,設(shè)備驅(qū)動(dòng)程序通過(guò)其它的管道來(lái)管理設(shè)備的功能接口。實(shí)際的數(shù)據(jù)傳輸過(guò)程是這樣的:設(shè)備驅(qū)動(dòng)程序通過(guò)對(duì)USBD接口(USB driver interface)的調(diào)用發(fā)出輸入輸出請(qǐng)求(IRP I/O Request Packet);USB驅(qū)動(dòng)程序接到請(qǐng)求后,調(diào)用HCD接口(host controller driver interface),將IRP轉(zhuǎn)化為USB的傳輸,一個(gè)IRP可以包含一個(gè)或多個(gè)USB傳輸;然后HCD將USB傳輸分解為總線操作,由主控制器以包的形式發(fā)出。需要注意的是所有的數(shù)據(jù)傳輸都是由主機(jī)開(kāi)始的,任何外設(shè)都無(wú)權(quán)開(kāi)始一個(gè)傳輸。IRP是由操作系統(tǒng)定義的,而USB傳輸與總線操作是USB規(guī)范定義的。為了進(jìn)一步說(shuō)明USB傳輸,我們引出幀(frame)的概念。幀:USB總線將1ms定義為一幀,每幀以一個(gè)SOF包為起始,在這1ms里,USB進(jìn)行一系列的總線操作。引入幀的概念主要是為了支持與時(shí)間有關(guān)的總線操作。為了滿(mǎn)足不同外設(shè)和用戶(hù)的要求,USB 提供了四種傳輸方式:控制傳輸、同步傳輸、中斷傳輸、批傳輸。它們?cè)跀?shù)據(jù)格式、傳輸方向、數(shù)據(jù)包容量限制、總線訪問(wèn)限制等方面有著各自不同的特征??刂苽鬏?Control Transfer)1. 通常用于配置/命令/狀態(tài)等情形;2. 其中的設(shè)置操作(setup)和狀態(tài)操作(status)的數(shù)據(jù)包,具有USB定義的結(jié)構(gòu),因此控制傳輸只能通過(guò)消息管道進(jìn)行;3. 支持雙向傳輸;主機(jī) 連接 物理設(shè)備到一個(gè)接口的通道束 與接口 無(wú) 緩沖 沒(méi)有 USB 有關(guān) USB 格式 格式 到 0 號(hào)端點(diǎn)的缺省通道事務(wù) USB 幀格式 每個(gè)端 USB 幀 的數(shù)據(jù) 點(diǎn)的數(shù) 結(jié)構(gòu)的 據(jù) 數(shù)據(jù)USB主機(jī)(第 10 章)USB設(shè)備(第9 章)Client SW管理一個(gè)接口USB System SW管理設(shè)備USBUSB 幀格式 接口的數(shù)據(jù) 事務(wù) 主機(jī)控制器SIE應(yīng)用接口的集合 接口XUSB邏輯設(shè)備端點(diǎn)的集合端點(diǎn)0USB 總線接口SIE USB 線路機(jī)械的,通道:兩個(gè)水平實(shí)體之間連接 電氣的,的抽象。 數(shù)據(jù)傳遞機(jī)制 被傳遞的數(shù)據(jù)圖 2-8 USB數(shù)據(jù)流4. 對(duì)于高速設(shè)備允許數(shù)據(jù)包最大容量為8,16,32或64字節(jié),對(duì)于低速設(shè)備只有8 字節(jié)一種選擇;5. 端點(diǎn)不能指定總線訪問(wèn)的頻率和占用總線的時(shí)間,USB系統(tǒng)軟件會(huì)做出限制;6. 具有數(shù)據(jù)傳輸保證,在必要時(shí)可以重試。同步傳輸(Isochronous Transfer)1. 是一種周期的連續(xù)的傳輸方式,通常用于與時(shí)間有密切關(guān)系的信息的傳輸;2. 數(shù)據(jù)沒(méi)有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. 沒(méi)有數(shù)據(jù)重發(fā)機(jī)制要求,具有一定的容錯(cuò)性;7. 與中斷方式一起占用總線的時(shí)間不得超過(guò)一幀的90%。中斷傳輸(Interrupt Transfer)1. 用于非周期的自然發(fā)生的數(shù)據(jù)量很小的信息的傳輸,如鍵盤(pán)、鼠標(biāo)等;2. 數(shù)據(jù)沒(méi)有USB 定義的結(jié)構(gòu)數(shù)據(jù)流管道;3. 只有輸入這一種傳輸方式,即外設(shè)到主機(jī);4. 對(duì)于高速設(shè)備允許數(shù)據(jù)包,最大容量為小于或等于64字節(jié),對(duì)于低速設(shè)備只能小于或等于8字節(jié);5. 具有最大服務(wù)周期保證,即在規(guī)定時(shí)間內(nèi)保證有一次數(shù)據(jù)傳輸;6. 與同步方式一起占用總線的時(shí)間不得超過(guò)一幀的90%;7. 具有數(shù)據(jù)傳輸保證,在必要時(shí)可以重試。批傳輸(Bulk Transfer)1. 用于大量的對(duì)時(shí)間沒(méi)有要求的數(shù)據(jù)傳輸;2. 數(shù)據(jù)沒(méi)有USB 定義的結(jié)構(gòu)數(shù)據(jù)流管道;3. 單向傳輸,如果一個(gè)外設(shè)需要雙向傳輸,則必須使用另一個(gè)端點(diǎn);4. 只能用于高速設(shè)備,允許數(shù)據(jù)包最大容量為8,16,32或64字節(jié);5. 沒(méi)有帶寬的保證,只要有總線空閑就允許傳輸數(shù)據(jù),優(yōu)先級(jí)小,于控制傳輸;6. 具有數(shù)據(jù)傳輸保證,在必要時(shí)可以重試,以保證數(shù)據(jù)的準(zhǔn)確性。圖2-7 描述了輸入輸出請(qǐng)求IRP傳輸與操作之間的關(guān)系。圖2-7 USB 數(shù)據(jù)傳輸一個(gè)同步傳送是一個(gè)或多個(gè) IN/OUT 方向的數(shù)據(jù)事務(wù)。IRP數(shù)據(jù)流類(lèi)型IRP 事務(wù) 事務(wù) 事務(wù)所有的傳送都是由一個(gè)或多個(gè)事務(wù)組成。一個(gè) IRP又可由一個(gè)或多個(gè)傳送組成??刂苽魉虸RP Setup事務(wù)數(shù)據(jù)事務(wù)Status事務(wù)額外的控制傳送控制傳送首先是一個(gè) OUT方向的 Setup 事務(wù),然后是多個(gè) IN 方向或 OUT 方向的數(shù)據(jù)事務(wù),最后是一個(gè)與數(shù)據(jù)反向的 Status 事務(wù)。中斷傳送IRP 事務(wù) 事務(wù)一個(gè)中斷傳送是一個(gè)或多個(gè) IN/OUT 方向的數(shù)據(jù)事務(wù)。同步傳送IRP 事務(wù) 事務(wù) 事務(wù)批傳送事務(wù) 事務(wù) 事務(wù)一個(gè)批傳送是一個(gè)或多個(gè) IN/OUT 方向的數(shù)據(jù)事務(wù)。3 數(shù)據(jù)采集系統(tǒng)的固件設(shè)計(jì)3.1 固件的開(kāi)發(fā)環(huán)境Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。Keil C51的工具包中,uVision是C51 for Windows的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。3.2 采用PDIUSBD12的固件設(shè)計(jì)3.2.1 固件編程的主要工作固件是FIREWARE的對(duì)應(yīng)中文詞,它實(shí)際上是單片機(jī)的程序文件,其編寫(xiě)語(yǔ)言可以采用C語(yǔ)言或是匯編語(yǔ)言.它的操作方式與硬件聯(lián)系緊密,包括USB設(shè)備的連接USB協(xié)議、中斷處理等,它不是單純的軟件,而是軟件和硬件的結(jié)合,開(kāi)發(fā)者需要對(duì)端口、中斷和硬件結(jié)構(gòu)非常熟悉。固件程序一般放入MCU中,當(dāng)把設(shè)備連接到主機(jī)上時(shí),上位機(jī)可以發(fā)現(xiàn)新設(shè)備,然后建立連接。因此,編寫(xiě)固件程序的一個(gè)最主要的目的就時(shí)讓W(xué)indows可以檢測(cè)和識(shí)別設(shè)備。USB固件程序程序由三部分組成:初始化單片機(jī)和所有的外圍電路(包括PDIUSBD12);主循環(huán)部分,其任務(wù)是可以中斷的;中斷服務(wù)程序,其任務(wù)是對(duì)時(shí)間敏感的,必須馬上執(zhí)行。根據(jù)USB協(xié)議,任何傳輸都是由主機(jī)開(kāi)始的。單片機(jī)作它的前臺(tái)工作,等待中斷。主機(jī)首先要發(fā)令牌包給USB設(shè)備(這里是PDIUSBD12),PDIUSBD12接收到令牌包后就給單片機(jī)發(fā)中斷。單片機(jī)進(jìn)入中斷服務(wù)程序,首先讀PDIUSBD12的中斷寄存器,判斷USB令牌包的類(lèi)型,然后執(zhí)行相應(yīng)的操作。在USB單片機(jī)程序中,要完成對(duì)各種令牌包的響應(yīng),其中比較難處理的是SETUP包,主要是端口0的編程。單片機(jī)與PDIUSBD12的通信主要是靠單片機(jī)給PDIUSBD12發(fā)命令和數(shù)據(jù)來(lái)實(shí)現(xiàn)的。PDIUSBD12的命令字分為三種:初始化命令字、數(shù)據(jù)流命令字和通用命令字。PDIUSBD12數(shù)據(jù)手冊(cè)給出了各種命令的代碼和地址。單片機(jī)先給PDIUSBD12的命令地址發(fā)命令,根據(jù)不同命令的要求再發(fā)送或讀出不同的數(shù)據(jù)。因此,可以將每種命令做成函數(shù),用函數(shù)實(shí)現(xiàn)各個(gè)命令,以后直接調(diào)用函數(shù)即可。3.2.2 PDIUSBD12芯片特點(diǎn)PDIUSBD12是一個(gè)性能優(yōu)化的USB器件,通常用于基于微控制器的系統(tǒng),并通過(guò)高速通用并行接口與微控制器進(jìn)行通信,而且支持本地DMA傳輸。該器件采用模塊化的方法實(shí)現(xiàn)一個(gè)USB接口,允許在眾多可用的微控制器中選擇最合適的作為系統(tǒng)微控制器,允許使用現(xiàn)存的體系結(jié)構(gòu)使固件投資減到最小。這種靈活性減少了開(kāi)發(fā)時(shí)間、風(fēng)險(xiǎn)和成本。該器件使開(kāi)發(fā)成本低且高效的USB外圍設(shè)備的一種有效途徑。PDIUSDB12完全符合USB1.1規(guī)范,也能適應(yīng)大多數(shù)設(shè)備類(lèi)規(guī)范的設(shè)計(jì),如成像類(lèi)、大容量存儲(chǔ)類(lèi)、通信類(lèi)、打印類(lèi)和人工輸入設(shè)備等。因此,PDIUSBD12非常適合做很多外圍設(shè)備?,F(xiàn)在很
收藏
編號(hào):146692
類(lèi)型:共享資源
大?。?span id="mwluj54" class="font-tahoma">1.47MB
格式:RAR
上傳時(shí)間:2017-10-26
100
積分
- 關(guān) 鍵 詞:
-
dz201plc
控制
節(jié)制
供水系統(tǒng)
- 資源描述:
-
DZ201PLC控制的恒壓供水系統(tǒng),dz201plc,控制,節(jié)制,供水系統(tǒng)
展開(kāi)閱讀全文
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶(hù)書(shū)面授權(quán),請(qǐng)勿作他用。