谷物品質(zhì)快速檢測儀關鍵部件的設計
圖5. 驅(qū)動程序流程圖
2 USB驅(qū)動程序和應用程序的開發(fā)
GPD(General Purpose Driver)是一個通用目的的設備驅(qū)動程序,是應用程序與EZ-USB 外設進行通信的橋梁。EZ-USB的GPD 代碼Cypress公司提供原型,用戶可以在此基礎上生成定制驅(qū)動程序。
1)定制驅(qū)動程序的生成
采用Cypress 提供的GPD,由于GPD 只能執(zhí)行一些標準的USB 設備請求和數(shù)據(jù)傳輸,
不能滿足用戶特定外設的需要,需進行擴充以生成用戶定制驅(qū)動程序。對GPD 中的EZUSBSYS. C,EZUSBSYS. H,SOURCES 進行修改,再在WindowsDDK 與VC ++ 6. 0 下利用Build 命令重新編譯即可生成用戶定制驅(qū)動程序。
2)設備驅(qū)動程序與應用程序的接口
設備驅(qū)動程序介于硬件與用戶應用軟件之間。用戶可以以一種規(guī)范的方式調(diào)用Win32API函數(shù)訪問硬件,而不必考慮如何控制硬件。為了方便人們開發(fā)新的驅(qū)動程序,Windows已經(jīng)自帶了一些類驅(qū)動程序,用戶只需要在這些類驅(qū)動程序的基礎上編寫功能驅(qū)動程序來實現(xiàn)特定的功能。圖5給出了驅(qū)動程序的調(diào)用流程,可以清楚地看到功能驅(qū)動程序所處的層次。
開發(fā)過程中主要是了解應用程序中如何調(diào)用驅(qū)動提供的接口函數(shù)。用戶應用程序通過
I / O 控制調(diào)用訪問EZ-USB 設備驅(qū)動程序達到控制USB 設備的目的,應用程序首先通過調(diào)用Win32函數(shù)CreateFile來取得訪問設備驅(qū)動程序的句柄,再利用Win32函數(shù)DeviceIoControl對設備進行I / O 控制。
(1) 獲取設備句柄。
EZ-USB 設備驅(qū)動程序可以與多個EZ-USB 設備通信。每一個連接到主機的EZ-USB 設備,驅(qū)動程序都為它創(chuàng)建一個形如Ezusb-i(i從0遞增)的鏈接符。Win32 函數(shù)CreateFile以設備鏈接符為參數(shù)獲取第i個Ezusb設備的句柄。通過CreateFile函數(shù)獲取USB 設備句柄后,再利用I / O控制來處理設備的I / O 請求。[2]
(2) 設備I / O 控制
應用程序通過Win32 函數(shù)DeviceIoControl向設備驅(qū)動程序發(fā)送I / O 請求。DeviceIoControl函數(shù)通過I / O 控制碼(IOCTRL)及其他輔助參數(shù)向設備驅(qū)動程序發(fā)送特定的I / O 請求并返回操作結(jié)果,來實現(xiàn)數(shù)據(jù)或控制命令的傳輸。[2]
3.2.3 Win32應用程序
上位機應用程序主要負責讀取硬件所輸出的數(shù)據(jù)采集結(jié)果并向下發(fā)送控制指令,而且能存儲和顯示采集到的波形。Win32程序使用VC++6.0實現(xiàn),通過USB中斷或塊傳輸來讀取AD采集結(jié)果,采樣速度可以達到20K。
五、結(jié)速語
本文通過介紹ADS7825和EZ-USB FX2芯片的特點及相關的軟硬件基本開發(fā)過程,闡述了實現(xiàn)光譜數(shù)據(jù)采集系統(tǒng)的全過程。筆者根據(jù)上文提到方法設計了硬件并編寫了相應的固件程序、驅(qū)動程序和應用程序,在實際應用中已獲得正常使用。
評論