基于ADuC841的USB接口數(shù)據(jù)采集系統(tǒng)設計
摘要: 本文提出了一種傅立葉光譜儀中USB數(shù)據(jù)采集系統(tǒng)的簡易實現(xiàn)。
關鍵詞: USB;微控制器;多通道;數(shù)據(jù)采集
引言
在微機測控系統(tǒng)中,經(jīng)常會遇到需要輸入各種模擬信號的情況,這時必然要進行A/D轉(zhuǎn)換。有時在某些實際項目中,為了采集某些模擬量而選用一些專用的數(shù)據(jù)采集卡,不僅使得系統(tǒng)更加復雜,不容易實現(xiàn)功能擴展,還增加了系統(tǒng)設計成本。另一方面,USB接口操作簡單越來越得到廣泛的應用,因此設備的USB接口化也是一個發(fā)展趨勢。
XFT-1型開放式傅立葉變換光譜儀采用了經(jīng)典的麥克爾遜干涉儀,干涉后的光強隨著動鏡的移動而發(fā)生變化,光電接收器將接收到的緩慢變化的光強信號轉(zhuǎn)化為了相應的電壓信號。為了去除由于動鏡移動速度不均勻所造成的誤差,模塊中采用了雙通道,同時測量參考光(He-Ne 激光)和被測光源后,利用參考光的信息校正被測光測量位置誤差。在XFT-1型開放式傅立葉變換光譜儀中,采用了本文提出的這種簡易的USB數(shù)據(jù)采集系統(tǒng)??紤]到經(jīng)濟、實用因素,系統(tǒng)中采用了單片機和通用USB接口芯片,將兩者結(jié)合實現(xiàn)USB接口的數(shù)據(jù)采集系統(tǒng)設計。上位PC則采用了C#語言編程,將采集到的數(shù)據(jù)實時顯示、處理分析、數(shù)據(jù)保存和打印。
硬件電路設計
本系統(tǒng)以ADI公司的ADuC841為核心實現(xiàn)數(shù)據(jù)采集和控制。此單片機具有單指令周期20MIPS 8052內(nèi)核和8通道高速420Ksps、12bit模/數(shù)轉(zhuǎn)換器,支持在線下載。控制器和ADC集成縮短了開發(fā)時間,提高了系統(tǒng)的穩(wěn)定性。
本文以南京沁恒的USB接口芯片CH375為核心實現(xiàn)USB數(shù)據(jù)傳輸。如下特點:兼容USB2.0;內(nèi)置固件模式下屏蔽了相關的USB 協(xié)議,自動完成標準的USB 枚舉配置過程,完全不需要本地端控制器作任何處理,簡化了單片機的固件編程;通用Windows 驅(qū)動程序提供設備級接口,通過DLL 提供API 應用層接口。
ADuC841和CH375的接口電路圖如圖1所示。ADuC841和CH375有串行和并行兩種數(shù)據(jù)線連接方法。模塊中為了提高速度采用了并行的方法,將ADuC841的P0口與CH375的并行總線相連。除了讀寫信號連接外,采用A14作為地址位。A14=0,表示數(shù)據(jù)總線上是數(shù)據(jù);A14=1,表示數(shù)據(jù)總線上是命令。USB傳輸過程中,ADuC841與CH375通過外部中斷觸發(fā),采用ADuC841的INT0外部中斷引腳直接和CH372的INT#引腳相連。CH375在正常工作時ACT#引腳輸出為低電平,因此在電源和此引腳間加一個發(fā)光二極管能夠指示USB接口芯片是否正常工作。發(fā)光二極管的亮滅為下位機程序的調(diào)試提供了重要的信息。
系統(tǒng)軟件設計
系統(tǒng)軟件是由下位機程序(固件程序)、USB系統(tǒng)驅(qū)動程序和應用程序三部分構(gòu)成。利用USB協(xié)議傳輸數(shù)據(jù)的模型如圖2所示。本系統(tǒng)的軟件程序主要包括單片機C語言編寫的數(shù)據(jù)采集和數(shù)據(jù)傳輸子程序,以及用C#編寫的上位PC機采集到的數(shù)據(jù)實時顯示、處理分析、數(shù)據(jù)保存和打印子程序。
下位機程序
設備的固件程序是數(shù)據(jù)采集系統(tǒng)的核心,下位機程序主要利用KeilC51編寫。為了降低復雜程度和增加程序的可維護性,下位機程序設計采用先查詢PC機通過USB接口傳過來的命令再執(zhí)行的方式。在上位機和下位機通訊過程中設定協(xié)議,在協(xié)議中設定相應的命令字和校驗字段。主要的命令字有系統(tǒng)檢測是否正常、設定采樣頻率、設定采樣點數(shù)、采樣啟動信號等。下位機主程序為不斷掃描命令字變量,看其是否有效。被監(jiān)視命令字初始設為無效,上位機發(fā)出新的命令字后,下位機進入中斷子程序接收命令字,命令字設為有效。下位機掃描到新命令字的內(nèi)容后,執(zhí)行相應的操作,然后將待監(jiān)視命令字設為無效,繼續(xù)等待新的命令字。這種設計細化了任務的功能,有利于開發(fā)、調(diào)試和維護。
數(shù)據(jù)采集子程序在主程序接收到啟動數(shù)據(jù)采集過程命令字后運行。當單片機接收到上位機通過USB發(fā)送過來的命令字后,啟動數(shù)據(jù)采集過程。它利用片內(nèi)的定時器設定采集時間間隔,利用片內(nèi)的ADC進行數(shù)據(jù)采集。在定時中斷子程序中,單片機將采集兩個通道的數(shù)據(jù),將它們按一定的順序存放到緩沖區(qū)中,然后檢查緩沖區(qū)是否滿,如果緩沖區(qū)不滿,定時中斷子程序結(jié)束,否則將緩沖區(qū)中的數(shù)據(jù)通過CH375發(fā)送給上位機,清空緩沖區(qū),定時中斷子程序結(jié)束。
USB驅(qū)動程序
本系統(tǒng)的一大優(yōu)點就是開發(fā)容易。南京沁恒公司已經(jīng)為用戶提供了通用的USB驅(qū)動程序。只需要安裝現(xiàn)有的USB驅(qū)動安裝程序,它為應用程序的開發(fā)提供了很多接口函數(shù)。由于主要采用批量上傳和批量下載方式,所以主要用到CH375ReadData,CH375WriteData等函數(shù)。這一部分不需編寫程序。
上位機程序
上位機程序可以采有多種軟件開發(fā)工具,本系統(tǒng)在Visual Studio2005開發(fā)環(huán)境下,用C#語言編寫了應用程序。主要完成讀取、顯示、保存、打開和打印數(shù)據(jù)等工作。
數(shù)據(jù)讀取過程是上位機程序的關鍵部分。為了在從下位機讀取數(shù)據(jù)時不影響數(shù)據(jù)采集界面響應的流暢,在程序設計中利用多線程實現(xiàn)數(shù)據(jù)讀取。數(shù)據(jù)采集工作在單獨的子線程中完成,而主線程則負責完成鼠標、鍵盤等對用戶的響應。在數(shù)據(jù)采集子線程中,通過DLL 提供API 應用層接口直接訪問USB驅(qū)動程序中的緩沖區(qū)。成功打開設備后,利用CH375WriteData接口函數(shù)向緩沖區(qū)中寫命令字,向單片機發(fā)送命令;利用CH375ReadData接口函數(shù)讀取緩沖區(qū)中的數(shù)據(jù),獲得采集到的數(shù)據(jù)。
在Visual Studio2005開發(fā)環(huán)境下,編寫上位機程序開發(fā)難度相對較低。數(shù)據(jù)實時顯示增加了數(shù)據(jù)采集過程的直觀性。將采集到的數(shù)據(jù)通過GDI+在PictureBox控件上繪圖,設置一個軟件定時器,每隔一定的時間將圖形重繪一次,由于時間間隔小于0.1s,視覺上是連續(xù)變化的曲線。數(shù)據(jù)的保存和打開功能主要是利用C#中的StreamWriter類和StreamReader類完成。打印數(shù)據(jù)和圖形主要使用PrintDocument類,調(diào)用Print方法后,在PrintDocument_PrintPage事件中將需要打印的文字和圖形輸出或重繪即可打印。
結(jié)語
利用單片機和USB接口芯片的簡單連接即可擴展出一個USB接口的數(shù)據(jù)采集模塊,而且無需外擴數(shù)據(jù)存儲器,同時,該采集系統(tǒng)還可充分利用ADuC841豐富的片上外設和I/O資源進行功能上的擴展。在XFT-1型開放式傅立葉變換光譜儀系統(tǒng)中,利用了ADuC841通過同步電機控制麥克爾遜干涉儀動鏡位置。經(jīng)過測試,該系統(tǒng)采樣數(shù)據(jù)精度較高,傳輸速率較快,性能穩(wěn)定,通過與PC機相連后,不僅使得數(shù)據(jù)存儲量大,而且更易于進行數(shù)據(jù)處理,經(jīng)濟簡單,在XFT-1型開放式傅立葉變換光譜儀系統(tǒng)中性能穩(wěn)定。
參考文獻:
1. http://www.analog.com/UploadedFiles/Data_Sheets/ 247905996157419352262670829ADuC841_2_3_0.pdf
2. Universal Serial Bus Specification Reversion 1.1. www.usb.org, 1998
3. http://winchiphead.com/download/CH372/CH372DS1.PDF
4. http://winchiphead.com/download/CH372/CH372DS2.PDF
干涉儀相關文章:干涉儀原理
電機保護器相關文章:電機保護器原理
評論