基于嵌入式USB接口的數據采集系統的設計
1)設備識別。USB設備的識別過(guò)程分別由操作系統和設備驅動(dòng)兩個(gè)部分通過(guò)USB協(xié)議的標準設備請求來(lái)完成。操作系統在USB設備連接時(shí)加載設備驅動(dòng)程序并分配通信地址,驅動(dòng)程序啟動(dòng)后通過(guò)中斷讀取相關(guān)描述符進(jìn)行資源配置并使能傳輸端點(diǎn),從而為應用程序提供接口。
2)數據采集與傳輸。通過(guò)單片機的定時(shí)器可對數據的采集頻率進(jìn)行設置。本系統的數據采集頻率為1 000 Hz,因此設置定時(shí)器每一毫秒中斷一次進(jìn)行數據采集,而主機端對USB設備的讀寫(xiě)操作則通過(guò)外部中斷實(shí)現,定時(shí)器中斷優(yōu)先級高于外部中斷以保證采集頻率固定為1 000 Hz。主機端通過(guò)寫(xiě)操作向USB設備發(fā)送控制信息,包括設備啟動(dòng)和停止的相關(guān)初始化與清理的工作,其中在對USB設備進(jìn)行讀操作前要先在端點(diǎn)的緩沖區填寫(xiě)64字節數據并通過(guò)命令使其有效,不然主機端對USB設備進(jìn)行讀操作時(shí),無(wú)效的緩沖區將導致PDIUSBD12芯片不會(huì )產(chǎn)生中斷,從而導致讀操作失敗。
2 驅動(dòng)程序設計
Windows CE下的USB設備驅動(dòng)模型由3個(gè)層次組成,其中由操作系統實(shí)現的有兩層,它們分別是HCD模塊(USBHost Controller Driver)和USBD模塊(USB Bus Driver),而第三層則被稱(chēng)為USB客戶(hù)端驅動(dòng)(USB Client Driver),由驅動(dòng)開(kāi)發(fā)人員實(shí)現。HCD模塊處于最底層,是CPU中USB控制器的驅動(dòng),為USBD模塊提供底層的功能訪(fǎng)問(wèn)服務(wù)。USBD模塊處于HCD模塊的上層,它根據HCD模塊提供的功能設計USB驅動(dòng)接口函數,并提供給第3層使用。USB客戶(hù)端驅動(dòng)處于USB驅動(dòng)模型的最頂層,也是本文所要設計的USB驅動(dòng)程序,它向上為應用程序提供接口以方便對USB設備進(jìn)行控制,向下利用USBD模塊提供的接口函數傳遞控制信息和數據。因此,要成功開(kāi)發(fā)USB設備的驅動(dòng)程序,在操作系統定制的時(shí)候就需要把HCD和USBD的相關(guān)組件添加進(jìn)去。
本文開(kāi)發(fā)的USB設備驅動(dòng)程序是流接口形式的驅動(dòng)程序,它被設計用來(lái)與通常的文件系統API(如CreateFile、ReadFile和WriteFile等)進(jìn)行通信,應用程序通過(guò)對文件系統的操作來(lái)完成對設備的控制。本驅動(dòng)所設計的流接口如表1所示。本文引用地址:http://dyxdggzs.com/article/149746.htm
評論