基于USB的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與研究
GPIFINIT.C,其中只有一個(gè)Gpiflnit函數(shù);他是GPIF模塊的初始化函數(shù),一般在TD Init函數(shù)中調(diào)用。這個(gè)函數(shù)是由Cypress公司提供的一個(gè)GPIF、Designer開(kāi)發(fā)工具根據(jù)用戶(hù)設(shè)計(jì)的波形生成的,用戶(hù)不需要自己設(shè)計(jì)波形查詢(xún)表,減輕了設(shè)計(jì)者的工作強(qiáng)度。DSCR.A51是描述表文件,負(fù)責(zé)LISB設(shè)備的描述工作,CY7C68013在上電后自動(dòng)利用其中的VID和PID取代默認(rèn)的VID和PID。
4.2驅(qū)動(dòng)程序的編寫(xiě)
數(shù)據(jù)采集系統(tǒng)的設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序都是設(shè)備的主機(jī)端程序。設(shè)備驅(qū)動(dòng)程序是硬件和應(yīng)用程序之間的橋梁,通過(guò)驅(qū)動(dòng)程序,應(yīng)用程序可以對(duì)硬件進(jìn)行控制。該系統(tǒng)需要2個(gè)驅(qū)動(dòng)程序,即通用驅(qū)動(dòng)和下載固件的驅(qū)動(dòng)。通用驅(qū)動(dòng)完成與外設(shè)和用戶(hù)程序的通信及控制;而下載固件的驅(qū)動(dòng)則只負(fù)責(zé)在外設(shè)連接LISB總線后把特定的固件程序下載到FX2的RAM中,使FX2的CPU重啟,模擬斷開(kāi)與USB總線的連接,完成對(duì)外設(shè)的重新設(shè)置。主機(jī)根據(jù)新的設(shè)置安裝通用驅(qū)動(dòng)程序,重新枚舉外設(shè)為一個(gè)新的USB設(shè)備。
在本系統(tǒng)的驅(qū)動(dòng)程序開(kāi)發(fā)中,使用的開(kāi)發(fā)工具是Jun-go公司的winDriver,他支持多種操作系統(tǒng)。winDriver開(kāi)發(fā)的優(yōu)點(diǎn)是用戶(hù)不需要了解操作系統(tǒng)內(nèi)部的具體工作機(jī)理,同時(shí)也不需要了解各個(gè)系統(tǒng)DDK(Developing orDebugging in Kernel)的開(kāi)發(fā)工具,用戶(hù)只需使用winDriv-er提供的開(kāi)發(fā)平臺(tái),即可完成驅(qū)動(dòng)程序的設(shè)計(jì)工作,剩下的底層細(xì)節(jié)由winDrivei內(nèi)核統(tǒng)一處理。從而降低了對(duì)開(kāi)發(fā)者編程能力的要求,同時(shí)也大大縮短了開(kāi)發(fā)周期。下面就使用winDriver開(kāi)發(fā)驅(qū)動(dòng)程序的步驟做簡(jiǎn)要說(shuō)明:
啟動(dòng)winDrivet。的Dri veiwizard工具;利用Driver--wizard檢測(cè)硬件是否正常;在Driverwizard中選擇所使用的開(kāi)發(fā)環(huán)境,這里使用VC++6.0開(kāi)發(fā)環(huán)境,并生成驅(qū)動(dòng)程序代碼;對(duì)生成的代碼進(jìn)行修改,使其符合系統(tǒng)的需要;在winDrivet環(huán)境的用戶(hù)模式下,調(diào)試驅(qū)動(dòng)程序;如果程序需要內(nèi)核訪問(wèn)以提高驅(qū)動(dòng)程序的效率,進(jìn)入內(nèi)核開(kāi)發(fā)。
4.3 用戶(hù)程序的編寫(xiě)
用戶(hù)程序是系統(tǒng)與用戶(hù)的接口,他通過(guò)通用驅(qū)動(dòng)程序完成對(duì)外設(shè)的控制和通信。在編寫(xiě)用戶(hù)程序時(shí),首先要建立與外設(shè)的連接,然后才能實(shí)施數(shù)據(jù)的傳輸。啟動(dòng)采樣后,為了保證不丟失數(shù)據(jù),用戶(hù)程序應(yīng)該建立一個(gè)工作線程專(zhuān)門(mén)獲取外設(shè)傳來(lái)的數(shù)據(jù)。程序中主要用到2個(gè)API函數(shù):CreateFile()和DeviceloControl()。CreateFile()取得設(shè)備句柄后,DeviceloControl()根據(jù)該句柄完成數(shù)據(jù)傳輸。程序框圖如圖5所示。
5 結(jié) 語(yǔ)
本文系統(tǒng)地介紹了基于USB接口的數(shù)據(jù)采集系統(tǒng),完成了軟硬件的設(shè)計(jì)工作。數(shù)據(jù)采集系統(tǒng)具有最大20 kS/s的采樣速率,8位分辨率,采樣精度小于1%,輸入范圍為一5~+5 V。在本數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)中,CY7C68013芯片靈活的接口和可編程特性簡(jiǎn)化了外部硬件的設(shè)計(jì),提高了系統(tǒng)的可靠性,也利于PCB板的制作與調(diào)試?;赨SB 2.0的數(shù)據(jù)采集卡可以即插即用,彌補(bǔ)了傳統(tǒng)采集板卡插拔困難的不足。隨著時(shí)代的進(jìn)步,技術(shù)的發(fā)展,USB必將在更廣闊的領(lǐng)域得到更深層次的運(yùn)用。
評(píng)論