基于USB接口的高增益數據采集系統的設計
0 引言
在現代工業(yè)生產(chǎn)和科學(xué)技術(shù)研究等各行業(yè)中,通常需要對各種數據進(jìn)行采集。目前常用的通過(guò)數據采集板卡采集的方法存在著(zhù)以下缺點(diǎn):安裝麻煩,易受機箱內環(huán)境的干擾而導致采集數據的失真,容易受計算機插槽數量和地址、中斷資源的限制,可擴展性差。而帶RS-232串口的數據采集器,在需要大批量、高速傳輸的場(chǎng)合下,其應用也受到限制。通用串行總線(xiàn)USB(Universal Serial Bus)的出現,很好地解決了上述問(wèn)題,很容易實(shí)現便捷、高速、低成本、易擴展、高可靠性的數據采集,代表了現代數據采集系統的發(fā)展趨勢。
1 硬件設計與實(shí)現
USB總線(xiàn)傳輸速度快,為了充分發(fā)揮USB總線(xiàn)這一優(yōu)勢,易選用速度較快的微處理器。另外,USB接口設備是采用總線(xiàn)供電的,考慮到總線(xiàn)輸出功率有限,盡量采用集成度高的器件有利于降低USB總線(xiàn)的負荷。
USB接口模塊的選擇有兩種方案:一種是采用帶有USB接口的單片機;另一種是采用普通單片機和USB控制芯片。對于第一種方案,不需要設計單片機和USB控制芯片之間的接口電路,簡(jiǎn)化了電路設計,但是帶有USB接口的單片機種類(lèi)有限,從而限制了單片機的選擇。對于后一種方案,可以選擇所熟悉的單片機,以減小開(kāi)發(fā)難度,并縮短開(kāi)發(fā)周期。系統采用的是SOC單片機C8051F000,USB控制芯片采用PDIUSBD12。
C8051F000單片機[1]是四邊扁平貼片封裝,內部集成了8通道的12位A/D轉換器, 可編程增益放大器PGA,自帶看門(mén)狗,具有32位數字I/O端口,體積小巧,集成度高,功耗較小,滿(mǎn)足USB總線(xiàn)供電的要求。而且,C8051F000單片機最大工作頻率可達到25MIPS,采用流水線(xiàn)結構,是單指令周期單片機,運行速度也較快,適于開(kāi)發(fā)USB設備。
PDIUSBD12 是Philips 公司推出的符合USB1.1版規范的帶并行總線(xiàn)的接口芯片。片內集成了320B的FIFO存儲器,在批量模式和同步模式下均可實(shí)現1MB/s的數據傳輸速率,集成了模擬收發(fā)器,串行接口引擎,串行接口引擎實(shí)現了全部的USB協(xié)議層,包括并行/串行轉換、位填充/解除填充、CRC校驗/產(chǎn)生、地址識別和握手評估/產(chǎn)生等,從而減小了PDIUSBD12驅動(dòng)程序開(kāi)發(fā)的難度[2,3]。
系統硬件包括主MCU、USB接口電路、模擬信號輸入調理電路和電源轉換電路等組成部分,其工作原理圖如圖1所示。
系統有8路模擬輸入,模擬輸入信號經(jīng)過(guò)信號調理電路濾波、放大后送給C8051F000,此單片機自帶的A/D轉換器將輸入的模擬信號轉換為數字信號,并通過(guò)USB接口傳送給計算機。計算機也可以通過(guò)USB接口向C8051F000發(fā)送命令。系統采用USB總線(xiàn)供電,由于USB總線(xiàn)只能提供+5V供電,而單片機C8051F000所需要的典型供電電壓是3.3V,信號調理電路中的多路轉換開(kāi)關(guān)和運算放大器所需要的供電電壓是+9V和-5V,故須設計電源轉換電路將5V電壓轉換為3.3V、-5V和+9V,以便給相應的芯片提供電壓。其中USB接口電路和信號調理電路的設計是最為重要的兩個(gè)部分。
1.1 USB接口電路的設計
USB控制芯片PDIUSBD12與計算機及單片機之間的接口電路如圖2所示。USB總線(xiàn)共4條線(xiàn),兩條電源線(xiàn)VCC和GND、兩條差分數據線(xiàn)D+和D-。為了防止在讀寫(xiě)數據的過(guò)程中電壓波動(dòng),及附近大功率用電設備對電壓的影響,在USB總線(xiàn)的兩條電源線(xiàn)VCC和GND之間加了去耦電容。USB總線(xiàn)是采用差分數據傳輸,因此在任意時(shí)刻,只能有一個(gè)發(fā)送器或接收器。在D+/D-線(xiàn)上串接的兩個(gè)18Ω電阻,及下拉的兩個(gè)1M電阻是用來(lái)進(jìn)行阻抗匹配的。
PDIUSBD12的8根數據線(xiàn)D0~D7與單片機的8根數據線(xiàn)分別連接,實(shí)現PDIUSBD12與單片機之間8位數據的并行傳輸,PDIUSBD12的讀寫(xiě)引腳與單片機的I/O引腳相連,以實(shí)現單片機對PDIUSBD12的讀寫(xiě)操作。PDIUSBD12的引腳A0是命令口和數據口的地址線(xiàn),PDIUSBD12有兩種數據總線(xiàn)方式:多路地址/數據總線(xiàn)和單地址數據總線(xiàn),為了盡量少占用單片機的I/O引腳,系統采用單地址數據總線(xiàn),PDIUSBD12的引腳ALE接地,引腳A0與單片機的I/O引腳相連,A0為1時(shí),總線(xiàn)D0~D7上傳輸的是命令,A0為0時(shí),總線(xiàn)D0~D7上傳輸的是數據。PDIUSBD12的掛起引腳SUSPD和中斷引腳INT分別與單片機的一個(gè)I/O引腳相連,以實(shí)現PDIUSBD12掛起及PDIUSBD12向單片機發(fā)出中斷。系統中PDIUSBD12的DMA功能沒(méi)有使用,引腳DMACK和EOT都通過(guò)一個(gè)上拉電阻連到電源。振蕩電路采用6MHz晶振,經(jīng)過(guò)PDIUSBD12內部倍頻電路之后,PDIUSBD12內部實(shí)際時(shí)鐘為24MHz 。引腳GL通過(guò)一個(gè)綠色指示燈和一個(gè)電阻連到電源,當該儀器枚舉成功以后,該指示燈亮,當計算機與該儀器進(jìn)行通訊時(shí),此指示燈閃爍。
1.2 信號調理電路的設計
信號調理電路主要包括模擬信號多路選擇、濾波和信號放大等組成部分,電路如圖3所示。
系統電路設計中,只使用了單片機C8051F000本身自帶的一路模擬輸入AIN0;在單片機外圍用多路模擬開(kāi)關(guān)CD4051擴展了8路模擬輸入。當單片機給CD4066的引腳CONT1輸入一個(gè)低電平、給引腳CONT2輸入一個(gè)高電平時(shí),CD4066的引腳IN1和OUT1之間斷開(kāi)、引腳IN2和OUT2之間短接,運算放大器ICL7650的負端輸入與它的輸出斷開(kāi),此時(shí)ICL7650對它的輸入信號放大8倍;當單片機給CD4066的引腳CONT1輸入一個(gè)高電平、引腳CONT2輸入一個(gè)低電平時(shí),CD4066的引腳IN1和OUT1之間短接、引腳IN2和OUT2之間斷開(kāi),ICL7650的負端輸入與它的輸出直接短接,此時(shí)ICL7650和它的外圍電路一起組成了一個(gè)電壓跟隨器,只是增大A/D轉換器的輸入阻抗,并不對它的輸入信號進(jìn)行增益放大。
C8051F000片內集成的增益放大器PGA編程范圍為0.5~16,當ICL7650作為一個(gè)電壓跟隨器時(shí),系統可編程增益范圍為0.5~16;當ICL7650對輸入信號進(jìn)行8倍放大時(shí),系統可編程增益范圍為4~128,由此可見(jiàn),系統可編程增益范圍較寬,滿(mǎn)足大多數情況下增益放大需要。
2 軟件設計與實(shí)現
系統軟件包括單片機固件程序,USB驅動(dòng)程序及其鏈接庫,及用戶(hù)應用程序。為了降低開(kāi)發(fā)難度及縮短開(kāi)發(fā)周期,系統采用了周立功公司開(kāi)發(fā)的D12 SMART套件中的USB驅動(dòng)程序及其鏈接庫[3],該鏈接庫為用戶(hù)應用程序提供了API函數,在編寫(xiě)應用程序時(shí),只需調用API函數與采集系統之間交換數據,而不需要關(guān)心具體的USB通訊協(xié)議。
單片機固件設計采用中斷驅動(dòng)方式。CPU在前臺進(jìn)行數據采集, USB傳輸則在后臺進(jìn)行, 而其中斷和主循環(huán)的數據交換則通過(guò)事件標志和數據緩沖區進(jìn)行。這樣既保證了數據采集的實(shí)時(shí)性,又獲得了最佳的傳輸速率。固件結構如圖4 所示。
中斷服務(wù)程序主要負責從PDIUSBD12收集數據, 將建立包和OUT數據存入數據緩沖結構體,并設置相應的標志位;而主循環(huán)負責對數據進(jìn)行處理,根據標志位區分是標準請求還是廠(chǎng)商請求,進(jìn)而調用標準請求處理程序和廠(chǎng)商請求處理程序。其中標準請求處理程序主要負責在設備枚舉過(guò)程中主機為識別設備而發(fā)送的請求, 主要包括讀取USB設備描述符、給USB設備分配地址、配置USB設備等功能。只有在計算機與USB設備建立鏈接之后,計算機才能識別出USB設備,與USB設備進(jìn)行通訊。而廠(chǎng)商請求處理中是自行定義的請求處理函數, 用來(lái)處理計算機發(fā)送給采集系統的各個(gè)設定命令,主要包括設定采集系統的量程、讀取通道采樣數據等命令。標準設備請求是在枚舉過(guò)程中由安裝在PC機中的USB驅動(dòng)程序發(fā)送給USB設備的,而廠(chǎng)商請求是由用戶(hù)應用程序通過(guò)調用USB鏈接庫提供的API函數將命令傳遞到功能驅動(dòng)程序后, 通過(guò)相應例程發(fā)送到USB設備的。
PDIUSBD12 命令接口是一套訪(fǎng)問(wèn)PDIUSBD12 所有功能的處理函數,主要包括對PDIUSBD12設置地址、設置端點(diǎn)使能、設置模式、讀中斷寄存器、選擇端點(diǎn)、讀端點(diǎn)狀態(tài)、讀取緩沖區、清緩沖區等操作。當固件中的其它程序需要對PDIUSBD12 進(jìn)行操作時(shí), 只須調用其中相應的子程序即可。
硬件提取層是固件中的最底層代碼, 直接對PDIUSBD12訪(fǎng)問(wèn),其執行與具體硬件電路有關(guān),使用的單片機不同, 或者實(shí)現的設備功能不同時(shí)這部分代碼也有所不同。
3 結束語(yǔ)
系統采用高速SOC單片機C8051F000和PDIUSBD12實(shí)現了寬量程的數據采集和基于USB接口的數據傳輸,基于該方案的采集系統已經(jīng)在實(shí)驗室調試通過(guò),能夠準確地進(jìn)行數據采樣和傳輸。本文作者創(chuàng )新點(diǎn):利用了C8051F000片內集成的增益放大器PGA,并結合外圍增益放大電路使系統的最大增益放大倍數達到了128倍,從而使系統能完成較寬范圍內的電壓信號采集;系統在PDIUSBD12與單片機之間的接口電路設計中采用了單地址數據總線(xiàn)方案,相對于通常所采用的多路地址/數據總線(xiàn)方式大大減少了單片機I/O引腳的占用。
評論