<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 基于A(yíng)DuC841的USB接口數據采集系統設計

基于A(yíng)DuC841的USB接口數據采集系統設計

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

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

關(guān)鍵詞: ;;;

引言

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

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

硬件電路設計

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

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

ADuC841和CH375的接口電路圖如圖1所示。ADuC841和CH375有串行和并行兩種數據線(xiàn)連接方法。模塊中為了提高速度采用了并行的方法,將ADuC841的P0口與CH375的并行總線(xiàn)相連。除了讀寫(xiě)信號連接外,采用A14作為地址位。A14=0,表示數據總線(xiàn)上是數據;A14=1,表示數據總線(xiàn)上是命令。USB傳輸過(guò)程中,ADuC841與CH375通過(guò)外部中斷觸發(fā),采用ADuC841的INT0外部中斷引腳直接和CH372的INT#引腳相連。CH375在正常工作時(shí)ACT#引腳輸出為低電平,因此在電源和此引腳間加一個(gè)發(fā)光二極管能夠指示USB接口芯片是否正常工作。發(fā)光二極管的亮滅為下位機程序的調試提供了重要的信息。

系統軟件設計

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

下位機程序

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

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

USB驅動(dòng)程序

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

上位機程序

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

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

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

結語(yǔ)

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

參考文獻:
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)文章:干涉儀原理


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


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>