【正文】
目 錄 第一章 緒論 5 課題背景 5 課題的提出 5 USB串行總線優(yōu)勢(shì) 6 本課題研究的內(nèi)容和意義 7第二章 USB概要設(shè)計(jì) 9 USB傳輸要件 9 事務(wù)、信息包和聯(lián)絡(luò)信號(hào) 9 USB的傳輸結(jié)構(gòu) 10 USB總線枚舉過(guò)程 13 USB的設(shè)備描述符 14 USB請(qǐng)求 15第三章 數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì) 17 硬件系統(tǒng)的結(jié)構(gòu) 17 芯片選擇 17 ADC0809 18 AT89C51 20 PDIUSBD12 21 接口硬件電路設(shè)計(jì) 24 A/D與單片機(jī)接口電路 25 PDIUSBDI2與單片機(jī)接口電路 25第四章 數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì) 27 A/D轉(zhuǎn)換時(shí)序控制 27 固件的開(kāi)發(fā) 27 采用PDIUSBD12的固件設(shè)計(jì) 28 驅(qū)動(dòng)的開(kāi)發(fā)工具 28 PDIUSBD12固件程序的編寫(xiě) 29 固件結(jié)構(gòu) 30 固件的編程實(shí)現(xiàn) 32 底層函數(shù) 32 命令接口 32 34 36第五章 USB設(shè)備驅(qū)動(dòng)及應(yīng)用程序設(shè)計(jì) 40 USB設(shè)備驅(qū)動(dòng)程序 40 USB設(shè)備應(yīng)用程序設(shè)計(jì) 46 第六章 結(jié) 論 49 參考文獻(xiàn) 50 附錄 51基于USB總線的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)摘要:本文介紹了一種基于通用串行總線USB(Universal Serial Bus)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)。隨著用戶對(duì)數(shù)據(jù)采集系統(tǒng)要求的不斷提高,USB接口以其簡(jiǎn)單易用、速度快而被廣大用戶所接受。本論文所闡述的數(shù)據(jù)采集系統(tǒng)采用了集成了微處理器的USB接口芯片PDIUSBDI2來(lái)完成采樣控制并與PC機(jī)應(yīng)用程序完成系統(tǒng)通信功能,由應(yīng)用程序完成用戶命令及數(shù)據(jù)的顯示。該系統(tǒng)采用USB總線取代傳統(tǒng)的數(shù)據(jù)采集總線,通過(guò)對(duì)USB協(xié)議和設(shè)備構(gòu)架的理解,對(duì)數(shù)據(jù)采集系統(tǒng)進(jìn)行了硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件設(shè)計(jì)主要解決了控制器與主機(jī)通信問(wèn)題,數(shù)據(jù)采樣、模擬輸出、I/O擴(kuò)展等電路設(shè)計(jì)以及它們之間的接口。軟件編程主要分為三部分:一是為滿足獲得最大傳輸速率和運(yùn)行效率的固件程序編程。二是為用戶提供的以動(dòng)態(tài)鏈接庫(kù)形式封裝的功能函數(shù)。三是提供演示和測(cè)試的控制面板程序,并為系統(tǒng)提供了兩個(gè)應(yīng)用實(shí)例。除此之外,論文還介紹了設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā),并在文章結(jié)尾對(duì)USB的應(yīng)用前景進(jìn)行了探索。關(guān)鍵詞:USB總線;單片機(jī);數(shù)據(jù)采集;固件;Windows驅(qū)動(dòng)程序模型;設(shè)備驅(qū)動(dòng)程序USB busbased data acquisition system design and implementationAbstract:This paper describes the design of a data acquisition system based on USB. With the advance of the clients requirement on data collection of a system, as a latemodel interface technology, USB is well accepted by vast clients because of its simplicity and high speed. The system using the USB interface chip with onchip microprocessor PDIUSBDI2controls the data acquisition process and municates with the puter. Through the manmachine interface clients can send mend and data can be printed. With good understanding of USB protocol and device truss, the system is design by using USB instead of other buses. The hardware design includes the munication between the controller and puter, the data acquisition part, analog output, I/O extension and the interface between them. The software program mainly includes the firmware code in the controller, functions for clients with DLL encapsulation and the control panel design. Also the device driver development is introduced and the foreground of USB application is explored at the end.KEY WORDS:USB bus;data collection;MCU;fireware;WDM;device drive program第一章 緒論本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)是在單片機(jī)AT89C51控制下進(jìn)行數(shù)據(jù)采集,并通過(guò)PHILIPS公司的USB接口芯片PDIUSBDI2上傳給PC機(jī)進(jì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),為滿足D12在USB上的最大傳輸速率而編寫(xiě)固件程序,用C51語(yǔ)言編寫(xiě):二是了解USB的設(shè)備驅(qū)動(dòng)程序與應(yīng)用。 課題背景現(xiàn)代工業(yè)生產(chǎn)和科學(xué)研究對(duì)數(shù)據(jù)采集的要求日益普遍,在瞬態(tài)信號(hào)測(cè)量、圖像處理等一些測(cè)量中,都需要進(jìn)行數(shù)據(jù)采集。現(xiàn)在通用的數(shù)據(jù)采集卡一般多是利用微機(jī)機(jī)箱內(nèi)的PCI插槽或ISA插槽進(jìn)行擴(kuò)展。通過(guò)數(shù)據(jù)采集系統(tǒng),可以簡(jiǎn)潔、通用化的硬件配合以相應(yīng)的軟件實(shí)現(xiàn)以往專用測(cè)試儀器的功能。完成“軟件既儀器”的理念.信息技術(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ī)制相交互的功能。 課題的提出對(duì)于數(shù)據(jù)采集系統(tǒng)而言有兩個(gè)關(guān)鍵性問(wèn)題:一是控制A/D轉(zhuǎn)換和數(shù)據(jù)傳輸?shù)目刂破?,一是采集系統(tǒng)與上位機(jī)PC的傳輸方式。其中控制器一般采用通用的單片機(jī),包括4位、8位、16位以至32位的各類單片機(jī)。這些單片機(jī)芯片優(yōu)勢(shì)在于價(jià)格低廉、結(jié)構(gòu)簡(jiǎn)單、接口擴(kuò)展能力強(qiáng)等,但是其數(shù)字運(yùn)算能力較差,所以目前出現(xiàn)了許多以DSP芯片作為數(shù)據(jù)采集系統(tǒng)控制器的數(shù)據(jù)采集系統(tǒng)。本課題為簡(jiǎn)化開(kāi)發(fā)難度,充分利用現(xiàn)有的工作環(huán)境采用較常用的AT89C52單片機(jī)作為系統(tǒng)控制器。 對(duì)于數(shù)據(jù)采集系統(tǒng)與上位機(jī)的通訊方式,現(xiàn)行的常用方式是利用PC機(jī)箱內(nèi)的PCI, ISA插槽進(jìn)行擴(kuò)展:其傳輸速度分別為132M/S. 16M/S、但是由于PC機(jī)接口資源有限,且需要對(duì)接口卡硬件資源進(jìn)行合理配置,故其存在以下缺點(diǎn):安裝麻煩。價(jià)格昂貴。受計(jì)算機(jī)插槽數(shù)量、地址、中斷資源限制,可擴(kuò)展性差。在一些電磁干擾性強(qiáng)的測(cè)試現(xiàn)場(chǎng),無(wú)法專門對(duì)其做電磁屏蔽,易導(dǎo)致采集的數(shù)據(jù)失真。本課題旨在使用新型的通用串行總線USB完成數(shù)據(jù)采集系統(tǒng)的構(gòu)架,充分發(fā)揮USB總線接口簡(jiǎn)潔、使用方便的優(yōu)勢(shì)。并為后續(xù)的使用USB總線對(duì)實(shí)驗(yàn)室現(xiàn)有的“頻率特性測(cè)試系統(tǒng)”改進(jìn)作前期準(zhǔn)備工作。課題主要完成四個(gè)方面的工作:數(shù)據(jù)采集系統(tǒng)硬件設(shè)計(jì)、固件設(shè)計(jì)、應(yīng)用程序及WDM設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)。使用到的軟件工具包括Prote199,K eilC 51,M icrosoftV isualSt udio6 .0,W in2000DDK:使用到的硬件工具包括單片機(jī)寫(xiě)入器、萬(wàn)用表、示波器等等。采用的操作系統(tǒng)平臺(tái)為Windows 200。 USB串行總線優(yōu)勢(shì)通用串行總線USB( UniversalS erialB us)是1995年康柏、微軟、IBM,D EC等公司為解決傳統(tǒng)總線不足而推廣的一種新型的通信標(biāo)準(zhǔn)。該總線接口具有安裝方便、高帶寬、易于擴(kuò)展等優(yōu)點(diǎn),已逐漸成為現(xiàn)代數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢(shì)?;赨SB的高速數(shù)據(jù)采集卡充分利用USB總線的上述優(yōu)點(diǎn),有效解決了傳統(tǒng)數(shù)據(jù)采集卡的缺陷。USB從傳統(tǒng)I/O模式的栓桔中解放出來(lái),開(kāi)辟了一條外設(shè)同PC機(jī)連接的方法。與其他的老式PC機(jī)接口相比,USB具有如下優(yōu)點(diǎn):1. 熱插拔:用戶可以把USB外設(shè)連接到一臺(tái)正在運(yùn)行的PC機(jī)上,操作系統(tǒng)能自動(dòng)識(shí)別,并且用戶可以立即使用,而不需要重新啟動(dòng)。用戶也可以在任何時(shí)候斷開(kāi)USB設(shè)備,而不管計(jì)算機(jī)是否正在運(yùn)行,這都不會(huì)損壞計(jì)算機(jī)。 2. 即插即用:USB實(shí)現(xiàn)了自動(dòng)配置,它不需要用戶手動(dòng)配置I/O地址和中斷請(qǐng)求(URQ)。當(dāng)USB外設(shè)接入PC時(shí),操作系統(tǒng)會(huì)自動(dòng)檢測(cè)到這個(gè)連接。并加載適合的驅(qū)動(dòng)程序。對(duì)用戶來(lái)說(shuō),只需要等待幾秒鐘,USB外設(shè)的安裝就會(huì)完成。3. 共享式接口:USB端口支持多個(gè)外設(shè)的連接,通過(guò)USB集線器,一個(gè)USB主控制器可以連接多達(dá)126個(gè)外設(shè)。:和其它老式的PC接口相比,USB接口小且薄,更適合于外設(shè)體積的小型化。5. 使用靈活:USB支持三種類型的傳輸速率,、12Mb/s的全速傳輸和480Mb/s的高速傳輸。USB支持四種傳輸類型,塊傳輸、同步傳輸、中斷傳輸和控制傳輸。這使得USB總線適合多種外設(shè)的傳輸需要。6. 提供電源:USB電纜向外設(shè)提供一根+5V的電源線,電流的大小取決于集線器端口。用戶可以直接使用這個(gè)總線電源。當(dāng)然 ,USB總線還存在許多缺陷。USB總線傳輸距離有限。USB總線協(xié)議復(fù)雜等。但隨著操作系統(tǒng)、硬件廠商對(duì)USB的進(jìn)一步支持,其在PC外設(shè)方面的將大有可為。本課題旨在對(duì)USB總線的結(jié)構(gòu)、協(xié)議和系統(tǒng)體系進(jìn)行充分研究的基礎(chǔ)上,完成一個(gè)實(shí)際的USB數(shù)據(jù)采集系統(tǒng)軟硬件的構(gòu)架。具體需要做的工作包括軟件和硬件兩部分。硬件方面 ,該系統(tǒng)使用Philips公司的PDIUSBD12芯片作為設(shè)備的USB接口芯片。采用常用的AT89C51作為系統(tǒng)的CPU: ADC0809芯片作為AD轉(zhuǎn)換芯片。配合其它輔助芯片和單片機(jī)固件完成輸入模擬信號(hào)的采集、存儲(chǔ)和向PC主機(jī)的傳輸。軟件方面分如下幾部分: 1. 單片機(jī)固件: 本系統(tǒng)中的單片機(jī)固件采用C語(yǔ)言編寫(xiě),使用KeilC 51編譯器為開(kāi)發(fā)工具。固件中主要完成對(duì)USB協(xié)議規(guī)定的諸多標(biāo)準(zhǔn)請(qǐng)求以及用戶自定義請(qǐng)求的響應(yīng)。此外還包括控制ADC0809芯片完成對(duì)模擬信號(hào)的轉(zhuǎn)換代碼,以及USB設(shè)備所需各種描述符的定義。 2. 主機(jī)設(shè)備驅(qū)動(dòng)程序: USB外設(shè)的驅(qū)動(dòng)程序只能為WDM(WindowsD riverM odle)形式的驅(qū)動(dòng),課題中采用以DDK2000為開(kāi)發(fā)工具,編譯時(shí)直接在DDK2000的DOS窗口中編譯。 3. 用戶應(yīng)用程序: 應(yīng)用程序是采集到數(shù)據(jù)最終顯示、處理的地方。系統(tǒng)用戶應(yīng)用程序界面模仿傳統(tǒng)示波器的外形。以圖形的方式動(dòng)態(tài)的顯示采樣數(shù)據(jù)。具體的采樣數(shù)值也可以寫(xiě)入“記事本”文件中,進(jìn)而可以用其它專門軟件進(jìn)行處理。 Philips公司提供了PDIUSBD1 2的開(kāi)發(fā)包,包括軟件和硬件兩部分。為用戶使用該種型號(hào)的USB接口芯片進(jìn)行設(shè)備開(kāi)發(fā)提供一個(gè)基礎(chǔ)和工作平臺(tái)。 該數(shù)據(jù)采集系統(tǒng)的目的在于為實(shí)驗(yàn)室現(xiàn)有的一套頻率特性測(cè)試儀的改進(jìn)做前期工作。但系統(tǒng)應(yīng)用的潛力并不局限與此,比如在增加與被測(cè)信號(hào)相適應(yīng)的傳感器、采樣保持、濾波和隔離電路后系統(tǒng)可以方便的應(yīng)用于家庭醫(yī)療護(hù)理方面,可以用于對(duì)人體的心率、脈搏、體溫等參數(shù)的測(cè)試。在個(gè)人電腦逐步進(jìn)入家庭的當(dāng)今,這樣的系統(tǒng)應(yīng)當(dāng)具有一定的應(yīng)用前景。第二章 USB概要設(shè)計(jì) USB傳輸要件端點(diǎn)端點(diǎn)是USB設(shè)備的一個(gè)部分,所有的傳輸都是將端點(diǎn)作為發(fā)出點(diǎn)或者接收點(diǎn)。通常情況下,設(shè)備端點(diǎn)是一個(gè)內(nèi)存區(qū)域,或者是控制芯片的一個(gè)緩存器,端點(diǎn)的作用是數(shù)據(jù)緩存。每個(gè)USB設(shè)備有一個(gè)唯一的地址,這個(gè)地址是在設(shè)備連上主機(jī)時(shí)由主機(jī)分配的,而設(shè)備中的每個(gè)端點(diǎn)在設(shè)備內(nèi)部有唯一的端點(diǎn)號(hào),這個(gè)端點(diǎn)號(hào)是在設(shè)備設(shè)計(jì)時(shí)被給定的。端點(diǎn)號(hào)可以是0—15,方向可以是IN(設(shè)備發(fā)送數(shù)據(jù)給主機(jī))或者OUT(主機(jī)發(fā)送數(shù)據(jù)給設(shè)備)。每個(gè)設(shè)備必須將端點(diǎn)0設(shè)置為控制端點(diǎn)。控制端點(diǎn)是雙向傳輸數(shù)據(jù),其他端點(diǎn)都是單向數(shù)據(jù)傳輸。管道管道是設(shè)備端點(diǎn)和主機(jī)控制器之間的連接,在一個(gè)傳輸發(fā)生之前,必須首先建立一個(gè)管道。管道隨著主機(jī)和設(shè)備的連接的建立而建立,當(dāng)移除設(shè)備時(shí),管道也跟著被移除。每一個(gè)設(shè)備都會(huì)和主機(jī)建立一個(gè)默認(rèn)的控制管道(Default Control Pipe),此管道使用端口0。不同的傳輸類型使用不同的管道,此外管道還可以被分為消息管道(Message Pipe)和流管道(Stream Pipe)消息管道是指具有某種USB定義格式的數(shù)據(jù)流,是雙向的管道;而流管道則是不具有USB定義格式的數(shù)據(jù)流,不具有雙向性??刂苽鬏斒俏ㄒ皇褂秒p向消息管道的傳輸,其他傳輸都是使用單方向的流管道。 事務(wù)、信息包和聯(lián)絡(luò)信號(hào)每一個(gè)USB傳輸包含一個(gè)或多個(gè)事務(wù),每一個(gè)事務(wù)又包含一到三個(gè)信息包。事務(wù)根據(jù)其數(shù)據(jù)流方向以及傳輸目的,可以分為3類:輸入、輸出與設(shè)置。每一個(gè)傳輸類型的傳輸包括一個(gè)或多個(gè)階段(Stage),一個(gè)階段即一種類型的事務(wù)。每個(gè)階段又可以分為一個(gè)或幾個(gè)相位(Phase),相位包含幾個(gè)或兩個(gè)事務(wù)信息包。信息包是一個(gè)區(qū)塊的固定格式信息,每個(gè)信息包由一個(gè)