馮劍亮
摘 要? ?隨著電子信息技術(shù)的不斷發(fā)展,我國(guó)已經(jīng)逐漸的步入到了大數(shù)據(jù)時(shí)代。在這一時(shí)代背景下,諸多研究學(xué)者已經(jīng)積極努力的投身于模擬信號(hào)采集器的研究當(dāng)中。本文分析了通過(guò)設(shè)計(jì)一個(gè)基于C8051F320芯片的多功能模擬信號(hào)采集器,實(shí)現(xiàn)對(duì)模擬信號(hào)的采集,并對(duì)信號(hào)進(jìn)行A/D轉(zhuǎn)換傳輸,實(shí)現(xiàn)USB總線傳輸利用PC機(jī)對(duì)信號(hào)進(jìn)行分析、存儲(chǔ)、處理。
關(guān)鍵詞? ? C8051F320芯片? ? USB總線? ? 程序編寫
一、引言
現(xiàn)今工業(yè)生產(chǎn)過(guò)程中都是連續(xù)或成批的工作,需要嚴(yán)格的過(guò)程控制和安全措施,需要對(duì)一些模擬量(如電流、壓強(qiáng)、液體流量等)進(jìn)行數(shù)據(jù)采集完成各類數(shù)據(jù)采集任務(wù),并對(duì)數(shù)據(jù)進(jìn)行處理,從而實(shí)現(xiàn)提供生產(chǎn)過(guò)程數(shù)據(jù)和動(dòng)態(tài)監(jiān)控等功能。在當(dāng)今衛(wèi)星通訊,無(wú)線通信,導(dǎo)航系統(tǒng)等設(shè)備中模擬信號(hào)采集器應(yīng)用廣泛,是通信技術(shù)的基礎(chǔ)部件,在智能儀器、信號(hào)處理以及工業(yè)自動(dòng)控制等領(lǐng)域中也起著重要的基礎(chǔ)作用。需要對(duì)生產(chǎn)環(huán)節(jié)的數(shù)據(jù)進(jìn)行實(shí)時(shí)采集的數(shù)據(jù)采集系統(tǒng),在整個(gè)生產(chǎn)過(guò)程中,發(fā)揮著非常重要的作用。目前,USB設(shè)備在國(guó)外的應(yīng)用比較廣泛,在國(guó)內(nèi)的應(yīng)用處于起步階段。USB數(shù)據(jù)采集在USB工業(yè)控制等領(lǐng)域已經(jīng)取得一定成果,尤其是在工業(yè)生產(chǎn)、醫(yī)用領(lǐng)域。各種基于USB的信號(hào)采集器必將以其高性價(jià)比,體積小,便于攜帶和使用等特點(diǎn)廣泛應(yīng)用于各行各業(yè)。
二、USB總線的概念及優(yōu)點(diǎn)
1、USB總線的概念
USB指的是讓計(jì)算機(jī)設(shè)備進(jìn)行連接的簡(jiǎn)單化接口,其規(guī)格主要是Intel以及NEC等共同制定的。USB總線,即“通用串行總線”,是英文Universal Serial Bus的縮寫它是應(yīng)用在計(jì)算機(jī)領(lǐng)域中的接口技術(shù),主要使用把USB設(shè)備與主機(jī)總線結(jié)構(gòu)進(jìn)行有效的連接,是對(duì)低速與中速的外設(shè)[1]。USB系統(tǒng)可分為USB主機(jī)、USB互連、USB設(shè)備這三個(gè)邏輯層。
2、USB總線的優(yōu)點(diǎn)
(1)USB可以為全部的外設(shè)進(jìn)行單一連接類型的提供,有效的達(dá)到數(shù)據(jù)的通用性接口,其使用起來(lái)十分便利。
(2)USB系統(tǒng)擁有一個(gè)中斷與端口,這在很大程度上使系統(tǒng)資源被節(jié)約。
(3)USB支持熱插拔(hot plug)和PNP(Plug-and-Play)。也就是說(shuō),在PC不被關(guān)閉的現(xiàn)象下,能夠讓USB設(shè)備被安全斷開與插上,計(jì)算機(jī)相關(guān)系統(tǒng)能夠?qū)ν庠O(shè)插拔情況進(jìn)行檢測(cè),并且是驅(qū)動(dòng)程序得以加載。
(4)可連接鼠標(biāo)、鍵盤、打印機(jī)、掃描儀、攝像頭等幾乎所有的外部設(shè)備。要相對(duì)不同設(shè)備要求進(jìn)行適應(yīng),USB所提供的數(shù)據(jù)傳輸主要有四種類型,分別是控制、Bulk數(shù)據(jù)、中斷數(shù)據(jù)以及同步數(shù)據(jù)等傳輸類型。同步數(shù)據(jù)的傳輸能夠?yàn)橐曨l與音頻進(jìn)行帶寬的提供。
三、USB接口
全低速USB功能控制器主要是C8051F320集成器件,進(jìn)行這項(xiàng)工作的主要目的就是將挖外部的USB接口的功能實(shí)現(xiàn)。通常將2.0版串行通用串行總線作為USB功能收發(fā)控制器的主要工作規(guī)范[2]。其工作原理如圖1所示。
圖1? USB原理框圖
對(duì)USB0控制寄存器的訪問(wèn)時(shí)通過(guò)兩個(gè)特殊功能寄存器來(lái)完成這項(xiàng)工作的。在將INDEX寄存器進(jìn)行寫入目標(biāo)端號(hào)之后,就能夠進(jìn)行相應(yīng)狀態(tài)/控制的寄存器訪問(wèn)。
四、軟件應(yīng)用
負(fù)責(zé)操控系統(tǒng)初始化操作的是主程序,其主要進(jìn)行的工作是轉(zhuǎn)換啟動(dòng)A/D以及對(duì)系統(tǒng)的應(yīng)用程序運(yùn)行的情況進(jìn)行測(cè)試。
1、ADC數(shù)據(jù)采集
負(fù)責(zé)將傳感器里面的模擬信號(hào)轉(zhuǎn)變成數(shù)字信號(hào)的程序是ADC數(shù)據(jù)采集程序。而在這個(gè)系統(tǒng)里面,Timer2出現(xiàn)自動(dòng)溢出的情況是觸發(fā)ADC的轉(zhuǎn)換的前提條件。而要想進(jìn)行A/D轉(zhuǎn)換器采樣周期的界定工作需要進(jìn)行C8051F320芯片上的定時(shí)器設(shè)置,并且利用這些被測(cè)數(shù)據(jù)完成測(cè)樣工作。
2、A/D轉(zhuǎn)換中斷處理
由于C8051F320內(nèi)部已經(jīng)集成了ADC、FIFO和USB接口,所以數(shù)據(jù)采集最為復(fù)雜的A/D轉(zhuǎn)換和傳輸問(wèn)題都可以用一個(gè)芯片解決,在芯片外只需加一些控制電路,如濾波、復(fù)位電路等,即可完成對(duì)模擬數(shù)據(jù)的采集、轉(zhuǎn)換和傳輸工作。
系統(tǒng)運(yùn)行過(guò)程中,USB通信程序以及A/D轉(zhuǎn)換這兩項(xiàng)工作時(shí)交替進(jìn)行的,而對(duì)其運(yùn)行起到?jīng)Q定性作用的因素是MCU,當(dāng)端點(diǎn)1的緩沖區(qū)里面有等待讀取的數(shù)據(jù)出現(xiàn)的時(shí)候,MCU正式進(jìn)行數(shù)據(jù)讀取工作;假如這個(gè)命令是要求啟動(dòng)的,這個(gè)時(shí)候就要進(jìn)行控制芯片USB的關(guān)閉工作,這個(gè)時(shí)候會(huì)USB會(huì)展開通信,并且A/D會(huì)呈現(xiàn)中斷狀態(tài)。而當(dāng)模擬開關(guān)1這個(gè)多通道就會(huì)呈現(xiàn)接通的狀態(tài),這個(gè)時(shí)候A/D轉(zhuǎn)換啟動(dòng);而A/D轉(zhuǎn)換工作正式進(jìn)行的時(shí)候,這個(gè)時(shí)候會(huì)出現(xiàn)中斷的情況,會(huì)先對(duì)低4位以及高8位的轉(zhuǎn)換結(jié)果進(jìn)行讀取,在完成這項(xiàng)工作之后進(jìn)行下一項(xiàng)任務(wù),這個(gè)時(shí)候重新將A/D轉(zhuǎn)換啟動(dòng);按順序循環(huán)進(jìn)行工作,直至將8通道里面所有的數(shù)據(jù)都完成轉(zhuǎn)換為止。之后進(jìn)行禁止中斷A/D操作,使用USB中斷的操作方式進(jìn)行工作,并且向主機(jī)利用USB控制器芯片進(jìn)行轉(zhuǎn)換結(jié)果的傳輸,并等候之后數(shù)據(jù)的來(lái)臨[3]。
五、USB通信程序
開發(fā)USB設(shè)備工作過(guò)程里面一項(xiàng)十分重要的任務(wù)就是進(jìn)行固件編程工作。而對(duì)外設(shè)以及單片機(jī)進(jìn)行初始就是固件的主要工作目標(biāo),并進(jìn)行USB請(qǐng)求的發(fā)送,并完成相應(yīng)的數(shù)據(jù)交換工作。而進(jìn)行初始化編程工作主要的任務(wù)目標(biāo)就是完成控制器使能、系統(tǒng)時(shí)鐘設(shè)置、I/O口和初始化以及初始化USB控制器的工作,在完成初始化工作之后,可以在主機(jī)里面插入U(xiǎn)SB設(shè)備,主機(jī)會(huì)根據(jù)USB協(xié)議進(jìn)行初始化以及識(shí)別設(shè)備。
進(jìn)行USB設(shè)計(jì)總線開發(fā)的關(guān)鍵就是進(jìn)行客戶端驅(qū)動(dòng)程序設(shè)計(jì)。這種采用的驅(qū)動(dòng)模型是分層的WDM,利用這種方式可以不用直接和硬件進(jìn)行操作,僅僅需要利用相應(yīng)的驅(qū)動(dòng)程序進(jìn)行硬件的訪問(wèn)就可以了。而一旦要對(duì)設(shè)備進(jìn)行I/O操作的時(shí)候,就需要利用Windows API函數(shù)進(jìn)行工作。而USB功能驅(qū)動(dòng)程序進(jìn)行工作的方式主要就是利用USB總線驅(qū)動(dòng)程序進(jìn)行USB總線接口的訪問(wèn)工作,通過(guò)USB總線驅(qū)動(dòng)程序可以進(jìn)行所有的低層I/O的處理工作,因此,這一程序工作驅(qū)動(dòng)只需要注意怎樣進(jìn)行數(shù)據(jù)處理、傳輸管道、傳輸時(shí)序以及傳輸類型情況。
結(jié)語(yǔ)
總之,隨著科學(xué)技術(shù)的迅速發(fā)展進(jìn)步,相應(yīng)的USB進(jìn)行數(shù)據(jù)傳輸?shù)乃俣纫苍诓粩嗟靥嵘?,?huì)有更多相應(yīng)USB設(shè)備的出現(xiàn)。但是如今數(shù)據(jù)采集系統(tǒng)的可拓展性比較差,安裝比較繁瑣,價(jià)格較貴,所以本文進(jìn)行了一個(gè)以USB總線接口為基礎(chǔ)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)。該系統(tǒng)安裝方便,電路也很簡(jiǎn)單,可以隨時(shí)應(yīng)用,能夠有效的完成采集各種數(shù)據(jù)的任務(wù)。
參考文獻(xiàn)
[1]馮博琴.微型計(jì)算機(jī)原理與接口技術(shù).清華大學(xué)出版社,2002:30-69.
[2]舒劍,曾桂英.基于C8051F020的USB多路模擬信號(hào)采集器設(shè)計(jì).吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,2(1):7-9.
[3]Silicon laboratories.USBXpress Development Kit Programmers Guide.AN169.