<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è) > 測試測量 > 設計應用 > 一種新型高速數據采集系統的設計與實(shí)現

一種新型高速數據采集系統的設計與實(shí)現

作者:張延波 張興敢 南京大學(xué) 電子科學(xué)與工程系(南京210093) 時(shí)間:2008-06-17 來(lái)源:電子產(chǎn)品世界 收藏
  USB 固件程序

  固件程序即為寫(xiě)入USB單片機中的程序,它是設備運行的控制中樞.Cypress公司提供了固件架構,用戶(hù)可以利用這一架構簡(jiǎn)化固件開(kāi)發(fā)。固件設計架構是由Keil C51編譯器與其整合開(kāi)發(fā)工具編寫(xiě)和構建的.在程序開(kāi)始時(shí),固件架構會(huì )執行下列步驟:

  1) 設置所有內部狀態(tài)變量的初始值。

  2) 調用用戶(hù)的初始設置函數TD_Init( ),待返回后,固件架構就會(huì )將USB接口設置為未配置的狀態(tài)。

  3) 在1s的時(shí)間間隔內,開(kāi)始重新進(jìn)行設備列舉,直到設置封包收到端點(diǎn)0為止。

  4) 當SETUP封包被檢測到后,固件架構就會(huì )啟動(dòng)工作分配器,而這個(gè)工作分配器就會(huì )按順序重復地執行下面的工作:
  
  A: 調用用戶(hù)函數TD_Poll( )。
  B: 是否決定標準設備請求是未定(或等待決定)的。如果已決定,它將會(huì )分析所收到的命令請求,并且加以響應。
  C: 是否決定USB核心已經(jīng)報告了USB中止(Suspend)事件。如果已決定,它會(huì )調用用戶(hù)函數TD_Suspend()。
若取得成功的返回,則測試回復(Resume)事件。反之,如果未檢測到,將會(huì )把微處理器放人中止模式中。當回復事件被檢測到時(shí),將調用用戶(hù)函數TD_Resume( ),并且連續地跳回至步驟C。
  D: 若從TD_Suspend()函數中未收到成功的返回,再連續地跳至步驟C。
實(shí)際上Cypress公司提供的這個(gè)固件框架已經(jīng)能夠使USB芯片正常的工作,但是,它并不能滿(mǎn)足本系統的需要。需要添加自己的控制代碼來(lái)控制USB芯片,使之能夠完成需要的工作。

  框架程序中為提供了兩個(gè)函數TD_Init( ),TD_Poll( ),根據上面的分析發(fā)現,這兩個(gè)函數分別完成了系統的初始化工作和系統的用戶(hù)期望工作。在此采集系統中,只需要修改這兩個(gè)函數,添加自己的功能函數,即可完成系統需要的功能。

  在TD_Init( )中,需要添加自己的代碼來(lái)完成系統的初始化,因為系統采用了2端點(diǎn)和6端點(diǎn)的批量讀寫(xiě)功能,所以,將2端點(diǎn)配置單緩沖區512字節,兩倍緩沖區,作為In端點(diǎn),將6端點(diǎn)配置為單緩沖區512字節,兩倍緩沖區,作為Out端點(diǎn),配置系統為異步Slave FIFO 模式。

  在TD_Poll( )中,通過(guò)檢測2端點(diǎn)和6端點(diǎn)緩沖區數據的狀態(tài),來(lái)及時(shí)的讀取這兩個(gè)緩沖區中的數據,然后調用自己定義的函數DecodeInst( ), ImplementInst( )來(lái)完成對于控制指令的譯碼和執行工作。
  
  驅動(dòng)程序

  基于EZ-USB FX2的二次枚舉的特性,需要編制兩個(gè)驅動(dòng)程序:一個(gè)驅動(dòng)程序loader.sys,它將在主機上編寫(xiě)好的固件程序在主機系統啟動(dòng)時(shí)下載至FX2的RAM中;另一個(gè)驅動(dòng)程序USBBULK.sys為實(shí)際安裝的驅動(dòng)程序。另外,為實(shí)現在系統啟動(dòng)時(shí),自動(dòng)安裝兩次驅動(dòng)程序,還需編寫(xiě)自己的ezloader.inf文件實(shí)現。loader.sys需要自己編寫(xiě)生成,USBBULK.sys可使用CYPRESS公司的通用驅動(dòng)程序。

  用戶(hù)程序

  用戶(hù)程序是系統與用戶(hù)的接口,它通過(guò)通用驅動(dòng)程序完成對外設的控制和通信。在編寫(xiě)用戶(hù)程序時(shí),首先要建立與外設的連接,然后才能實(shí)施數據的傳輸。啟動(dòng)采樣后,為了保證不丟失數據,用戶(hù)程序應建立一個(gè)新的工作線(xiàn)程專(zhuān)門(mén)獲取外設傳來(lái)的數據。程序中主要用到兩個(gè)API函數:CreateFile()和DeviceIoControl()。CreateFile()取得設備句后,DeviceIoControl()根據該句柄完成數據傳輸。

  系統通過(guò)DeviceIoControl()完成的工作如下:

  數據批量讀,數據批量寫(xiě)。

結語(yǔ)

  為了驗證本系統采集數據的準確性,利用信號源產(chǎn)生的正弦波信號對系統進(jìn)行驗證。測試結果如圖3所示。

本文引用地址:http://dyxdggzs.com/article/84332.htm


圖3  測試結果

  通過(guò)實(shí)際測量,該系統測量數據與實(shí)際情況完全符合,單通道采樣速率最高可達到10Mbps。

  整個(gè)采集系統由數據傳輸、、邏輯電路、和計算機等組成,通過(guò)對該系統的硬件電路設計和軟件編程分析,以及實(shí)際測量結果的比較,證明了該系統的可行性。由于采用高速接口,本系統具有即插即用、高速采集等特點(diǎn),具有很好的擴展性。該采集系統已經(jīng)在的測試系統中得到應用。
  
參考文獻:

  1. 李玉國,李剛,林凌,基于A(yíng)DuC841的USB接13數據采集系統設計,電子產(chǎn)品世界,2006,11:100-104
  2. 王羽中,潘明海,基于USB2.0的多通道數據采集系統設計與實(shí)現,電子測量技術(shù),2007,30(6):83-86
  3. 金達,闕沛文.當前計算機技術(shù)發(fā)展對基于PC機自動(dòng)測試系統的影響,計算機自動(dòng)測量與控制,1999,8(1):5—7.
  4. 朱正平,寧百齊,袁洪,肖山竹.基于USB2.0接口芯片FX2的高速效據采集的設計實(shí)現,微計算機應用,2006, (3):328— 331


上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>