新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于ADuC841的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

基于ADuC841的USB接口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

——
作者:天津大學(xué)—ADI聯(lián)合實(shí)驗(yàn)室 李玉國 李剛 林凌 時(shí)間:2006-12-11 來源:電子產(chǎn)品世界 收藏

摘要: 本文提出了一種傅立葉光譜儀中系統(tǒng)的簡易實(shí)現(xiàn)。

關(guān)鍵詞: ;;

引言

在微機(jī)測控系統(tǒng)中,經(jīng)常會(huì)遇到需要輸入各種模擬信號的情況,這時(shí)必然要進(jìn)行A/D轉(zhuǎn)換。有時(shí)在某些實(shí)際項(xiàng)目中,為了采集某些模擬量而選用一些專用的卡,不僅使得系統(tǒng)更加復(fù)雜,不容易實(shí)現(xiàn)功能擴(kuò)展,還增加了系統(tǒng)設(shè)計(jì)成本。另一方面,接口操作簡單越來越得到廣泛的應(yīng)用,因此設(shè)備的USB接口化也是一個(gè)發(fā)展趨勢。

XFT-1型開放式傅立葉變換光譜儀采用了經(jīng)典的麥克爾遜干涉儀,干涉后的光強(qiáng)隨著動(dòng)鏡的移動(dòng)而發(fā)生變化,光電接收器將接收到的緩慢變化的光強(qiáng)信號轉(zhuǎn)化為了相應(yīng)的電壓信號。為了去除由于動(dòng)鏡移動(dòng)速度不均勻所造成的誤差,模塊中采用了雙通道,同時(shí)測量參考光(He-Ne 激光)和被測光源后,利用參考光的信息校正被測光測量位置誤差。在XFT-1型開放式傅立葉變換光譜儀中,采用了本文提出的這種簡易的USB數(shù)據(jù)采集系統(tǒng)??紤]到經(jīng)濟(jì)、實(shí)用因素,系統(tǒng)中采用了單片機(jī)和通用USB接口芯片,將兩者結(jié)合實(shí)現(xiàn)USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)。上位PC則采用了C#語言編程,將采集到的數(shù)據(jù)實(shí)時(shí)顯示、處理分析、數(shù)據(jù)保存和打印。

硬件電路設(shè)計(jì)

本系統(tǒng)以ADI公司的ADuC841為核心實(shí)現(xiàn)數(shù)據(jù)采集和控制。此單片機(jī)具有單指令周期20MIPS 8052內(nèi)核和8通道高速420Ksps、12bit模/數(shù)轉(zhuǎn)換器,支持在線下載。控制器和ADC集成縮短了開發(fā)時(shí)間,提高了系統(tǒng)的穩(wěn)定性。

本文以南京沁恒的USB接口芯片CH375為核心實(shí)現(xiàn)USB數(shù)據(jù)傳輸。如下特點(diǎn):兼容USB2.0;內(nèi)置固件模式下屏蔽了相關(guān)的USB 協(xié)議,自動(dòng)完成標(biāo)準(zhǔn)的USB 枚舉配置過程,完全不需要本地端控制器作任何處理,簡化了單片機(jī)的固件編程;通用Windows 驅(qū)動(dòng)程序提供設(shè)備級接口,通過DLL 提供API 應(yīng)用層接口。

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在正常工作時(shí)ACT#引腳輸出為低電平,因此在電源和此引腳間加一個(gè)發(fā)光二極管能夠指示USB接口芯片是否正常工作。發(fā)光二極管的亮滅為下位機(jī)程序的調(diào)試提供了重要的信息。

系統(tǒng)軟件設(shè)計(jì)

系統(tǒng)軟件是由下位機(jī)程序(固件程序)、USB系統(tǒng)驅(qū)動(dòng)程序和應(yīng)用程序三部分構(gòu)成。利用USB協(xié)議傳輸數(shù)據(jù)的模型如圖2所示。本系統(tǒng)的軟件程序主要包括單片機(jī)C語言編寫的數(shù)據(jù)采集和數(shù)據(jù)傳輸子程序,以及用C#編寫的上位PC機(jī)采集到的數(shù)據(jù)實(shí)時(shí)顯示、處理分析、數(shù)據(jù)保存和打印子程序。

下位機(jī)程序

設(shè)備的固件程序是數(shù)據(jù)采集系統(tǒng)的核心,下位機(jī)程序主要利用KeilC51編寫。為了降低復(fù)雜程度和增加程序的可維護(hù)性,下位機(jī)程序設(shè)計(jì)采用先查詢PC機(jī)通過USB接口傳過來的命令再執(zhí)行的方式。在上位機(jī)和下位機(jī)通訊過程中設(shè)定協(xié)議,在協(xié)議中設(shè)定相應(yīng)的命令字和校驗(yàn)字段。主要的命令字有系統(tǒng)檢測是否正常、設(shè)定采樣頻率、設(shè)定采樣點(diǎn)數(shù)、采樣啟動(dòng)信號等。下位機(jī)主程序?yàn)椴粩鄴呙杳钭肿兞?,看其是否有效。被監(jiān)視命令字初始設(shè)為無效,上位機(jī)發(fā)出新的命令字后,下位機(jī)進(jìn)入中斷子程序接收命令字,命令字設(shè)為有效。下位機(jī)掃描到新命令字的內(nèi)容后,執(zhí)行相應(yīng)的操作,然后將待監(jiān)視命令字設(shè)為無效,繼續(xù)等待新的命令字。這種設(shè)計(jì)細(xì)化了任務(wù)的功能,有利于開發(fā)、調(diào)試和維護(hù)。

數(shù)據(jù)采集子程序在主程序接收到啟動(dòng)數(shù)據(jù)采集過程命令字后運(yùn)行。當(dāng)單片機(jī)接收到上位機(jī)通過USB發(fā)送過來的命令字后,啟動(dòng)數(shù)據(jù)采集過程。它利用片內(nèi)的定時(shí)器設(shè)定采集時(shí)間間隔,利用片內(nèi)的ADC進(jìn)行數(shù)據(jù)采集。在定時(shí)中斷子程序中,單片機(jī)將采集兩個(gè)通道的數(shù)據(jù),將它們按一定的順序存放到緩沖區(qū)中,然后檢查緩沖區(qū)是否滿,如果緩沖區(qū)不滿,定時(shí)中斷子程序結(jié)束,否則將緩沖區(qū)中的數(shù)據(jù)通過CH375發(fā)送給上位機(jī),清空緩沖區(qū),定時(shí)中斷子程序結(jié)束。

USB驅(qū)動(dòng)程序

本系統(tǒng)的一大優(yōu)點(diǎn)就是開發(fā)容易。南京沁恒公司已經(jīng)為用戶提供了通用的USB驅(qū)動(dòng)程序。只需要安裝現(xiàn)有的USB驅(qū)動(dòng)安裝程序,它為應(yīng)用程序的開發(fā)提供了很多接口函數(shù)。由于主要采用批量上傳和批量下載方式,所以主要用到CH375ReadData,CH375WriteData等函數(shù)。這一部分不需編寫程序。

上位機(jī)程序

上位機(jī)程序可以采有多種軟件開發(fā)工具,本系統(tǒng)在Visual Studio2005開發(fā)環(huán)境下,用C#語言編寫了應(yīng)用程序。主要完成讀取、顯示、保存、打開和打印數(shù)據(jù)等工作。

數(shù)據(jù)讀取過程是上位機(jī)程序的關(guān)鍵部分。為了在從下位機(jī)讀取數(shù)據(jù)時(shí)不影響數(shù)據(jù)采集界面響應(yīng)的流暢,在程序設(shè)計(jì)中利用多線程實(shí)現(xiàn)數(shù)據(jù)讀取。數(shù)據(jù)采集工作在單獨(dú)的子線程中完成,而主線程則負(fù)責(zé)完成鼠標(biāo)、鍵盤等對用戶的響應(yīng)。在數(shù)據(jù)采集子線程中,通過DLL 提供API 應(yīng)用層接口直接訪問USB驅(qū)動(dòng)程序中的緩沖區(qū)。成功打開設(shè)備后,利用CH375WriteData接口函數(shù)向緩沖區(qū)中寫命令字,向單片機(jī)發(fā)送命令;利用CH375ReadData接口函數(shù)讀取緩沖區(qū)中的數(shù)據(jù),獲得采集到的數(shù)據(jù)。

在Visual Studio2005開發(fā)環(huán)境下,編寫上位機(jī)程序開發(fā)難度相對較低。數(shù)據(jù)實(shí)時(shí)顯示增加了數(shù)據(jù)采集過程的直觀性。將采集到的數(shù)據(jù)通過GDI+在PictureBox控件上繪圖,設(shè)置一個(gè)軟件定時(shí)器,每隔一定的時(shí)間將圖形重繪一次,由于時(shí)間間隔小于0.1s,視覺上是連續(xù)變化的曲線。數(shù)據(jù)的保存和打開功能主要是利用C#中的StreamWriter類和StreamReader類完成。打印數(shù)據(jù)和圖形主要使用PrintDocument類,調(diào)用Print方法后,在PrintDocument_PrintPage事件中將需要打印的文字和圖形輸出或重繪即可打印。

結(jié)語

利用單片機(jī)和USB接口芯片的簡單連接即可擴(kuò)展出一個(gè)USB接口的數(shù)據(jù)采集模塊,而且無需外擴(kuò)數(shù)據(jù)存儲器,同時(shí),該采集系統(tǒng)還可充分利用ADuC841豐富的片上外設(shè)和I/O資源進(jìn)行功能上的擴(kuò)展。在XFT-1型開放式傅立葉變換光譜儀系統(tǒng)中,利用了ADuC841通過同步電機(jī)控制麥克爾遜干涉儀動(dòng)鏡位置。經(jīng)過測試,該系統(tǒng)采樣數(shù)據(jù)精度較高,傳輸速率較快,性能穩(wěn)定,通過與PC機(jī)相連后,不僅使得數(shù)據(jù)存儲量大,而且更易于進(jìn)行數(shù)據(jù)處理,經(jīng)濟(jì)簡單,在XFT-1型開放式傅立葉變換光譜儀系統(tǒng)中性能穩(wěn)定。

參考文獻(xià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

干涉儀相關(guān)文章:干涉儀原理


電機(jī)保護(hù)器相關(guān)文章:電機(jī)保護(hù)器原理


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉