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