基于USB的LDT實時數據采集系統設計
2.2 驅動程序設計
USB系統驅動程序采用分層驅動模型:USB設備驅動程序、USB函數層。其中函數層由通用串行總線驅動程序模塊(USBD)和主控制器驅動程序模塊(HCD)組成。它由Windows98提供,負責管理USB設備驅動程序和USB控制器之間的通信;加載及卸載USB驅動程序;與USB設備通用端點建立通信來執行設備配置、數據與USB協議框架和打包格式的雙向轉換任務。
USB設備驅動程序是開發USB外設的一個關鍵,它的設計是基于WDM(Win-dows Driver Model,Windows驅動程序模型)。目前,Win-dows98提供了多種USB設備驅動程序,但并不針對實時數據采集設備,需要Win-dows98/NT/2000 DDK開發包和SoftICE等調試工具?! ∷捎?個模塊實現:初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能實現模塊。
初始化模塊提供一個Driver Entry入口函數,來對所有的I/O請求包IRP(I/ORequest Packet)處理例程作定義。電源管理模塊負責設備的掛起與喚醒。
當USB設備上電時,主機會向USB控制器發送獲得設備描述的命令,設備描述符是一個固定長度為18字節的數字序列,反映了該USB設備的基本屬性。當USB控制器從USB總線檢測到這一命令時,USB控制器以中斷方式將此請求通知到TMS320F240。TMS320F240通過訪問USB控制器的控制寄存器和數據寄存器,獲得各種參數,向主機返回配置所包含的所有接口和接口所包含的所有端點的描述符。主機獲得后,設備與主機的“握手”就初步完成了。
即插即用管理模塊實現USB設備的熱插拔及動態配置。當硬件檢測到USB設備接入時,Win-dows98查找相應的驅動程序,并調用它的Driver En-try例程,即插即用管理器調用驅動程序的Add De-vice例程,告訴它添加了一個設備;然后,驅動程序為USB設備建立一個FDO(功能設備對象),在此處理工程中,驅動程序收到一個IRP-MN-START-DE-VICE的IRP,包括設備分配的資源信息。至此,設備被正確設置,驅動程序開始與硬件對話。當然,設備運行過程中,如果設備的狀態發生變化(暫停、拔出等),即插即用管理器也同樣發出相應的IRP,由驅動程序進行相應的處理。
I/O功能實現模塊完成I/O請求的大部分工作。當應用程序提出I/O請求時,它調用Win32 API函數DeviceIoControl來向設備發出命令。然后,由I/O管理器構造一個IRP,并設置其MajorFunction域為IRP-MJ-DEVICE-CONTROL。USB設備驅動程序收到該IRP后,根據其中的控制碼,構造相應的USB請求塊,并把它放到一個新的IRP,此IRP被傳遞到USBD模塊。USBD模塊根據此IRP執行相應的操作,并把結果通過IRP返回給USB功能驅動程序。USB功能驅動程序接到此IRP后,將操作結果再通過IRP返回給I/O管理器。并由I/O管理器將結果最終返回給應用程序,至此,對USB設備的一次I/O操作完成。
2.3 應用程序設計
PC主機是實時數據采集系統的中心,其基本功能有開啟或閉合USB設備、檢測USB設備、設置USB數據傳輸管道、設置A/D狀態和數據采集端口、實時從USB接口采集數據、顯示數據。
此外,具有數據分析功能包括數字濾波模塊、線性化處理模塊、解調模塊、PLL鎖相環倍頻模塊、標度變換模塊、與下位機的通信模塊、下位機的控制字生成模塊和數據庫的管理模塊等幾個部分。
3 結束語
為了提高設計質量,所設計的激光多普勒測量實時數據采集系統通過了測試USB外設功能的一系列軟件如Bwqlinst,USBComp等,完成了高精度數據采集和高速數據傳送。
評論