用USB接口的數(shù)據(jù)采集系統(tǒng),使用簡(jiǎn)單方便,無(wú)需外接電源,還可以利用PC機(jī)強(qiáng)大的運(yùn)算能力處理數(shù)據(jù)。這類系統(tǒng)一般都要用單片機(jī)做接口控制,對(duì)于不會(huì)使用單片機(jī)的人是個(gè)難題。這里介紹一個(gè)不用單片機(jī)的USB數(shù)據(jù)采集系統(tǒng),只要會(huì)用VB編程就可以實(shí)現(xiàn)。
一、系統(tǒng)的硬件構(gòu)成
本系統(tǒng)的電原理如上圖,CH371是USB接口芯片,MAX197多路AD轉(zhuǎn)換器做數(shù)據(jù)采集,電腦對(duì)采集的數(shù)據(jù)進(jìn)行處理。
CH371是南京沁恒電子出品的一種簡(jiǎn)單易用的USB接口芯片,它包括芯片本身和計(jì)算機(jī)端的通用驅(qū)動(dòng)程序。CH371以硬件邏輯實(shí)現(xiàn)了USB通信協(xié)議傳輸控制的整個(gè)過(guò)程,通用驅(qū)動(dòng)程序通過(guò)軟件向計(jì)算機(jī)應(yīng)用層提供設(shè)備級(jí)接口,因此用戶不必考慮USB通信協(xié)議、固件程序、驅(qū)動(dòng)程序、底層數(shù)據(jù)傳輸過(guò)程等,就可以設(shè)計(jì)出各種USB接口設(shè)備。
CH371有多種工作方式,除了數(shù)據(jù)傳輸方式外,它還可以工作在一種主控方式,即使沒(méi)有連結(jié)單片機(jī)、DSP等控制器,也可以輸出控制信號(hào)和輸入數(shù)據(jù)。CH371的D7~D0、A3~A0都是雙向引腳,它們可以被分為兩組,分別設(shè)置用于輸入或輸出。把CH371的A3~A0與MAX197的CS、WR、RD、HBEN四根輸入控制線相連,把D7~D0和MAX197的并行數(shù)據(jù)端口相連,就可以通過(guò)軟件直接控制MAX197的工作。
MAX197是MAXIM推出的12位AD轉(zhuǎn)換器,單5伏供電,內(nèi)置4.096伏電壓基準(zhǔn),外圍電路很簡(jiǎn)單,僅需外接幾只電容就可以工作。MAX197有內(nèi)外兩種時(shí)鐘和采樣模式,模擬輸入量程和極性可選,有0~5伏、0~10伏、±5伏、±10伏四種。有8個(gè)模擬輸入通道。所有這些都可以通過(guò)軟件來(lái)選擇,即向MAX197寫(xiě)入一個(gè)字節(jié)的控制字來(lái)實(shí)現(xiàn),控制字的各位功能見(jiàn)下表:
位 | PD1 | PD0 | ACQMOD | RNG | BIP | A2 | A1 | A0 |
功能 | 內(nèi)外時(shí)鐘和電源管理模式 | 內(nèi)外控制采樣模式 | 模擬信號(hào)量程 | 模擬信號(hào)極性 | 模擬輸入通道選擇 |
二、系統(tǒng)的軟件設(shè)計(jì)
1. CH371計(jì)算機(jī)端的軟件接口
CH371在計(jì)算機(jī)端提供了三個(gè)層次的軟件接口,最高層是應(yīng)用層接口。應(yīng)用層接口是由CH371動(dòng)態(tài)鏈接庫(kù)DLL提供的面向功能應(yīng)用的API函數(shù)。每個(gè)函數(shù)實(shí)現(xiàn)一個(gè)具體的功能,并用簡(jiǎn)便易用的API參數(shù)代替設(shè)備級(jí)接口中所要求的數(shù)據(jù)格式,所有API在調(diào)用后都有操作狀態(tài)返回,用戶只要選擇特定的API函數(shù)就可以實(shí)現(xiàn)所需的功能。
CH371動(dòng)態(tài)鏈接庫(kù)DLL提供的的API函數(shù)包括設(shè)備管理、數(shù)據(jù)傳輸、中斷查詢、I2C操作和直接控制等幾類,我們這里要用的是兩個(gè)直接控制函數(shù)。
CH371GetStatus(ByVal iIndex As Long, ByVal iStatus As Long,ByRef iDataReg As Long)As Boolean
它的功能是通過(guò)CH371直接輸入數(shù)據(jù)和狀態(tài),其中iIndex指定CH37設(shè)備序號(hào),iStatus指向一個(gè)雙字單元,用于保存狀態(tài)數(shù)據(jù)。Bit7~Bit0對(duì)應(yīng)CH371的D7~D0引腳。IDataReg指向一個(gè)雙字單元,用于保存數(shù)據(jù)寄存器的數(shù)據(jù)。
CH371SetControl(ByVal iIndex As Long, ByVal iCtrData As Byte, ByVal iCtrlAddr As Byte,ByVal iData0e As Boolean, ByVal iAddr0e As Boolean)As Boolean
它的功能是通過(guò)CH371直接輸出控制信號(hào)。ICtrData是準(zhǔn)備寫(xiě)入D7~D0數(shù)據(jù)寄存器的數(shù)據(jù), iCtrlAddr是準(zhǔn)備寫(xiě)入A3~A0數(shù)據(jù)寄存器的數(shù)據(jù), 它們都必須在輸出使能時(shí)才可以輸出數(shù)據(jù)。iData0e控制D7~D0輸出使能,1輸出、0輸入。iAddr0e控制A3~A0輸出使能,1輸出、0輸入。
2. VB應(yīng)用程序
應(yīng)用程序是用VB編寫(xiě)的,它的核心就是調(diào)用上述兩個(gè)API函數(shù),通過(guò)CH371的D7~D0和A3~A0向MAX197寫(xiě)入控制字,啟動(dòng)模數(shù)轉(zhuǎn)換,最后讀出轉(zhuǎn)換結(jié)果。VB要使用CH371動(dòng)態(tài)鏈接庫(kù)中的API函數(shù),首先要用Declare語(yǔ)句在全局模塊的代碼段聲明這些函數(shù),CH371芯片廠商在其提供的VB DEMO中,有兩個(gè)MODULE已經(jīng)包含了CH371所有的API函數(shù),用戶只需要在自己的工程項(xiàng)目中將其加入即可。通過(guò)這兩個(gè)函數(shù)調(diào)用,向MAX197寫(xiě)入控制字,設(shè)定模數(shù)轉(zhuǎn)換器的工作方式、選擇輸入通道、啟動(dòng)模數(shù)轉(zhuǎn)換,最后讀入轉(zhuǎn)換結(jié)果,存入電腦,再做進(jìn)一步處理。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。