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