基于USB的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與研究
模/數(shù)轉(zhuǎn)換器需要外部提供基準(zhǔn)電壓,ADC0804需要+2.5 V電壓,而且基準(zhǔn)電壓是否穩(wěn)定、精確,直接影響數(shù)據(jù)轉(zhuǎn)換的精度。而NationalSemiconductor公司的LM336-2.5 V是一個(gè)能提供精確+2.5 V電壓的器件,他的集成電路是精確的2.5 V并聯(lián)推挽穩(wěn)壓二極管組成,還有一個(gè)用來(lái)調(diào)節(jié)溫度對(duì)電壓影響的引腳ADJ。芯片所產(chǎn)生的2.5 V的電壓可以很方便的從5 V電壓系統(tǒng)中獲得。
4數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)
該數(shù)據(jù)采集系統(tǒng)的軟件系統(tǒng)主要由3部分組成:USB固件程序(Firmware)、I_JSB設(shè)備驅(qū)動(dòng)程序以及客戶(hù)應(yīng)用程序。3部分程序之間相互協(xié)作來(lái)完成整個(gè)采集卡的功能。
4.1 固件程序設(shè)計(jì)
固件程序是指運(yùn)行在設(shè)備CPU中的程序。只有在該程序運(yùn)行時(shí),外設(shè)才能稱(chēng)之為具有給定功能的外部設(shè)備。固件程序負(fù)責(zé)初始化各硬件單元,重新配置設(shè)備及A/D采樣控制。固件代碼的存儲(chǔ)位置有3種:第一種是存在主機(jī)中,設(shè)備加電后由驅(qū)動(dòng)程序把固件下載到片內(nèi)RAM后執(zhí)行,即重新枚舉;第二種方法是把固件代碼固化到一片E2PRAM中,外設(shè)加電后由FX2通過(guò)I21C總線下載到片內(nèi)RAM后自動(dòng)執(zhí)行;最后一種方法是把程序固化到一片R()M中,使之充當(dāng)外部程序存儲(chǔ)器,連在FX2三總線上。本文選用第一種方式,這種方式便于系統(tǒng)的調(diào)試和升級(jí)。
Cypress公司為CY7C68013提供了一個(gè)開(kāi)發(fā)框架,可以在KEILC51環(huán)境下開(kāi)發(fā)。由于開(kāi)發(fā)框架的引入,大大縮短了用戶(hù)的研發(fā)周期。該框架由以下幾部分組成:
(1)Fw.C中包含了程序框架的MAIN函數(shù),管理整個(gè)51內(nèi)核的運(yùn)行,因?yàn)镃ypreSS對(duì)這個(gè)部分的功能進(jìn)行了精心劃分,一般是不用改動(dòng)的。
(2)用戶(hù)必須將PERIP H.C實(shí)例化,他負(fù)責(zé)系統(tǒng)周邊器件的互聯(lián)。固件的設(shè)計(jì)主要針對(duì)這個(gè)文件,用戶(hù)必須根據(jù)自己系統(tǒng)的需要,實(shí)例化這個(gè)文件,以實(shí)現(xiàn)自己的功能。在這個(gè)文件中有幾個(gè)函數(shù)是比較關(guān)鍵的,在這里做特別說(shuō)明:
TD Init函數(shù),負(fù)責(zé)對(duì)USB端點(diǎn)進(jìn)行初始化設(shè)置。本設(shè)計(jì)中將端點(diǎn)6設(shè)置為1 024個(gè)字節(jié),緩存深度為4級(jí),模式設(shè)為自動(dòng)輸入方式。
TD Poll函數(shù),負(fù)責(zé)系統(tǒng)中循環(huán)任務(wù)的處理。他主要是對(duì)各個(gè)端點(diǎn)的狀態(tài)進(jìn)行查詢(xún),處理各種OUT或IN端點(diǎn)的交互。值得說(shuō)明的一點(diǎn)是,這種處理只是輔助性質(zhì)的,大部分工作由硬件自動(dòng)完成。
評(píng)論