基于USB接口的虛擬示波器的開發(fā)實現(xiàn)
為了克服虛擬示波器應(yīng)用中的一些缺點(diǎn),在虛擬示波器中采用了一種新的總線接口標(biāo)準(zhǔn)——USB接口。主要介紹了基于USB的虛擬示波器的獨(dú)特優(yōu)點(diǎn),著重說明了系統(tǒng)整體設(shè)計、外插硬件設(shè)計、USB驅(qū)動軟件設(shè)計和客戶應(yīng)用軟件設(shè)計。
關(guān)鍵詞:虛擬示波器,USB,Windows驅(qū)動模型,快速傅里葉變換
1 系統(tǒng)總體設(shè)計
USB規(guī)范中將USB分為5個部分:控制器、控制器驅(qū)動程序、USB芯片驅(qū)動程序、USB設(shè)備以及針對不同USB設(shè)備的客戶驅(qū)動程序。根據(jù)設(shè)備對系統(tǒng)資源需求的不同,在USB規(guī)范中規(guī)定了四種不同的數(shù)據(jù)傳輸方式:等時傳輸方式(isochronous)、中斷傳輸方式(interrupt)、控制傳輸方式(control)和批(bulk)傳輸方式。這些傳輸方式各有特點(diǎn),分別用于不同的場所。USB需要主機(jī)硬件、操作系統(tǒng)和外設(shè)三個方面的支持才能工作。目前,主板一般都采用支持USB功能的控制芯片組,而且也安裝了USB接口插座。根據(jù)USB規(guī)范,整個虛擬示波器系統(tǒng)的設(shè)計分為主機(jī)軟件部分和外插硬件部分(見圖1)。
2 系統(tǒng)外插硬件設(shè)計
系統(tǒng)外插硬件設(shè)計結(jié)構(gòu)見圖2。本系統(tǒng)的外插硬件中采用Philips公司的PDIUSBD12全速USB接口芯片組成USB接口單元。PDIUSBD12芯片詳細(xì)資料可查看Philips公司網(wǎng)站www.philips.com。模數(shù)轉(zhuǎn)換芯片采用MAX公司最新的AD芯片MAX108。控制單元采用AT908515單片機(jī)作為控制器,控制整個硬件部分的協(xié)調(diào)工作。兩路被測信號可同時進(jìn)入雙路AD單元,模數(shù)轉(zhuǎn)換后的數(shù)字信號經(jīng)過信號預(yù)處理單元,對信號作初步的處理并將信號轉(zhuǎn)變?yōu)楸阌诖鎯Φ臄?shù)據(jù)形式。此后,將數(shù)據(jù)送入高速緩存,等待USB接口單元逐步輸入主機(jī)。而系統(tǒng)輸出信號的路徑相反,最后由DA單元轉(zhuǎn)變?yōu)橛脩舳x輸出的模擬信號??刂茊卧刂艫D和DA轉(zhuǎn)換的啟動停止、信號預(yù)處理單元的處理動作、高速緩存的存取以及協(xié)助USB接口單元的輸入輸出。
本USB驅(qū)動程序采用等時管道傳輸數(shù)據(jù),用控制管道來傳輸指令與信息。用等時管道可以實現(xiàn)主機(jī)和設(shè)備之間有規(guī)律的時間敏感性數(shù)據(jù)交換??偩€驅(qū)動程序?qū)⑹褂?0%的總線帶寬進(jìn)行等時和中斷傳輸?! 〈蜷_一個USB管道,首先要知道這種USB設(shè)備的GUID和管道名稱,獲取句柄以后就可以使用ReadFile/WriteFile進(jìn)行讀寫了。
USB驅(qū)動程序符合WDM(Windows驅(qū)動模型),本驅(qū)動程序采用微軟公司的DDK2000開發(fā),使用平臺為Windows2000。鑒于篇幅原因,此處僅提供USB驅(qū)動程序主入口例程的設(shè)計。
WDM驅(qū)動程序的主入口例程為DriverEntry例程,I/O管理器將調(diào)用該例程。對于本W(wǎng)DM驅(qū)動程序的DriverEntry例程,其主要工作是把各種函數(shù)指針填入驅(qū)動程序?qū)ο?。這些指針為操作系統(tǒng)指明了驅(qū)動程序庫中各種子例程的位置。它們包括下面這些指針成員(驅(qū)動程序?qū)ο笾校?/SPAN>
評論