1.引言
在電力生產(chǎn)和電氣測(cè)試工作中經(jīng)常需要用便攜式PC機(jī)通過(guò)接口采集和處理數(shù)據(jù)。
常用的帶RS232串口的數(shù)據(jù)采集器,不允許帶電(熱)拔插,使用很不方便。而且現(xiàn)在大部分的PC機(jī)不帶RS232接口,尤其是便攜式機(jī)。取而代之的是USB接口。目前AVR單片機(jī)USB軟接口技術(shù)應(yīng)用的很普遍,最旱是ATMEL公司在《AVR309 Software UniversalSerial Bus》一文中,詳細(xì)介紹了使用AVR單片機(jī)的普通IO口來(lái)實(shí)現(xiàn)USB接口功能;同時(shí)介紹了ATmega8程序(固件)的編程方法,并提供全部匯編程序源代碼。在源碼的基礎(chǔ)上,筆者通過(guò)參閱和分析不同作者各種版本的USB軟接口固件(原程序)進(jìn)行優(yōu)化組合,更改和刪除一部份程序后,性能有很大的提高。CPU占用率比源碼程序低得多。AVR單片機(jī)ATmega8具備AVR高檔單片機(jī)性能和特點(diǎn),而價(jià)格僅與低檔單片機(jī)相當(dāng)。其內(nèi)置多路A/D轉(zhuǎn)換器滿足模擬數(shù)據(jù)采集需要。
2.ATmega8單片機(jī)
ATmega8是ATMEL公司AVR系列單片機(jī),采用低功耗CMOS工藝生產(chǎn)的基于AVR RISC結(jié)構(gòu)的8位單片機(jī),大多數(shù)指令執(zhí)行時(shí)間為單個(gè)周期。內(nèi)有10位精度的逐次逼近型ADC.
ADC與一個(gè)8通道的模擬多路復(fù)用器連接,能對(duì)來(lái)自端口C的8路單端輸入電壓進(jìn)行采樣。
單端電壓輸入以0V(GND)為基準(zhǔn)。ADC包括一個(gè)采樣保持電路,以確保在轉(zhuǎn)換過(guò)程中輸入到ADC的電壓保持恒定。ADC由AVCC引腳單獨(dú)提供電源。AVCC與VCC之間的偏差不能超過(guò)±0.3V.器件之內(nèi)有標(biāo)稱值為2.56V和AVCC基準(zhǔn)電壓?;鶞?zhǔn)電壓可以通過(guò)在AREF引腳上加一個(gè)電容進(jìn)行解耦,以更好地抑制噪聲。
AVR單片機(jī)的系統(tǒng)內(nèi)可編程特性,無(wú)需購(gòu)買昂貴的仿真器和編程器也可進(jìn)行單片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開發(fā);同時(shí)也為單片機(jī)的初學(xué)者提供了非常方便和簡(jiǎn)捷的學(xué)習(xí)開發(fā)環(huán)境。而且在省電性能、穩(wěn)定性、抗干擾性以及靈活性方面考慮得更加周全和完善。
ATmega8單片機(jī)與其它單片機(jī)比較而言,簡(jiǎn)便易用、費(fèi)用低,相對(duì)進(jìn)入AVR系列單片機(jī)開發(fā)的門檻也低,軟件資源豐富,程序容易開發(fā)。由于Atmega8單片機(jī)是常用芯片,本文對(duì)其特性、內(nèi)部結(jié)構(gòu)、引腳說(shuō)明等不做介紹。
3.硬件電路
基于ATmega8的USB軟接口數(shù)據(jù)采集硬件電路非常簡(jiǎn)單。以ATmega8單片機(jī)為核心,加上少量的外部元件構(gòu)成(如圖1所示)。

圖1中USB數(shù)據(jù)線D-上的上拉電阻R3用于主機(jī)識(shí)別低速USB設(shè)備(USB規(guī)范中定義)。
12MHz晶體和兩個(gè)20p的電容組成單片機(jī)運(yùn)行所必須的時(shí)鐘(USB一個(gè)數(shù)據(jù)位有8個(gè)時(shí)鐘周期)。
D+連接到PD2,同時(shí)也是INT0引腳。D-連接到PD3.電阻R1、R2起到限流和保護(hù)作用,防止在意外情況下?lián)p壞計(jì)算機(jī)的USB端口或單片機(jī)的端口。單片機(jī)所需的電源Vcc由USB口輸出5V電源直接供電。因?yàn)樵赨SB規(guī)范中規(guī)定數(shù)據(jù)線D+和D-上的電平范圍是3.0V至3.6V,D1和D2是3.6V穩(wěn)壓二極管,用于限制數(shù)據(jù)線上的電平。圖中LED1和R4為電源指示電路。LEDa1-LEDa6、Ra1-Ra6為A/D轉(zhuǎn)換通道指示電路。L1、C3、C4按ATmega8產(chǎn)品說(shuō)明手冊(cè)A/D轉(zhuǎn)換精度要求設(shè)置。Ri1-Ri6、Ci1-Ci6為模擬信號(hào)采樣輸入設(shè)置,其電路和參數(shù)根據(jù)不同輸入要求而改變。圖中J2是模擬信號(hào)采樣輸入端,可接入單端0-2.56V、0-5V輸入模擬信號(hào)。測(cè)量交流電參數(shù)需要對(duì)交流電信號(hào)處理后輸入;如要測(cè)量差動(dòng)模擬信號(hào)需要改變輸入采樣電路。并將單片機(jī)ATmega8改用ATmega16,ATmega16的A/D轉(zhuǎn)換可單端輸入也可差分輸入;還有2路可選增益為10倍與200倍的差分輸入通道;就是多了幾個(gè)引腳,電路圖有所變化;單片機(jī)軟件可兼容和移植,并增加幾條有關(guān)A/D轉(zhuǎn)換差動(dòng)輸入和數(shù)據(jù)處理的指令。如需要請(qǐng)參閱ATmega16產(chǎn)品說(shuō)明手冊(cè)(ATMEL公司網(wǎng)站可下載)。
4.ATmega8單片機(jī)程序(固件)
本程序基于單片機(jī)ATmega8以純軟件完成USB協(xié)議接收、發(fā)送和解碼,以實(shí)現(xiàn)USB接口數(shù)據(jù)通信功能;通過(guò)指令操作單片機(jī)內(nèi)置A/D轉(zhuǎn)換實(shí)現(xiàn)模擬量數(shù)據(jù)采集功能。USB協(xié)議定義低速USB設(shè)備通信速率是1.5M位/秒。
如單片機(jī)使用1 2 M H z的時(shí)鐘頻率,主頻是1.5MHz的8倍。也就是說(shuō),單片機(jī)每8個(gè)周期就要精確完成一個(gè)(對(duì)普通IO端口)數(shù)據(jù)位的采集或發(fā)送。
這種情況對(duì)單片機(jī)的時(shí)序要求嚴(yán)格,為此單片機(jī)的軟件核心部分代碼必須由匯編語(yǔ)言編寫。ATmega8芯片是ATMEL(愛特梅爾)公司的AVR系列單片機(jī)。ATMEL公司網(wǎng)站提供AVRStudio集成環(huán)境(IDE)開發(fā)軟件免費(fèi)下載。
安裝后直接支持匯編語(yǔ)言。本固件程序以此開發(fā)軟件匯編編譯并燒寫(燒寫用USB-isp下載線)。
程序以模塊化結(jié)構(gòu)編寫,為了各模塊相互運(yùn)行協(xié)調(diào)和高效,USB接口做如下設(shè)置約定。
狀態(tài)代碼=1:表示收到控制端口SETUP令牌包(中斷內(nèi)收到令牌包后設(shè)置)
狀態(tài)代碼=2:表示收到控制端口IN包(中斷內(nèi)收到令牌包后設(shè)置)
狀態(tài)代碼=3:表示收到控制端口OUT包(中斷內(nèi)收到令牌包后設(shè)置)
狀態(tài)代碼=5:表示收到數(shù)據(jù)端口OUT包(中斷內(nèi)收到令牌包后設(shè)置)
狀態(tài)代碼=6:表示收更改地址(主循環(huán)內(nèi)設(shè)置)
操作標(biāo)志=2:表示收到控制端口SETUP包數(shù)據(jù)(中斷內(nèi)收到數(shù)據(jù)包后設(shè)置)
操作標(biāo)志=3:表示發(fā)送完控制端口IN數(shù)據(jù)包(中斷內(nèi)發(fā)送完IN數(shù)據(jù)包后設(shè)置)
操作標(biāo)志=4:表示準(zhǔn)備好控制端口IN數(shù)據(jù)包(主循環(huán)內(nèi)設(shè)置)
端口號(hào)=0:控制端口
端口號(hào)=1:數(shù)據(jù)IN端口
端口號(hào)=2:數(shù)據(jù)OUT端口
端口號(hào)=3:串口狀態(tài)IN端口(USB虛擬RS232接口,CDC類規(guī)范要求)
5.結(jié)論
程序從系統(tǒng)復(fù)位開始初始化系統(tǒng)(設(shè)置堆棧地址、存儲(chǔ)器及寄存器初始化、A/D轉(zhuǎn)換器初始化)和設(shè)置軟USB接口初始值后,進(jìn)入主程序不斷檢測(cè)USB復(fù)位信號(hào)(兩條數(shù)據(jù)線保持10-20ms低電平)。如果出現(xiàn)復(fù)位 時(shí)當(dāng)多個(gè)物品共用一個(gè)總發(fā)射器,一旦總發(fā)射器不能立刻找到,想找回所需物品也將變得困難,因此可以在一個(gè)或幾個(gè)物品上也安裝上小發(fā)射器,在總發(fā)射器上附加報(bào)警器,這樣就可以利用物品上的發(fā)射器感應(yīng)并找回總發(fā)射器,然后再利用總發(fā)射器找回所需物品。此外,它的應(yīng)用范圍較廣,如博物館、銀行等,市場(chǎng)需求量會(huì)比較大,是現(xiàn)代社會(huì)的必備品之一, 因此具有較高的推廣價(jià)值和較好的應(yīng)用前景。
電子發(fā)燒友App























評(píng)論