技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于CH372的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

基于CH372的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

時間:2008-11-05 10:57:00來源:ronggang

導(dǎo)語:?本文提出了一種基于USB總線傳輸協(xié)議的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法。該系統(tǒng)應(yīng)用CH372USB控制器與SPCE061A單片機(jī)完成設(shè)備與主機(jī)的通信
摘 要:本文提出了一種基于USB總線傳輸協(xié)議的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法。該系統(tǒng)應(yīng)用CH372USB控制器與SPCE061A單片機(jī)完成設(shè)備與主機(jī)的通信。文中介紹了數(shù)據(jù)采集系統(tǒng)的總體設(shè)計(jì)思想及層次結(jié)構(gòu),并介紹了固件程序,設(shè)備功能驅(qū)動程序和應(yīng)用程序的設(shè)計(jì)方法。該系統(tǒng)應(yīng)用CH372內(nèi)置固件模式屏蔽了相關(guān)USB協(xié)議,并使用SPCE061A自帶的模數(shù)轉(zhuǎn)換器對數(shù)據(jù)進(jìn)行轉(zhuǎn)換控制,使得硬件電路十分簡單, 可以廣泛的應(yīng)用與對各種數(shù)據(jù)的采集。 關(guān)鍵詞:USB總線 ; 數(shù)據(jù)采集 ; CH372 0 .引言:   在現(xiàn)代科學(xué)研究中,經(jīng)常要對數(shù)據(jù)進(jìn)行采集分析。目前比較通用的是在PC內(nèi)安裝數(shù)據(jù)采集卡(如A/D卡及422、485卡),但是這些數(shù)據(jù)采集設(shè)備由于安裝麻煩、價格昂貴、受計(jì)算機(jī)插槽數(shù)量、地址、中斷資源的限制,可擴(kuò)展性差,以及無法做電磁屏蔽而導(dǎo)致采集的數(shù)據(jù)失真。隨著客戶對系統(tǒng)數(shù)據(jù)采集速度要求的不斷提高,USB以其使用方便、易于擴(kuò)展、速度快等優(yōu)點(diǎn)而越來越多的應(yīng)用于數(shù)據(jù)采集系統(tǒng)中。   USB (Universal Serial Bus,通用串行總線)作為一種新的外設(shè)連接技術(shù),可以簡化計(jì)算機(jī)與外設(shè)的連接過程,提高低速和高速的兼容,為用戶提供一種可共享的,可擴(kuò)充的使用方便的串行總線。 1. USB數(shù)據(jù)采集系統(tǒng)的組成及工作原理   一個實(shí)用的USB數(shù)據(jù)采集系統(tǒng)包括A/D轉(zhuǎn)換器,DIO ,微控制器,USB控制芯片以及PC機(jī)端的應(yīng)用程序。外部的被測信號經(jīng)過傳感器變換為模擬電壓信號,經(jīng)屏蔽電纜傳入A/D轉(zhuǎn)換模塊將其轉(zhuǎn)換為數(shù)字信號。在主機(jī)端,當(dāng)外圍USB設(shè)備接入系統(tǒng),經(jīng)過總線枚舉被檢測、配置可用后,主機(jī)端的應(yīng)用程序就可以控制數(shù)據(jù)采集系統(tǒng)對數(shù)據(jù)進(jìn)行采集。微控制器根據(jù)所需的采樣速率進(jìn)行數(shù)據(jù)采集,并將采集來的數(shù)據(jù)存儲在數(shù)據(jù)存儲器中,再通過USB接口控制芯片,將根據(jù)USB總線傳輸協(xié)議打包的數(shù)據(jù)放到USB總線傳給主機(jī),由主機(jī)端的應(yīng)用程序?qū)?shù)據(jù)進(jìn)行顯示、分析處理。 2.系統(tǒng)硬件設(shè)計(jì)   USB總線接口控制器是USB設(shè)備與主機(jī)通信的重要器件。目前,市場上的USB控制器有很多種,大致可分為兩種,一種是帶USB接口的單片機(jī),如cypress的cy系列;另一種是僅處理USB通信的,必須有一個外部微控制器來進(jìn)行協(xié)議處理的純粹USB控制器。根據(jù)USB控制器的分類,要實(shí)現(xiàn)USB設(shè)備與主機(jī)的通信就有兩種方法(1)帶微處理器的USB控制器(2)獨(dú)立的USB控制器加微處理器。   本系統(tǒng)根據(jù)數(shù)據(jù)采集卡的功能,采用帶7通道10位精度A/D轉(zhuǎn)換器的SPCE061A單片機(jī)和CH372的USB控制芯片組成外部數(shù)據(jù)采集設(shè)備實(shí)現(xiàn)與主機(jī)的通信。   2.1 CH372控制器的主要特點(diǎn):   (1) 支持全速設(shè)備接口,兼容USB2.0規(guī)范,即插即用,外圍元器件只需要晶體和電容。  ?。?) 提供一對主端點(diǎn)和一對輔助端點(diǎn),支持控制傳輸、批量傳輸、中斷傳輸。   (3) 具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便的掛接到單片機(jī)/DSP/MPU等控制器的系統(tǒng)總線上。  ?。?) 內(nèi)置了USB通訊中的底層協(xié)議,具有省事的內(nèi)置固件模式和靈活的外置固件模式。在內(nèi)置固件模式下,CH372自動處理默認(rèn)端點(diǎn)0的所有事務(wù),自動完成標(biāo)準(zhǔn)的USB枚舉配置過程,本地端單片機(jī)只要負(fù)責(zé)數(shù)據(jù)交換,所以單片機(jī)程序非常簡潔[1]。   2.2 SPCE061A的主要性能特點(diǎn)   SPCE061A擁有16位的微處理器核心,CPU工作時鐘頻率0.32—49.152MHz,2個10位數(shù)字模擬轉(zhuǎn)換輸出通道,7個10位模擬數(shù)字轉(zhuǎn)換器輸入通道,具有較高的處理速度,能夠更容易,更快速的處理復(fù)雜的數(shù)字信號.[2]   根據(jù)功能模塊的集成和CH372內(nèi)置固件模式的特點(diǎn),本系統(tǒng)的硬件電路十分簡單。 [align=center] 圖1 系統(tǒng)硬件連接示意圖[/align]   模擬信號經(jīng)外部的放大由IOA[6:0]輸入,CH372芯片的讀選通輸出RD#和寫選通輸出WR#連接到單片機(jī)。CS#由地址譯碼電路驅(qū)動,可用于當(dāng)單片機(jī)具有多個外圍器件時進(jìn)行設(shè)備選擇,在本系統(tǒng)中要求CS#常為低電平,所以直接接地。INT#輸出的中斷請求是低電平有效,單片機(jī)可以使用中斷方式或者查詢方式獲知中斷請求。   當(dāng)WR#為高電平并且CS#和RD#及A0 都為低電平時,CH372 中的數(shù)據(jù)通過D7~D0輸出;當(dāng)RD#為高電平并且CS#和WR#及A0 都為低電平時,D7~D0上的數(shù)據(jù)被寫入CH372 芯片中;當(dāng)RD#為高電平并且CS#和WR#都為低電平而A1 為高電平時,D7~D0 上的數(shù)據(jù)被作為命令碼寫入CH372芯片中[1]。 3.軟件設(shè)計(jì)   USB數(shù)據(jù)采集系統(tǒng)的軟件部分包括三個方面:單片機(jī)中的固件程序,設(shè)備驅(qū)動程序,和主機(jī)上的應(yīng)用程序。   3.1 固件程序是與USB控制器相連的單片機(jī)執(zhí)行的代碼,主要負(fù)責(zé)兩項(xiàng)任務(wù)。  ?。?) 響應(yīng)主機(jī)對設(shè)備的枚舉實(shí)現(xiàn)對設(shè)備的配置,也就是使主機(jī)檢測并識別設(shè)備,為主機(jī)和設(shè)備之間的數(shù)據(jù)傳輸做準(zhǔn)備。  ?。?) 根據(jù)PC機(jī)上的應(yīng)用程序的要求,傳輸數(shù)據(jù)。   由于本系統(tǒng)使用的CH372USB控制器內(nèi)置固件模式屏蔽了相關(guān)的USB協(xié)議,自動完成主機(jī)的USB枚舉配置過程,完全不需要本地端控制器做任何處理,所以固件程序只需要實(shí)現(xiàn)涉及對采集數(shù)據(jù)的傳輸、采集參數(shù)設(shè)置的要求即可。   SPCE061A共有7個A/D轉(zhuǎn)換通道,但只有一個ADC,在使用前必須查看P_ADC_MUX_Ctrl單元/P_ADC_Ctrl單元的RDY的值,以確定ADC為空閑狀態(tài),通過設(shè)置P_ADC_MUX_Ctrl的第2-3位來實(shí)現(xiàn)通道切換,而且SPCE061A的A/D轉(zhuǎn)換只能通過讀取P_ADC_LINEIN_Data單元的數(shù)據(jù)來觸發(fā)[2]。數(shù)據(jù)采集依靠讀P_ADC_LINEIN_Data單元的數(shù)據(jù)進(jìn)行連續(xù)的數(shù)據(jù)采集。由于USB的傳輸速度遠(yuǎn)遠(yuǎn)大于數(shù)據(jù)采集的速度,所以在SPCE061A內(nèi)部RAM中定義雙數(shù)據(jù)緩沖區(qū),利用緩沖區(qū)buf[0]做為緩沖區(qū)滿標(biāo)志位和讀指針p來確定讀數(shù)據(jù)順序,實(shí)現(xiàn)輪流從兩個緩沖區(qū)讀取數(shù)據(jù)。當(dāng) buf_i[0]==1&&p==buf_i時,表示i緩沖區(qū)滿且讀數(shù)據(jù)順序正確,則從此緩沖區(qū)讀數(shù)據(jù)。在數(shù)據(jù)發(fā)送完后,改變緩沖區(qū)滿標(biāo)志并設(shè)置讀指針,繼續(xù)讀下一個緩沖區(qū)。為使前一次的數(shù)據(jù)傳輸與后一次的數(shù)據(jù)傳輸連續(xù),主機(jī)查詢的時間間隔要小于緩沖被寫滿一次所需要的時間。   CH372的端點(diǎn)0 是默認(rèn)端點(diǎn),在內(nèi)置固件模式下,自動處理USB各種標(biāo)準(zhǔn)事務(wù); 端點(diǎn)1 的下傳端點(diǎn)作為輔助端點(diǎn),用來傳輸數(shù)據(jù)采集的控制命令,如數(shù)據(jù)采集的開始、停止、設(shè)置數(shù)據(jù)采集的各項(xiàng)參數(shù)等; 端點(diǎn)2 作為批量數(shù)據(jù)傳輸端點(diǎn),用于對采集數(shù)據(jù)的傳輸。   CH372 在計(jì)算機(jī)應(yīng)用層與本地端單片機(jī)之間提供了端對端的連接,本系統(tǒng)采用請求加應(yīng)答方式進(jìn)行通訊。計(jì)算機(jī)應(yīng)用層按事先約定的命令碼加傳輸數(shù)據(jù)的格式將數(shù)據(jù)請求發(fā)送給CH372芯片,CH372 芯片再以中斷方式通知單片機(jī),進(jìn)入中斷服務(wù)程序。中斷服務(wù)程序通過執(zhí)行GET_STUTAS命令獲取并分析中斷狀態(tài),是發(fā)送數(shù)據(jù)成功,執(zhí)行RD_USB_DATA命令從CH372讀取接收到的數(shù)據(jù);是上傳數(shù)據(jù)成功,執(zhí)行WR_USB_DATA命令向CH372寫入下一組要發(fā)送的數(shù)據(jù);是中斷數(shù)據(jù),分析控制命令類型并轉(zhuǎn)入執(zhí)行相應(yīng)的數(shù)據(jù)采集控制。   3.2 設(shè)備驅(qū)動程序   USB總線設(shè)備的客戶端驅(qū)動程序設(shè)計(jì)是開發(fā)USB總線外設(shè)的關(guān)鍵。USB總線設(shè)備采用分層的WDM驅(qū)動模型,通過它用戶不需要直接和硬件打交道,而只需通過下層驅(qū)動程序提供的接口來訪問硬件。驅(qū)動程序操作的核心是I/O請求包(IRP),各層驅(qū)動程序都要通過IRP來進(jìn)行通信。當(dāng)應(yīng)用程序需要對設(shè)備進(jìn)行I/O操作,就調(diào)用Windows API函數(shù),WIN32子系統(tǒng)通知I/O管理器根據(jù)請求構(gòu)造一個合適的IRP并把該請求傳遞至下一層。分發(fā)例程常常只執(zhí)行對IRP的初始處理,如檢查所有的參數(shù)是否合法的,然后把IRP 分發(fā)到下層驅(qū)動去處理 [4]。USB功能驅(qū)動程序通過USB總線驅(qū)動程序接口訪問USB總線,所有低層I/O都由USB總線驅(qū)動程序處理,所以功能驅(qū)動程序只關(guān)心數(shù)據(jù)傳輸類型、傳輸時序、傳輸管道以及如何處理數(shù)據(jù)等操作。本系統(tǒng)直接應(yīng)用CH372芯片開發(fā)商提供的包含創(chuàng)建、關(guān)閉設(shè)備、設(shè)備控制、設(shè)備PnP等操作的設(shè)備驅(qū)動程序。   3.3應(yīng)用程序   客戶應(yīng)用程序由Visual C++編寫,向用戶提供設(shè)備打開、關(guān)閉,對數(shù)據(jù)采集的參數(shù)調(diào)整,并對采集數(shù)據(jù)進(jìn)行顯示等控制功能。當(dāng)設(shè)備連接好并經(jīng)配置可使用后,應(yīng)用程序需要與設(shè)備進(jìn)行通信,就可以啟動一次傳輸。 [align=center] 圖2 應(yīng)用程序流程圖[/align]   USB設(shè)備對應(yīng)用程序來說只是一個擁有設(shè)備名的文件,所以就可以使用Win32的API中的文件函數(shù)來對設(shè)備進(jìn)行控制。在應(yīng)用程序中利用多線程編程思想實(shí)現(xiàn)系統(tǒng)的實(shí)時性,主線程完成系統(tǒng)參數(shù)設(shè)置,顯示數(shù)據(jù)等,輔助線程單獨(dú)完成對數(shù)據(jù)的采集工作。 4.結(jié)束語   隨著USB傳輸數(shù)據(jù)速度的提高,傳輸實(shí)時性的增強(qiáng),會出現(xiàn)越來越多的USB設(shè)備。本文則根據(jù)數(shù)據(jù)采集系統(tǒng)安裝麻煩,價格昂貴,可擴(kuò)展性差的現(xiàn)狀,設(shè)計(jì)了一個基于USB總線接口的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)不僅硬件電路十分簡單,而且安裝方便,即插即用,有很好的可靠性和穩(wěn)定性,可以廣泛的應(yīng)用與對各種數(shù)據(jù)的采集。 本文作者創(chuàng)新點(diǎn):   本系統(tǒng)對于USB傳輸應(yīng)用CH372USB控制芯片的內(nèi)置固件模式屏蔽了相關(guān)的USB協(xié)議,默認(rèn)端點(diǎn)0自動處理主機(jī)的USB枚舉配置過程,完全不需要本地端控制器做任何處理, 單片機(jī)程序非常簡潔,并且對數(shù)據(jù)采集部分的硬件采用自帶模擬數(shù)字轉(zhuǎn)換功能的單片機(jī),使得整個系統(tǒng)的控制和硬件電路都十分簡單。 參考文獻(xiàn)   [1] 南京沁恒電子有限公司 CH372S使用手冊 [M] 2005   [2] 羅亞非 凌陽16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社 2005   [3] Jan Axelson . USB大全 [M]. 北京: 中國電力出版社 2001   [4] Chris Cant . Windows WDM設(shè)備驅(qū)動程序開發(fā)指南[M]. 北京: 機(jī)械工業(yè)出版社 2003   [5] 曹利鋼 USB總線數(shù)據(jù)采集控制系統(tǒng)的開發(fā)與應(yīng)用 [D].南昌:南昌大學(xué)碩士畢業(yè)論文 2005   [6] 邊海龍.賈少華USB 2.0設(shè)備設(shè)計(jì)與開發(fā) [M]. 北京:人民郵電出版社 2004   [7] 石曉瑛 許智榜 基于AT90S8515和USB接口數(shù)據(jù)采集系統(tǒng) [J].微計(jì)算機(jī)信息 2005   [8] 張弘. USB接口設(shè)計(jì) [M]. 西安 : 西安電子科技大學(xué)出版社 2002

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:論國產(chǎn)DCS及科遠(yuǎn)DCS系統(tǒng)發(fā)展...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號