基于USB的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計(jì)論文_第1頁
基于USB的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計(jì)論文_第2頁
基于USB的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計(jì)論文_第3頁
基于USB的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計(jì)論文_第4頁
基于USB的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 PAGE21 / NUMPAGES21數(shù)據(jù)采集系統(tǒng)USB接口的實(shí)現(xiàn)自動化專業(yè)學(xué)生 XXX指導(dǎo)教師 XXX摘要:USB通用串行總線是一種新型的微機(jī)接口規(guī),隨著客戶對系統(tǒng)的數(shù)據(jù)采集速度要求的不斷提高,USB以其易于擴(kuò)展、速度快、方便使用等優(yōu)點(diǎn)越來越多的應(yīng)用于數(shù)據(jù)采集系統(tǒng)中。本文論述了一種基于USB總線的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法,通過對USB協(xié)議和設(shè)備構(gòu)架的充分理解,對以單片機(jī)AT89C52和USB接口芯片CH372為核心的數(shù)據(jù)采集系統(tǒng)進(jìn)行了硬件設(shè)計(jì),并在此設(shè)計(jì)的基礎(chǔ)上給出相應(yīng)的電路原理圖。硬件設(shè)計(jì)主要解決的是CH372、TLC549和TLC5620與單片機(jī)之間的接口電路問題;USB軟件設(shè)計(jì)由USB

2、設(shè)備固件程序、設(shè)備驅(qū)動程序以與主機(jī)應(yīng)用程序三部分組成。本系統(tǒng)充分展現(xiàn)了USB總線安裝方便、使用方便、功能齊全等優(yōu)點(diǎn)。關(guān)鍵詞:USB通用串行總線;單片機(jī);數(shù)據(jù)采集系統(tǒng)Realize of Data Acquisition System Based on USBStudent majoring in AutomationXXXTutor XXXAbstract:USB Universal Serial Bus is a new type of computer interface specification. With customers on the system data acquisitio

3、n speed requirements continue to increase, more and more USB was used in data acquisition systems with its easy to expand, fast, easy to use, etc. This paper discussed a USB-based data bus acquisition system design approach, through the USB protocol and device architecture fully understanding, AT89C

4、52 micro controller and USB interface chip CH372 as the core of the data acquisition system hardware design, and the corresponding circuit diagram on the basis of this design. The hardware design is mainly to solve the problem of the interface circuit CH372, TLC549 and TLC5620 communicated with micr

5、o controller; USB software was designed by the USB device firmware, device drivers, and the host application consists of three partsThe system has the advantage of USB bus to install, easy to use, full-featured, etc.Key words:USB bus;Data collection;MCU1 緒論1.1 課題背景和研究意義在工業(yè)生產(chǎn)中,往往需要使用PC機(jī)進(jìn)行各種數(shù)據(jù)采集和處理,如溫

6、度和壓力。數(shù)據(jù)采集系統(tǒng)的主要任務(wù)是數(shù)據(jù)信息的采集、A/D轉(zhuǎn)換,然后通過PC接口總線將數(shù)據(jù)送到計(jì)算機(jī)中進(jìn)行進(jìn)一步的處理。目前,以該系統(tǒng)為核心的設(shè)備在國和國外已被廣泛應(yīng)用,如工業(yè)控制中現(xiàn)場數(shù)據(jù)采集設(shè)備;視頻,家庭影院與其他多媒體設(shè)備。數(shù)據(jù)采集卡與計(jì)算機(jī)外設(shè)一樣,與主機(jī)通訊接口一般基于PC機(jī)上的ISA總線、PCI總線、RS-232總線等1。雖然PCI總線具有更高的傳輸速率,并支持“即插即用”功能,但其缺點(diǎn)是插拔麻煩,而且由于PC擴(kuò)展插槽一般56個(gè),所以最多也只能有56個(gè)PCI數(shù)據(jù)采集卡同時(shí)使用在同一計(jì)算機(jī),同時(shí)PCI插槽在主板上占用相當(dāng)大的空間,這不利于小型化的計(jì)算機(jī)系統(tǒng)。對于ISA總線也是存在同樣

7、的問題。雖然RS-232C串行總線連接器簡單,但其傳輸速度慢,且主機(jī)串口數(shù)目非常有限??傊?,這些傳統(tǒng)接口的數(shù)據(jù)采集設(shè)備在使用上存在以下缺陷:安裝麻煩,受計(jì)算機(jī)插槽數(shù)量、中斷資源、地址的限制,在一些強(qiáng)電磁干擾試驗(yàn)現(xiàn)場可能不會專門做出電磁屏蔽,從而會出現(xiàn)所收集的數(shù)據(jù)失真的情況。通用串行總線USB很好地解決了這些問題。USB總線接口的數(shù)據(jù)采集系統(tǒng)具有以下優(yōu)點(diǎn):1.設(shè)備裝配簡單。USB設(shè)備支持即插即用,無需打開機(jī)箱安裝USB設(shè)備,無需再關(guān)閉計(jì)算機(jī)。2.接口數(shù)目多,每個(gè)USB主機(jī)可以通過USB集線器同時(shí)掛接最多127個(gè)外圍設(shè)備,可以有效的解決I/O口數(shù)目不夠用的問題。3.數(shù)據(jù)傳輸速度比一般的串行總線快,

8、可以達(dá)到絕大部分多點(diǎn)數(shù)據(jù)采集系統(tǒng)的要求。4.USB總線能夠直接對設(shè)備進(jìn)行供電2。1.2USB的發(fā)展USB(通用串行總線)作為一種新的外設(shè)連接技術(shù),最初由康柏、DEC、IBM、英特爾、微軟、NEC和北方電信等七大集團(tuán)合作開發(fā)的。這項(xiàng)技術(shù)的重點(diǎn)在于簡化計(jì)算機(jī)和外圍設(shè)備的連接過程,兼容低速和高速,從而解決串行設(shè)備和并行設(shè)備連接電腦的爭論,為用戶提供一個(gè)可擴(kuò)展的、共享的、容易來使用的串行總線。隨著各級的發(fā)展和滲透,外設(shè)和PC連接與擴(kuò)展已變得越來越重要。1994年,微軟公司的即插即用計(jì)劃,重點(diǎn)在于PC外圍設(shè)備和擴(kuò)充電路板連接在一起,實(shí)現(xiàn)系統(tǒng)對端口和中斷等資源自動分配,無需用戶干預(yù)。1996年康柏、英特爾

9、和微軟三家廠商提出設(shè)備托架的概念,其目的是實(shí)現(xiàn)高度的可擴(kuò)展性3。1.X版本在USB中首次引入,它的總線傳輸速率低,有12Mbps(全速)和1.5Mbps(低速)兩種。目前,它主要用在傳統(tǒng)的PC外設(shè),如鍵盤、鼠標(biāo)、顯示器等,移動存儲設(shè)備,如U盤,以與新興的消費(fèi)類電子產(chǎn)品,如移動、MP3播放器、MP4、MP5等。USB2.0于2000年4月公布,是一個(gè)高速模式的版本,它的數(shù)據(jù)傳輸速度可達(dá)480Mbps,同時(shí)保持USB1.1優(yōu)勢的前提下,保證了向下兼容性,可以完全支持USB1.1產(chǎn)品。不過,如果要使用高速傳輸,則必須使用兼容USB2.0的主機(jī)軟件和主機(jī)控制器,這意味著這臺主機(jī)的操作系統(tǒng)必須安裝USB

10、2.0的補(bǔ)丁,同時(shí)安裝支持USB2.0主機(jī)控制器或PCI擴(kuò)展卡。隨著USB設(shè)備急劇增長,設(shè)備和設(shè)備之間的直接數(shù)據(jù)傳輸變得越來越重要,在2001年12月底USB OTG技術(shù)應(yīng)運(yùn)而生,開發(fā)設(shè)備上給予雙重身份。作為主機(jī)的同時(shí)也可以作為一個(gè)設(shè)備,其實(shí)質(zhì)是在設(shè)備加一個(gè)嵌入式計(jì)算機(jī)來執(zhí)行主機(jī)任務(wù)。這項(xiàng)技術(shù)使USB設(shè)備來擺脫對電腦的依賴,USB應(yīng)用的圍大大擴(kuò)展。1.3 國外現(xiàn)狀國外公司紛紛推出了很多以適應(yīng)不同精度,不同條件要求的USB數(shù)據(jù)采集產(chǎn)品。典型的是美國NI公司開發(fā)了一系列的USB數(shù)據(jù)采集卡,NI公司于2006年6月推出了兩款最新的采樣率高達(dá)1.25MB/s的USB2.0總線M系列數(shù)據(jù)采集設(shè)備。這些新

11、器件不僅能提供最高速率的數(shù)據(jù)采集功能,更是一種強(qiáng)大的測量服務(wù)軟件,以簡化編程工作和系統(tǒng)設(shè)置。新設(shè)備包括一個(gè)免費(fèi)的USB2.0高速交互式數(shù)據(jù)記錄軟件進(jìn)行分析。但是,該公司的USB數(shù)據(jù)采集卡系列產(chǎn)品的價(jià)格是非常昂貴的。近年來,國也有不少公司也都紛紛推出了USB數(shù)據(jù)采集卡,而這些產(chǎn)品大多是基于USB1.1協(xié)議規(guī),數(shù)據(jù)傳輸速度遠(yuǎn)低于基于USB2.0協(xié)議規(guī)數(shù)據(jù)采集卡,因此限制了采集速度。目前,USB接口的開發(fā)和應(yīng)用在廣度和深度上遠(yuǎn)遠(yuǎn)不如傳統(tǒng)的串行端口、并行端口以與各種總線插卡,其應(yīng)用主要局限于制定一些標(biāo)準(zhǔn)的PC外圍設(shè)備,如U盤、鍵盤、鼠標(biāo)。這主要是因?yàn)樽鳛橐粋€(gè)新的技術(shù)和新的標(biāo)準(zhǔn),USB規(guī)是更復(fù)雜的,相應(yīng)

12、的技術(shù)支持比較少,應(yīng)用程序開發(fā)人員都不是很了解,USB接口作為通用I/O接口使用有一定硬件和軟件的開發(fā)難度。USB2.0接口具有低成本、靈活方便、高性能以與可靠穩(wěn)定的特點(diǎn),將會逐步成為計(jì)算機(jī)的主要輸入和輸出方式??傮w來看,目前國USB數(shù)據(jù)采集設(shè)備的發(fā)展已經(jīng)取得了較大的進(jìn)步,但與國外在開發(fā)和應(yīng)用的深度和廣度而言,還有一定的距離,在一些現(xiàn)場數(shù)據(jù)采集的要求相對高的場合還是較多的采用外國產(chǎn)品。因此,隨著電腦對USB接口的普與和數(shù)據(jù)采集卡的實(shí)際應(yīng)用增加,使用USB2.0協(xié)議規(guī)開發(fā)符合各種場合的數(shù)據(jù)采集系統(tǒng),以與推進(jìn)產(chǎn)品的國產(chǎn)化已成為急需解決的現(xiàn)實(shí)問題4。1.4 本設(shè)計(jì)研究的主要容設(shè)計(jì)一款自適應(yīng)的USB接

13、口的數(shù)據(jù)采集系統(tǒng),能夠通過通用的串行總線接口替代傳統(tǒng)的數(shù)據(jù)采集板槽式應(yīng)用。此設(shè)計(jì)包括硬件系統(tǒng)和軟件系統(tǒng)的設(shè)計(jì)。數(shù)據(jù)采集系統(tǒng)的硬件系統(tǒng)包括A/D轉(zhuǎn)換電路、D/A轉(zhuǎn)換電路、接口芯片與USB連接圖以與周邊電路的設(shè)計(jì)。軟件系統(tǒng)包括固件程序、驅(qū)動程序以與用戶程序的設(shè)計(jì)來完成數(shù)據(jù)的采集與顯示工作。2 硬件系統(tǒng)的設(shè)計(jì)2.1 硬件方案的選擇在芯片方面處理器采用功能強(qiáng)大的AT89C52,因?yàn)槠溥m用于許多較復(fù)雜系統(tǒng)控制的應(yīng)用場合;A/D轉(zhuǎn)換器與D/A轉(zhuǎn)換器分別采用TLC549與TLC5620;由于CH372具有靈活省事的外置盒置雙重固件模式,置了USB通訊中的底層協(xié)議,所以接口芯片采用CH372。2.1.1 芯片

14、的選擇本設(shè)計(jì)采用51單片機(jī)中的AT89C52為主控制器件。AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能8位CMOS單片機(jī),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),可靈活應(yīng)用于各種領(lǐng)域。AT89C52單片機(jī)屬于AT89C51單片機(jī)的增強(qiáng)型,與Intel公司的80C52在硬件組成、引腳排列、指令系統(tǒng)和工作特點(diǎn)等方面兼容。其主要工作特性是:片程序存儲器含8KB的Flash程序存儲器,擦寫壽命可達(dá)到1000次;片數(shù)據(jù)存儲器含256字節(jié)的RAM;具有32根可編程的I/O口線;具有3個(gè)可編程的定時(shí)器;中斷系統(tǒng)是具有8個(gè)中斷源、6個(gè)中斷矢量、2級優(yōu)先權(quán)的

15、中斷結(jié)構(gòu);具有一個(gè)數(shù)據(jù)指針DPTR;低功耗工作模式有空閑模式和掉電模式;AT89C52工作電源電壓典型值為5V5。CH372具有靈活省事的置和外置兩種雙重固件模式,置了USB通訊中的底層協(xié)議。在外置固件模式下,所有USB請求由外部單片機(jī)根據(jù)需要自行處理,從而實(shí)現(xiàn)符合各種USB類規(guī)的設(shè)備。在置固件模式下,本地端單片機(jī)只負(fù)責(zé)數(shù)據(jù)交換,端點(diǎn)0的所有事務(wù)由CH372自動處理默認(rèn),單片機(jī)程序非常簡潔6。2.1.2 硬件系統(tǒng)設(shè)計(jì)方框圖圖2-1 總體設(shè)計(jì)方案模塊關(guān)系方框圖16路模擬信號經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)變成數(shù)字信號送入微處理器,再由D/A轉(zhuǎn)換器轉(zhuǎn)變?yōu)?6路開關(guān)信號送出;開關(guān)量信號經(jīng)過開關(guān)輸入電路讀入微處理器進(jìn)

16、行處理,處理后的結(jié)果經(jīng)74LS273鎖存輸出;8路脈沖信號由脈沖輸入電路輸入微處理器經(jīng)處理后送出;整個(gè)過程計(jì)算機(jī)通過接口芯片CH372對微處理器進(jìn)行控制;微處理器由電源直接供電。2.2A/D轉(zhuǎn)換和D/A轉(zhuǎn)換2.2.1 TLC549芯片電路設(shè)計(jì) TLC549是TI公司生產(chǎn)的一種高性能、低價(jià)位的8位A/D轉(zhuǎn)換器,它以8位開關(guān)電容逐次逼近的方法實(shí)現(xiàn)A/D轉(zhuǎn)換,最大轉(zhuǎn)換速率為40KHZ,4MHZ典型部系統(tǒng)時(shí)鐘,電源為3V至6V。它能很好的采用三線串行接口方式與各種微處理器連接,構(gòu)成各種廉價(jià)的測控應(yīng)用系統(tǒng)7。TLC549的其他特點(diǎn)包括可在微處理器控制下控制片采樣-保持電路或自動工作;具有差分高阻抗基準(zhǔn)電

17、壓輸入端、易于實(shí)現(xiàn)比率轉(zhuǎn)換的高速轉(zhuǎn)換器;整個(gè)開關(guān)電容逐次逼近轉(zhuǎn)換器電路的設(shè)計(jì)允許以不大于0.5的誤差在0-17s的時(shí)間圍實(shí)現(xiàn)最低有效位精度的轉(zhuǎn)換。TLC549中REF-接地,REF+接VCC,具體電路設(shè)計(jì)如圖2-2所示:圖2-2 A/D轉(zhuǎn)換電路TLC549部包含控制邏輯電路,數(shù)據(jù)寄存器以與采樣,部系統(tǒng)時(shí)鐘和保持。器件有兩個(gè)控制輸入:芯片選擇和I/O CLOCK,這是為了提高訪問速度和靈活性。這些控制輸入與TTL兼容的3態(tài)輸出易于與微處理器或小型計(jì)算機(jī)實(shí)現(xiàn)串行通信。器件可在17s甚至更短時(shí)間完成轉(zhuǎn)換。TLC549重復(fù)一次輸入-轉(zhuǎn)換-輸出周期為25s。I/O CLOCK和部系統(tǒng)時(shí)鐘獨(dú)立使用且不需要

18、任何二者之間的相位關(guān)系或特定的速度。由于這種獨(dú)立性和系統(tǒng)時(shí)鐘的部產(chǎn)生,控制軟件和硬件只需關(guān)心利用I/O時(shí)鐘讀出先前轉(zhuǎn)換結(jié)果和啟動轉(zhuǎn)換,從而簡化了器件的軟件和硬件控制任務(wù)。部系統(tǒng)時(shí)鐘以這種方式驅(qū)動轉(zhuǎn)換電路以便控制,硬件和軟件不需要涉與此項(xiàng)任務(wù)。2.2.2 TLC5620芯片電路設(shè)計(jì) TLC5620I和TLC5620C是帶有高阻抗緩沖輸入的4通道8位電源輸出數(shù)模轉(zhuǎn)換器集合。這些轉(zhuǎn)換器可以產(chǎn)生單調(diào)的、1至2倍于基準(zhǔn)電壓和接地電壓差值的輸出。器件集成上電復(fù)位功能,確保啟動時(shí)的環(huán)境是可重復(fù)的。TLC5620中GND接地,REF A-D連接+5V電源,VDD接+5V電源與0.1f電容,具體電路圖如圖2-3

19、所示:圖2-3 D/A轉(zhuǎn)換電路對TLC5620I和TLC5620C是通過一根簡單的3路串行總線來實(shí)現(xiàn)數(shù)字控制的。該總線兼容CMOS,并易于向所有的微處理器和微控制器設(shè)備提供接口。REF A-D四個(gè)引腳分別表示DAC A-D基準(zhǔn)電壓輸入。11位的命令字包括1位圍位、2位DAC選擇位和8位數(shù)據(jù)位,圍位用來選擇輸出圍是1倍還是2倍。DAC寄存器采用雙緩存,允許設(shè)備中寫入一整套新值LDAC實(shí)現(xiàn)了對DAC輸出值的同時(shí)更新。輸入則采用了史密斯觸發(fā)器,從而避免了高噪聲。2.3USB接口芯片CH372是CH375芯片的功能簡化版和CH371的升級產(chǎn)品,它是一個(gè)USB線的通用設(shè)備接口芯片。CH372可以方便的掛

20、接到MCU/DSP/MPU/單片機(jī)等控制器的系統(tǒng)總線上,它在本地端具有8位數(shù)據(jù)總線和中斷輸出以與寫、讀、片選控制線;在PC系統(tǒng)中,CH372的配套軟件提供的操作接口簡潔易用,這使得本地端的單片機(jī)與該芯片的通訊方便得就如同讀寫文件一般。CH372需與上位機(jī)與下位機(jī)連接來完成數(shù)據(jù)交換,下面詳細(xì)介紹其連接電路的設(shè)計(jì)。2.3.1 CH372和上位機(jī)連接電路設(shè)計(jì)圖2-4 CH372與USB總線連接圖如果CH372的電源電壓為3.3V,則應(yīng)該將V3引腳與VCC引腳短接,共同輸入3.3V電壓,并且電容C3可以省掉。圖2-4中,在電源斷電后將電解電容C4中的電能與時(shí)釋放掉會用到可選電阻R2,使VCC與時(shí)下降到

21、0V,確保在下次通電時(shí)CH372能夠可靠地上電復(fù)位。為使CH372能夠可靠復(fù)位,電源電壓從0V上升到5V的上升時(shí)間應(yīng)該少于100mS,所以電容C4的容量和電阻R3的阻值都不能太大。2.3.2 CH372與下位機(jī)連接電路設(shè)計(jì)圖2-5 CH372與單片機(jī)連接電路在沒有外部擴(kuò)展總線的單片機(jī)系統(tǒng)中,單片機(jī)也可以用普通的I/O引腳模擬出8位并口時(shí)序操作CH372芯片。在普通的MCS-51系列簡化單片機(jī)的典型應(yīng)用電路中,CH372的固定為低電平,一直處于片選狀態(tài),U5的P1端口作為8位雙向數(shù)據(jù)總線,在單片機(jī)程序中,可以控制各個(gè)I/O引腳模擬并口時(shí)序與CH372進(jìn)行數(shù)據(jù)交換。2.4 周邊電路設(shè)計(jì)由于系統(tǒng)要求

22、必須由16路開關(guān)量以與8路脈沖信號輸入,因此周邊電路的設(shè)計(jì)包括開關(guān)量輸入電路、脈沖輸入電路以與多路開關(guān)電路,完成信號的輸入處理與輸出工作。2.4.1 開關(guān)量輸入電路設(shè)計(jì) 74LS244為三態(tài)輸出的八組緩沖器和總線驅(qū)動器。由于系統(tǒng)要求有16路開關(guān)量輸入,因此,開關(guān)量輸入電路由2片74LS244組成。開關(guān)量輸入電路如圖2-6所示:圖2-6 開關(guān)量輸入電路2.4.2 開關(guān)量輸出電路設(shè)計(jì) 74LS273是帶有清除功能的8D觸發(fā)器。低電平清除,上升沿鎖存。滿足所需建立時(shí)間的D輸入信息在時(shí)鐘脈沖正邊沿作用下傳送到Q輸出端,時(shí)鐘觸發(fā)發(fā)生在一個(gè)特定的電平上,它不直接和正脈沖的過渡時(shí)間有關(guān)。當(dāng)時(shí)鐘輸入為高電平或

23、低電平時(shí),D輸入信號對輸出無影響。觸發(fā)器保證對0到30M的時(shí)鐘頻率圍響應(yīng),而最高時(shí)鐘頻率的典型值是40M。對于273每個(gè)觸發(fā)器的功耗典型值為39mW,對于LS273為10mW。由于系統(tǒng)要求有16路開關(guān)量輸出,因此,開關(guān)量輸出電路由2片74LS273組成。電路如圖2-7所示:圖2-7 開關(guān)量輸出電路2.4.3 脈沖輸入電路設(shè)計(jì) 8253是可編程的定時(shí)器/計(jì)數(shù)器,其部有三個(gè)獨(dú)立的16位定時(shí)器/計(jì)數(shù)器,每個(gè)通道都可以按二或十進(jìn)制計(jì)數(shù),并且每個(gè)通道都可按6種不同的方式工作。其GATE0GATE2是門控脈沖輸入端,CLK0CLK2是計(jì)數(shù)器02的時(shí)鐘脈沖輸入端,OUT0OUT2是輸出端。當(dāng)8253做外部事

24、件計(jì)數(shù)器時(shí),在CLK端所加的計(jì)數(shù)脈沖由外部事件產(chǎn)生,這些脈沖的間隔可以不相等。這時(shí),8253所能實(shí)現(xiàn)的定時(shí)時(shí)間決定于計(jì)數(shù)脈沖的頻率和計(jì)數(shù)器的初值,即定時(shí)時(shí)間=預(yù)置的計(jì)數(shù)初值n時(shí)鐘脈沖周期t8。由于系統(tǒng)要求有8路脈沖量輸入,因此,脈沖量輸入電路由3片8253組成。電路如圖2-8示:圖2-88路脈沖輸入電路2.4.4 多路開關(guān)電路設(shè)計(jì) CD4051是單8通道數(shù)字控制模擬開關(guān),有三個(gè)二進(jìn)制控制輸入端A0、A1、A2和INH輸入,具有低導(dǎo)通阻抗和很低的截止漏電流。這些開關(guān)電路在整個(gè)VDD-VSS和VDD-VEE電源圍具有極低的靜態(tài)功耗,與控制信號的邏輯狀態(tài)無關(guān)。當(dāng)INH輸入端為1時(shí),所有的通道截止。三

25、位二進(jìn)制信號選8通道中的某一通道,可連接該輸入端至輸出。系統(tǒng)要求有16路模擬量輸入與輸出,模擬量輸入輸出信號分別經(jīng)過2片CD4051選擇。多路開關(guān)圖如圖2-9所示:圖2-9 多路開關(guān)電路其中A0-A3為地址,S0-S15為模擬信號,IN/OUT為總輸入輸出。CD4051帶有三個(gè)通道選擇輸入端A、B、C和一個(gè)禁止端INH。當(dāng)CBA為000111B時(shí),可產(chǎn)生8選1控制信號,使8路通道中的某一通道的輸入與輸出接通。當(dāng)INH為0時(shí),允許通道接通;當(dāng)INH為1時(shí),禁止通道接通。改變CD4051的IN/OUT07與OUT/IN的傳遞方向,可用做多路開關(guān)和反多路開關(guān)9。使用禁止端INH,可以很方便地實(shí)現(xiàn)通道

26、數(shù)的擴(kuò)展。本系統(tǒng)使用兩片CD4051組成16路的多路開關(guān)。當(dāng)通道選擇碼取00001111B之一時(shí),便唯一地選中這16路通道中的某一通道。3 軟件系統(tǒng)的設(shè)計(jì)基于USB的數(shù)據(jù)采集系統(tǒng)軟件部分總共分為三塊:采集設(shè)備固件程序、采集設(shè)備驅(qū)動程序和用戶應(yīng)用程序。采集設(shè)備固件的作用是輔助硬件,任何基于微處理器與外圍電路的功能設(shè)備正常工作都離不開固件的參與;驅(qū)動程序采用基于WDM模型的驅(qū)動程序;對于基于USB的數(shù)據(jù)采集系統(tǒng),用戶應(yīng)用程序也是必須存在的,功能是開啟、關(guān)閉USB設(shè)備,檢測USB設(shè)備,顯示分析數(shù)據(jù)等。下面對軟件的設(shè)計(jì)詳細(xì)介紹。3.1USB固件程序設(shè)計(jì)所有基于微處理器與其外圍電路的功能設(shè)備保證正常工作

27、都離不開固件的參與,固件的作用就是輔助硬件,即控制硬件來完成預(yù)期的功能,若沒有固件的控制和參與,硬件設(shè)備只是簡單的芯片堆砌,無法達(dá)到預(yù)期的功能。因此,用戶必須編寫固件程序去輔助硬件完成USB的通信任務(wù)。具體如下:(1)初始化。設(shè)置一些特殊寄存器的初始值,以實(shí)現(xiàn)所需的設(shè)備功能或?qū)傩?,例如使能端點(diǎn)、開中斷、配置端口等。(2)輔助硬件完成設(shè)備的重新枚舉過程。包括模擬設(shè)備的重新連接與斷開,對收到的設(shè)置包進(jìn)行判斷分析,從而對主設(shè)備的請求做出適當(dāng)?shù)捻憫?yīng),完成對設(shè)備的配置任務(wù)。(3)對中斷的處理。(4)數(shù)據(jù)的接收發(fā)送。(5)外圍電路的控制10。固件程序采用模塊化設(shè)計(jì)設(shè)計(jì)成中斷驅(qū)動模式,其總體結(jié)構(gòu)如圖3-1所

28、示。請求處理程序中斷服務(wù)程序數(shù)據(jù)接收/發(fā)送主程序硬件接口訪問程序圖3-1 固件程序結(jié)構(gòu)和數(shù)據(jù)流向各模塊主要功能如下:主程序:完成USB接口芯片與數(shù)字信號處理器的初始化、數(shù)據(jù)接收/發(fā)送標(biāo)志位的判斷和中斷請求等待。中斷服務(wù)程序:固件程序設(shè)計(jì)的重中之重就是中斷服務(wù)程序。首先讀取中斷寄存器的值判斷所發(fā)生中斷的類型,然后根據(jù)具體的中斷類型進(jìn)入相應(yīng)的處理子程序或設(shè)置相應(yīng)的標(biāo)志位。請求處理程序:USB標(biāo)準(zhǔn)請求處理程序來負(fù)責(zé)處理枚舉階段主機(jī)發(fā)給設(shè)備的標(biāo)準(zhǔn)請求,以與正常工作時(shí)主機(jī)發(fā)送的廠商的請求。固件接收第1個(gè)SETUP中斷開始,就進(jìn)入U(xiǎn)SB枚舉的過程,枚舉過程是由主機(jī)發(fā)出一系列的請求并要求與時(shí)得到設(shè)備的響應(yīng),

29、如果不需要操作,也必須指示出一個(gè)空響應(yīng),使主機(jī)能為其準(zhǔn)備所請求的資源,建立好主機(jī)和設(shè)備之間的信息溝通機(jī)制11。數(shù)據(jù)接收/發(fā)送程序:當(dāng)用戶通過主機(jī)端應(yīng)用程序向設(shè)備發(fā)送或索要數(shù)據(jù)時(shí),數(shù)字信號處理器調(diào)用數(shù)據(jù)接受/發(fā)送的子程序完成數(shù)據(jù)的接受/發(fā)送。數(shù)據(jù)的接收和發(fā)送過程如下:圖3-2 發(fā)送數(shù)據(jù)過程圖3-3 接收數(shù)據(jù)過程硬件接口訪問程序:硬件接口程序負(fù)責(zé)完成數(shù)字信號處理器對芯片的讀寫操作,它是整個(gè)固件程序中的最底層,同時(shí)也是使用最頻繁的部分。3.2 驅(qū)動程序的設(shè)計(jì)Windows環(huán)境下驅(qū)動程序有3種模型:KMD模型、VXD模型、WDM模型。WDM模型是全新的驅(qū)動程序模型,現(xiàn)在主流操作系統(tǒng)基本上都是采用基于W

30、DM模型的驅(qū)動程序9。WDM模型的為分層體系結(jié)構(gòu),具體如圖3-4所示:圖3-4 WDM結(jié)構(gòu)圖這里首先介紹兩個(gè)概念I(lǐng)RP與URB。IRP 即I/O請求包。它是驅(qū)動程序的核心。I/O管理器接收到一個(gè)I/O請求,然后把它傳遞到設(shè)備驅(qū)動程序之前,分配并初始化一個(gè)IRP。URB 即USB請求塊。USB設(shè)備驅(qū)動程序在向設(shè)備發(fā)送一個(gè)請求之前,必須首先創(chuàng)建一個(gè)URB,然后把URB送到總線驅(qū)動程序,這樣設(shè)備驅(qū)動程序才會得以運(yùn)行。對于USB設(shè)備,其WDM驅(qū)動程序分為USB功能驅(qū)動程序和USB底層驅(qū)動程序。USB底層驅(qū)動程序由操作系統(tǒng)提供,負(fù)責(zé)與硬件打交道,實(shí)現(xiàn)底層通信。USB功能驅(qū)動程序由設(shè)備開發(fā)者編寫,不對硬件

31、進(jìn)行操作,而是通過向USB底層驅(qū)動程序發(fā)送包含請求塊URB的IRP,以實(shí)現(xiàn)對USB設(shè)備信息的發(fā)送和接收12。3.3 用戶應(yīng)用程序設(shè)計(jì)3.3.1 操作流程 一般用戶應(yīng)用程序必須的功能是采樣數(shù)據(jù)讀取、采樣控制以與數(shù)據(jù)顯示,其他功能(例如數(shù)據(jù)分析、數(shù)據(jù)存儲)可以根據(jù)應(yīng)用系統(tǒng)的需要進(jìn)行定制。根據(jù)功能劃分,應(yīng)用程序可以細(xì)化為以下幾個(gè)模塊:主框架、設(shè)備訪問模塊、采樣設(shè)置模塊和數(shù)據(jù)顯示模塊,模塊之間的關(guān)系如圖3-5所示:數(shù)據(jù)顯示模塊采集設(shè)置模塊主框架設(shè)備訪問模塊圖3-5 應(yīng)用程序模塊結(jié)構(gòu)圖數(shù)據(jù)顯示模塊、設(shè)備訪問模塊和采樣設(shè)置模塊都只與主框架進(jìn)行通信。數(shù)據(jù)顯示模塊負(fù)責(zé)數(shù)據(jù)的波形顯示,采樣設(shè)置模塊負(fù)責(zé)采樣參數(shù)的

32、配置,設(shè)備訪問模塊負(fù)責(zé)與下層設(shè)備的通信,整個(gè)系統(tǒng)以主框架為中心。采樣設(shè)置模塊,主要用于配置采樣參數(shù),包括通道、各通道的量程和總的采樣率。在Win32系統(tǒng)中,可以把每個(gè)設(shè)備都抽象為文件,此時(shí)的應(yīng)用程序只需要幾條簡單的文件操作API函數(shù),就可以實(shí)現(xiàn)與驅(qū)動程序中的某個(gè)設(shè)備通信。API函數(shù)與對應(yīng)關(guān)系如表3-1所示:表3-1 API函數(shù)與驅(qū)動程序例程對應(yīng)關(guān)系A(chǔ)PI函數(shù)IRP說明Create FileIRP_MJ_CRETE打開設(shè)備Read FileIRP_MJ_READ從設(shè)備獲取數(shù)據(jù)Write FileIRP_MJ_WRITE向設(shè)備發(fā)送數(shù)據(jù)Close HandleIRP_MJ_CLOSE關(guān)閉設(shè)備Devi

33、ce I/O ControlIRP_MJ_DEVICE_CONTROL控制設(shè)備具體執(zhí)行流程圖如圖3-6所示:圖3-6 執(zhí)行流程圖3.3.2 設(shè)備讀寫接口程序的實(shí)現(xiàn) 對于我們的硬件板,當(dāng)把前面開發(fā)的設(shè)備驅(qū)動程序安裝到系統(tǒng)后并以它作為設(shè)備與上層應(yīng)用程序的軟件接口時(shí),也可以使用這些方式來實(shí)現(xiàn)應(yīng)用程序與它的通信。但是為了修改和設(shè)計(jì)應(yīng)用程序更加方便,因此本文便把讀寫設(shè)備封裝在相應(yīng)的讀寫函數(shù)中。對于應(yīng)用程序來講,讀寫USB端口和讀寫串口類似。數(shù)據(jù)傳輸流程圖如圖3-7所示:圖3-7數(shù)據(jù)傳送程序流程圖下傳數(shù)據(jù)程序:function mDownloadData(iBuffer:array of byte; iL

34、ength:cardinal ):cardinal;var mDemoReq:COMMAND_PACKET; MLength:cardinal;begin if ( iLength 4096 ) then begin Messagebox( FrmMain.Handle, 單次下傳數(shù)據(jù)長度超過4096字節(jié), mCaptionInform, MB_OK+MB_ICONERROR ); mDownloadData:=0; exit; end; mDemoReq.mCommandCode:= DEF_CMD_DOWN_DATA;/ 連續(xù)下傳數(shù)據(jù)塊 mDemoReq.mCommandCodeNot :

35、= $FF- DEF_CMD_DOWN_DATA; mDemoReq.mParameter0 := ACCESS_MCS51_XRAM; / 讀寫51單片機(jī)的外部RAM(本演示板的單片機(jī)沒有外部RAM,所以無法演示) mDemoReq.mParameter1 := 00;/ 指定外部RAM緩沖區(qū)起始地址,該例是將數(shù)據(jù)下傳到起始地址為0X8200的外部RAM mDemoReq.mParameter2 :=$82; mDemoReq.mParameter3 := iLength mod 256; / 傳輸數(shù)據(jù)總長度低二位 mDemoReq.mParameter4 := iLength div 25

36、6; mLength := CONST_CMD_LEN;/ 命令包的長度 if ( CH372WriteData( mIndex, mDemoReq, mLength ) ) then / 通過CH372發(fā)送命令包,成功 begin mLength := iLength;/ 數(shù)據(jù)塊的長度,一次下傳不超過4096字節(jié) if ( ( mLength mod 64 ) = CONST_CMD_LEN ) then mLength:=mLength+1; / 防止數(shù)據(jù)包的長度與命令包的長度一樣,如果一樣,則多發(fā)送一個(gè)無效數(shù)據(jù) if ( CH372WriteData( mIndex, mDemoReq,

37、 mLength ) ) then / 通過CH372發(fā)送數(shù)據(jù),成功 mDownloadData:=mLength else MessageBox( frmmain.Handle, CH375WriteData 下傳數(shù)據(jù)失敗, mCaptionInform, MB_OK + MB_ICONERROR ); end else MessageBox( frmmain.Handle, CH372WriteData 發(fā)送命令失敗,DEF_CMD_DOWN_DATA, mCaptionInform, MB_OK + MB_ICONERROR ); mDownloadData:=0;end;上傳處理程序:

38、Function mUploadData( iBuffer:array of byte;iLength:cardinal ):cardinal;varmDemoReq:COMMAND_PACKET ;mLength:cardinal;begin if ( iLength 4096 ) then MessageBox( frmmain.Handle, 單次上傳數(shù)據(jù)長度超過4096字節(jié),mCaptionInform, MB_OK + MB_ICONERROR );mDemoReq.mCommandCode := DEF_CMD_CLEAR_UP;/ 連續(xù)上傳數(shù)據(jù)塊之前進(jìn)行同步,實(shí)際是讓單片機(jī)清除上

39、傳緩沖區(qū)的已有容mDemoReq.mCommandCodeNot :=$FF-DEF_CMD_CLEAR_UP;mLength := CONST_CMD_LEN;/ 命令包的長度if ( CH372WriteData( mIndex, mDemoReq, mLength ) ) then / 通過CH372發(fā)送命令包,成功 begin mDemoReq.mCommandCode := DEF_CMD_UP_DATA;/ 連續(xù)上傳數(shù)據(jù)塊 mDemoReq.mCommandCodeNot := $FF- DEF_CMD_UP_DATA; mDemoReq.mParameter0 := ACCESS

40、_MCS51_XRAM; / 讀寫51單片機(jī)的外部RAM(本演示板的單片機(jī)沒有外部RAM,所以無法演示) mDemoReq.mParameter1 := 00;/ 指定外部RAM緩沖區(qū)起始地址,該例是將數(shù)據(jù)下傳到起始地址為0X8200的外部RAM mDemoReq.mParameter2 :=$82; mDemoReq.mParameter3 := iLength mod 256; / 傳輸數(shù)據(jù)總長度低二位 mDemoReq.mParameter4 := iLength div 256; mLength := CONST_CMD_LEN;/ 命令包的長度if ( CH372WriteData(

41、 mIndex, mDemoReq, mLength ) ) then / 通過CH372發(fā)送命令包,成功 beginmLength := iLength;/ 數(shù)據(jù)塊的長度,一次上傳不超過4096字節(jié)if ( CH372ReadData( mIndex, iBuffer, mLength ) ) then/ 通過CH372接收數(shù)據(jù),成功 mUploadData := mLengthelse MessageBox( frmmain.Handle, CH372ReadData 上傳數(shù)據(jù)失敗,mCaptionInform, MB_OK + MB_ICONERROR ); end else Messa

42、geBox( frmmain.Handle, CH372WriteData 發(fā)送命令失敗DEF_CMD_UP_DATA, mCaptionInform, MB_OK + MB_ICONERROR ); endelse MessageBox( frmmain.Handle, CH372WriteData 發(fā)送命令失敗DEF_CMD_CLEAR_UP, mCaptionInform, MB_OK + MB_ICONERROR ); mUploadData:= 0;Endend4 系統(tǒng)測試4.1 數(shù)據(jù)采集過程4.1.1 模擬信號 模擬多路信號經(jīng)多路開關(guān)選擇后進(jìn)入TLC549進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)

43、字信號送入單片機(jī)進(jìn)行處理,處理后的信號可以通過USB接口芯片送入計(jì)算機(jī)進(jìn)行處理,也可以經(jīng)過TLC5620轉(zhuǎn)換為模擬信號,再通過多路開關(guān)選擇后輸出。計(jì)算機(jī)也可通過USB接口芯片對單片機(jī)進(jìn)行控制。數(shù)據(jù)采集過程如圖4-1所示:CH372PC機(jī)USB控制器模擬信號CD4051模擬TLC5620TLC549AT89C52CD4051信號圖4-1 模擬信號采集過程4開關(guān)信號 開關(guān)74LS27374LS244AT89C52信號CH372PC機(jī)USB控制器.1.2 開關(guān)信號 開關(guān)量經(jīng)過74LS244讀入單片機(jī)進(jìn)行處理,處理后的結(jié)果經(jīng)74LS273鎖存輸出,整個(gè)過程由計(jì)算機(jī)通過CH372芯片進(jìn)行控制。采集過程如

44、圖4-2所示:圖4-2 開關(guān)量采集過程4脈沖信號AT89C52脈沖8253信號CH372PC機(jī)USB控制器.1.3 脈沖信號 脈沖信號經(jīng)計(jì)數(shù)后讀入單片機(jī)進(jìn)行處理,主要處理數(shù)據(jù)的累計(jì)值、脈沖頻率、周期等,然后將處理后的信號送出。整個(gè)過程由計(jì)算機(jī)通過CH372芯片進(jìn)行控制。如圖4-3所示:圖4-3 脈沖信號采集過程4.2 測試結(jié)果4.2.1 輸入模擬量測試 輸入模擬量測試結(jié)果如表4-1所示:表4-1 輸入模擬量測試結(jié)果模擬電壓(V)123456實(shí)測值(V)1.0032.0042.9964.0084.9946.012誤差0.30%0.20%0.10%0.20%0.10%0.20%由上表可以算出,輸入模擬量測試最大誤差為0.3%,為誤差允許圍。4.2.2 輸出模擬量測試 輸出模擬量測試結(jié)果如表4-2所示:表4-2 輸出模擬量測試結(jié)果模擬電壓(V)123456實(shí)測值(V)1.0012.0042.9944.0115.016.012誤差0.30%0.20%0.20%0.27%0.20%0.20%由上表可以算出,輸出模擬量測試最大誤差為0.30%,為誤差允許圍。4.2.3 脈沖量測試 脈沖量測試結(jié)果如表4-3所示:表4-3 脈沖量測試結(jié)果輸入頻率(Hz)1K2K3K4K5K6K實(shí)測值(Hz)100220043

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論