《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于USB的實時數(shù)據(jù)采集系統(tǒng)及其在MATLAB中的應用

基于USB的實時數(shù)據(jù)采集系統(tǒng)及其在MATLAB中的應用

2008-10-08
作者:夏文芳 吳鴻修 李享元

  摘? 要: 應用越來越廣泛的USB為實現(xiàn)實時數(shù)據(jù)采集" title="數(shù)據(jù)采集">數(shù)據(jù)采集提供了很大的便利,功能強大的MATLAB工具軟件對數(shù)據(jù)分析和處理十分方便。介紹一種利用MEX文件將二者結合起來,實現(xiàn)在MATLAB平臺下對數(shù)據(jù)實時采集,然后利用其庫函數(shù)對采集到的數(shù)據(jù)進行處理和分析的方法。

  關鍵詞: USB? MATLAB? MEX文件? 數(shù)據(jù)采集 實時

?

1 MATLAB的特點

  MATLAB(Matrix Laboratory)機矩陣實驗室是由美國MathWorks公司推出的一款集數(shù)值分析、矩陣計算、信號處理和圖形顯示于一體的工具軟件。它的命令語句功能非常強大,包含了大量高度集成的可直接調用的函數(shù),高效簡潔;另一方面,它又是一個開放系統(tǒng),針對不同的學科,推出了不同的工具箱。自1984年推向市場以來,經(jīng)過十幾年的發(fā)展和競爭,現(xiàn)已成為國際認可(IEEE)的最優(yōu)化的科技應用軟件之一。

  正是由于MATLAB具有良好的擴展性以及強大的數(shù)據(jù)分析和處理能力,現(xiàn)已廣泛應用于矩陣代數(shù)、數(shù)值計算、數(shù)字信號處理、振動理論、神經(jīng)網(wǎng)絡控制、動態(tài)仿真等領域。雖然MATLAB是一個完整的、功能齊全的編程環(huán)境,但在某些情況下,與外部環(huán)境的數(shù)據(jù)和程序的交互是非常必須而且有益的。例如,MATLAB不能實現(xiàn)對數(shù)據(jù)的實時采集,它所處理的數(shù)據(jù)必須是現(xiàn)成的,因此它不能很好地應用于需要在現(xiàn)場對數(shù)據(jù)進行分析和處理馬上得出結論的環(huán)境。如果將MATLAB與外部的數(shù)據(jù)和程序進行交互,問題就可迎刃而解了。

  MATLAB是用M語言編程,盡管不能在M文件中直接調用C語言程序,但可以通過MATLAB提供的應用編程接口(API)來與外部接口,在MATLAB環(huán)境中調用C語言或Fortran程序、輸入或輸出數(shù)據(jù)" title="輸出數(shù)據(jù)">輸出數(shù)據(jù)以及與其他軟件程序建立客戶/服務器關系。在MATLAB中調用C語言程序,必須通過MEX文件來實現(xiàn)。

2 MEX文件

  MEX文件是MATLAB命令解釋器能夠自動加載和執(zhí)行的動態(tài)鏈接子函數(shù)。C語言的MEX文件是一種動態(tài)鏈接子程序,可以象調用M文件一樣調用它。MEX文件主要有以下幾方面的應用:

  (1)在MATLAB中,M文件的計算速度特別是循環(huán)迭代速度遠比C語言慢,因此可以把大量循環(huán)迭代用C語言編寫為MEX文件,提高計算速度,解決MATLAB中循環(huán)的瓶頸問題;

  (2)已經(jīng)開發(fā)的C語言程序,不必將其轉化為M文件而重復勞動,通過添加入口程序mexFunction,可以由MATLAB調用;

  (3)直接控制硬件,如A/D采集卡、D/A輸出卡等,以用于數(shù)據(jù)采集或控制應用。

MEX文件與動態(tài)鏈接庫從某種意義上來說有很多相似之處,不同之處在于MEX文件是專門針對MATLAB的動態(tài)鏈接庫,可以像MATLAB自身的庫函數(shù)一樣被調用。

  C語言的MEX文件的源程序由兩個部分組成:

  (1)計算程序,即在MEX文件中完成計算功能的程序代碼。計算程序可以是普通的C語言程序,按照C語言規(guī)則編寫即可;

  (2)入口程序,即將計算程序與MATLAB連接的入口函數(shù)mexFunction。入口函數(shù)mexFunction相對復雜一些,函數(shù)中有四個參數(shù)nlhs、plhs、nrhs和prhs。這里nlhs是輸出數(shù)據(jù)的個數(shù),plhs是指向mxArray(MATLAB中所有數(shù)據(jù)都由mxArray定義)的輸出數(shù)據(jù)的指針,nrhs是輸入數(shù)據(jù)的個數(shù),prhs是指向mxArray的輸入數(shù)據(jù)的指針。

3 USB的特點

  USB(Universal Serial Bus)就是通用串行總線,它是一種PC機的外掛總線,是多家主要電腦、電子科技廠商為了解決PC機外圍設備的擁擠,提高設備的傳輸速度而聯(lián)合提出的一種新型總線。當適合它的Windows98操作系統(tǒng)一出現(xiàn),USB便得到了迅猛的發(fā)展。USB之所以具有如此魅力,還在于它具有許多其它總線無法比擬的優(yōu)點。USB規(guī)范能針對不同的性能價格比要求提供不同的選擇,以滿足不同的系統(tǒng)和部件及相應不同的功能,其主要優(yōu)點可歸結為以下幾點:

  (1)速度快。USB有高速和低速兩種方式,主模式為高速模式,速率為12Mbps;另外為適應一些不需要很大吞吐量和很高實時性的設備,如鼠標等。USB還提供低速方式,速率為1.5Mbps。

  (2)易擴展。用USB連接的外圍設備可以分為5層,外設數(shù)目最多可達127個。

  (3)能夠采用總線供電。USB總線提供最大5V,500mA電流,對于功耗較小的設備來說非常有效。

  (4)設備安裝和配置容易。USB設備支持即插即用和熱插拔,系統(tǒng)對其進行自動配置,不再占用中斷資源或者DMA資源,徹底拋棄了過去的跳線和撥碼開關設置。USB為電纜和連接頭提供了單一模型,解決了因外設越來越多造成的插槽緊張問題。

  (5)使用靈活。USB共有4種傳輸模式:控制傳輸(control)、同步傳輸(Synchronization)、中斷傳輸(interrupt)、批量傳輸(bulk),以適應不同設備的需要。

  (6)實現(xiàn)USB功能的模塊價格低廉。

  實現(xiàn)實時數(shù)據(jù)的采集,并利用MATLAB強大的數(shù)據(jù)處理和分析功能,最理想的情況當然就是在MATLAB中直接對USB總線進行控制。但是MATLAB自身并不能實現(xiàn)對USB的控制功能。眾所周知,在C語言環(huán)境中,可以非常方便地實現(xiàn)對USB的驅動開發(fā)和控制。如果使用C語言對USB的數(shù)據(jù)采集部分進行驅動和控制,編譯成MEX文件,然后在MATLAB中調用即可。

4 USB數(shù)據(jù)采集系統(tǒng)

4.1 USB驅動(USBD)

  USBD為客戶提供兩組工具:命令工具和通道工具。命令工具允許客戶在配置和控制USBD操作的同時配置并控制USB設備,它提供了對設備標準通道的所有訪問;通道工具允許USBD客戶管理特定設備的數(shù)據(jù),控制數(shù)據(jù)的傳輸,它不允許客戶直接訪問設備的標準通道。USBD客戶可以直接命令設備或從通道直接輸入和輸出數(shù)據(jù)流。

  USBD提供了供操作系統(tǒng)組件特別是設備驅動程序" title="設備驅動程序">設備驅動程序訪問設備的一組接口。這些操作系統(tǒng)組件只能通過USBD來訪問USB。一個USBD可以訪問一個或多個HCD,而一個HCD可能與一個或多個主機控制器相連。某些操作系統(tǒng)可能允許對USBD進行初始化設置。從客戶來看,與其進行通信的USBD管理著所有連接著的USB設備。

其通信過程如圖1所示。

?

?

  從硬件連接的角度來看,系統(tǒng)由兩部分構成:開發(fā)板和PC機。從軟件角度來看,可以分為三個層次:板載程序、設備驅動程序和客戶應用程序。

  ·板載程序由8051執(zhí)行,完成控制開發(fā)板的工作。

  ·設備驅動程序是Windows核心的一部分,它與系統(tǒng)中的USB總線驅動程序一起完成對設備的管理。

  ·客戶應用程序主要完成上層控制功能,將數(shù)據(jù)寫入設備或者將設備中的數(shù)據(jù)讀出顯示。

4.2 采集系統(tǒng)硬件連接

  一個實用的USB數(shù)據(jù)采集系統(tǒng)包括A/D、微控制器及USB通信接口。為了擴展還可以加上多路" title="多路">多路模擬開關和數(shù)字I/O端口。系統(tǒng)硬件結構框圖如圖2所示。

?

?

  一種方案就是采用普通單片機加上專用USB通信芯片。這種方案設計和調試比較麻煩,成本相對較高。

  隨著單片機制造技術的發(fā)展以及USB應用的日益廣泛,還可以使用具有USB通信接口的單片機。這些單片機處理能力強,有的本身就具備多路A/D。系統(tǒng)電路簡單、調試方便、電磁兼容性好。

  本系統(tǒng)從性能角度以及今后的發(fā)展方向出發(fā),選用Cypress公司生產(chǎn)的具有USB通信功能的CY7C64613。EZ-USB FX(CY7C64613)屬于Cypress半導體第二代全速USB系列,它較第一代具有更好的性能和更高的集成度。CY7C64613不但具備了EZ-USB的所有特征,還包括了一個智能的USB核心,一個增強8051,8KB的RAM和維持上層代碼兼容性的高性能I/O。該單片機可以與USB1.1協(xié)議和2.0協(xié)議兼容。

  系統(tǒng)A/D采用Analog Devices公司的AD7891。它是一個8通道的12位數(shù)據(jù)采集系統(tǒng),可以任意選擇并行或串行接口" title="串行接口">串行接口。這部分包括一個多路輸入復用器,一個片上監(jiān)控放大器,一個高速12位ADC,+2.5V參考電壓和一個高速接口。AD7891選擇并行還是串行接口由MODE腳決定。無論是并行還是串行接口,它都具有標準的控制輸入和快速的數(shù)據(jù)采集,從而保證了與現(xiàn)代微處理器、微控制器以及數(shù)字信號處理器的簡單接口連接。AD7891的每一個通道都有過壓保護,這意味著未選通道的過壓現(xiàn)象不會影響已選通道的數(shù)據(jù)傳輸。

  系統(tǒng)框圖如圖3所示。

?

?

4.3 MEX文件的編寫?????

  為了使程序具有良好的可移植性,實現(xiàn)功能的模塊化,MEX文件的兩個部分分別放在兩個不同的文件里??刂坪蛯崿F(xiàn)部分主要完成對USB的讀寫以及管理功能,入口程序調用它們,從而實現(xiàn)對USB發(fā)送控制命令、從USB讀取數(shù)據(jù)以及存儲數(shù)據(jù)的功能。

MEX文件執(zhí)行流程如圖4所示。

?

?

???在傳統(tǒng)的工程檢測中,需要將采集到的數(shù)據(jù)存儲起來,經(jīng)過一系列的處理和轉換,才能利用MATLAB進行分析和處理。實時性較差,造成人力物力的浪費。而該系統(tǒng)可以在MATLAB平臺上直接調用,簡潔明了,克服了傳統(tǒng)方法的缺點。

?

參考文獻

1 (美)Jan Axelson著, 陳逸譯.USB應用大全.北京:中國電力出版社, 2001

2 劉志儉.MATLAB應用程序接口用戶指南.北京:科學出版社,2000

3 程衛(wèi)國.MATLAB5.3應用指南.北京:人民郵電出版社,1999

4 SanJose編著.CY7C64601/603/613 EZ-USB FX USB?Microcontroller Data Sheet.Cypress Semiconductor Corporation,2001

5 LC2MOS 8-Channel,12-Bit High Speed Data Acquisition?System Data Sheet (Rev.C,),2002

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。