基于 TMS320F2812 的數(shù)據(jù)采集及處理系統(tǒng)
前言
數(shù)據(jù)采集及處理系統(tǒng)在眾多領(lǐng)域均有廣泛的應(yīng)用,其主要功能是把外界模擬信號的電壓參量經(jīng)過a/d轉(zhuǎn)換器,轉(zhuǎn)換成數(shù)字量,并把轉(zhuǎn)換結(jié)果存儲以便分析處理。
本系統(tǒng)采用ti 的dsp 芯片tms320f2812 作為信號采集和處理的核心,通過片上自帶的12位adc進(jìn)行采集。采集后的數(shù)據(jù)暫時存儲在片內(nèi)存儲器中,通過串行異步通信接口sci 傳輸?shù)轿C(jī),微機(jī)將以文件形式存儲采樣數(shù)據(jù)。數(shù)字處理部分主要是進(jìn)行簡單的窄帶濾波??紤]到采樣器件可能和微機(jī)有較遠(yuǎn)距離(但< 1200m),在sci和微機(jī)間采用了rs-422傳輸協(xié)議。
tms320f2812介紹
目前應(yīng)用最多的是德州儀器公司的tms320系列和摩托羅拉公司的dsp56000和dsp96000系列。tms320f28系列芯片是ti最新推出的dsp芯片,特別適用于有大批量數(shù)據(jù)處理的測控場合,如數(shù)據(jù)采集,工業(yè)自動化控制,電力電子技術(shù)應(yīng)用,智能化儀器儀表及電機(jī),馬達(dá)伺服控制系統(tǒng)等。其主要特點(diǎn)有:
采用高性能的靜態(tài)cmos技術(shù),能在一個周期內(nèi)完成32*32位的乘法累加運(yùn)算,或者兩個16*16位的乘法累加運(yùn)算;時鐘頻率最高可達(dá)150mhz即6.67ns的指令周期,外部采用低頻時鐘、通過片內(nèi)鎖相環(huán)倍頻,低功耗設(shè)計,flash 編程電壓為3.3伏特。
16通道的12位模數(shù)轉(zhuǎn)換器(adc)含兩路采樣保持器,一個轉(zhuǎn)換單元,可實現(xiàn)雙通道同步采樣,最小轉(zhuǎn)換時間為80ns.片上含兩個事件管理單元(eva,evb),設(shè)計用于pwm輸出,轉(zhuǎn)速測量、脈寬測量等。通訊接口,含2 個通用異步串口(sci);2個通用同步串口(spi),1個can總線接口(ecan),2個mcbsp串口(mcbsp),56個獨(dú)立配置的通用多功能i/o(gpio)。
tms320f2812應(yīng)用的大量外設(shè)接口簡化了電路設(shè)計。同時,它提供了足夠的處理能力,使一些復(fù)雜實時控制算法的應(yīng)用成為可能。
片內(nèi)外設(shè)adc
tms320f2812 的adc模塊是一個12位分辨率的,具有流水線結(jié)構(gòu)的模數(shù)轉(zhuǎn)換器,(流水線adc也稱作分級型adc)是這三種結(jié)構(gòu)(現(xiàn)代模數(shù)轉(zhuǎn)換器(adc)設(shè)計最常用的結(jié)構(gòu)分為逐次逼近(sar)型adc、 - adc和流水線adc三種)中能超過100 msps最高采樣速率(但精度最低)的adc,這種流水線結(jié)構(gòu)的adc分辨率通常最高僅能達(dá)到14 bit。tms320f2812內(nèi)置雙采樣保持電路,保持?jǐn)?shù)據(jù)采集時窗口有獨(dú)立的預(yù)定標(biāo)控制。并且允許系統(tǒng)對同一通道轉(zhuǎn)換多次,允許用戶執(zhí)行過采樣算法,這較傳統(tǒng)的單一轉(zhuǎn)換結(jié)果增加了更多的解決方案,有利于提高采樣的精度。有多個觸發(fā)源可以啟動adc 轉(zhuǎn)換??焖俚霓D(zhuǎn)換時間, adc 時鐘可以配置為25mhz,最高采樣帶寬為12.5msps。用tms320f2812 搭建數(shù)據(jù)采集系統(tǒng)時,不必外接adc,避免了復(fù)雜的硬件設(shè)計。由于此adc可以直接對0-3v電壓范圍采樣,也可以經(jīng)過信號調(diào)理后對峰峰值不超過3v的雙極性模擬信號進(jìn)行采樣。先把被測信號用示波器或其他方法判斷其極性和幅值范圍。若為單極性信號則斷開偏置電路,雙極性時連接到電路上調(diào)節(jié)電壓范圍到0-3v。為測試片上adc的線性,實驗中主要是對幾個電平信號進(jìn)行采樣,把a(bǔ)dc 采集的結(jié)果在程序中計算其對應(yīng)的模擬量,并且同時用數(shù)字萬用表測量,計算adc 的線性和精度。實驗數(shù)據(jù)如表1所示。
由上表所得adc的線性曲線如圖1所示:
采集0-3v的信號時(d 為采集的數(shù)字量 adclo)計算公式為:
v=3(d-adclo)/(2power12-1)
采集峰峰值3v的雙極性信號時,需要連接偏置電路。首先不加入信號直接測出偏置電壓的數(shù)字量為dv,則實際的信號與采集的數(shù)字量的關(guān)系為:
v=3(d-dv)/(2power12-1)
數(shù)字信號處理
數(shù)字信號處理之所以發(fā)展得這樣快,應(yīng)用得這么廣,是與它的突出優(yōu)點(diǎn)分不開的。歸納起來,有以下四個方面的優(yōu)點(diǎn):
(1)精度高。模擬系統(tǒng)的精度主要取決于元器件的精度,一般模擬器件的精度達(dá)到10-3,己很不容易。而數(shù)字系統(tǒng)的精度主要取決于字長,16位的字長可達(dá)10-4以上。
(2)靈活性大。模擬信號裝置一旦參數(shù)選定就不易改變,但是數(shù)字系統(tǒng)則不然,它的系數(shù)可調(diào),甚至還可以具有可編程和自適應(yīng)的能力。
(3)可靠性高。由于數(shù)字系統(tǒng)只有“0” 、“1”兩個電平,其受溫度、環(huán)境以及噪聲等的影響比模擬系統(tǒng)小。
(4)時分復(fù)用。利用一套裝置同時處理幾個通道的信號。
與pc的通信
串行通信接口sci是采用雙向通信的的異步串行通信接口,即通常所說的uart口。為減少串口通信時的cpu開銷,tms320f2812的串口支持16級接收和發(fā)送fifo。sci模塊采用標(biāo)準(zhǔn)非歸0 數(shù)據(jù)格式,可以與cpu或其他通信數(shù)據(jù)格式兼容的異步外設(shè)進(jìn)行數(shù)字通信。當(dāng)不使用fifo時,sci接收器和發(fā)送器采用雙級緩沖傳送數(shù)據(jù),sci接收器和發(fā)送器有自己獨(dú)立的使能和中斷位,可以在半雙工通信中進(jìn)行獨(dú)立的操作,或者在全雙工模式下同時操作。為了確保數(shù)據(jù)的完整性,sci模塊對接收到的數(shù)據(jù)進(jìn)行中斷檢測、極性、超限和禎錯誤檢測。通過對16位的波特率控制寄存器進(jìn)行編程,可配置不同的sci通信速率。tms320f2812支持自動波特率檢測邏輯。發(fā)送和接收可采用中斷和查詢兩種方式。
由于tms320f2812片內(nèi)存儲空間相對較小,難以做到長時間連續(xù)采集。本系統(tǒng)將采集的結(jié)果暫時存儲在dsp 的片內(nèi)數(shù)據(jù)區(qū),再用微機(jī)的串口rs-232 實現(xiàn)與dsp 的電平匹配,同時實現(xiàn)全雙工通信。為增大傳輸距離,在這中間又加兩片max3490(兩片max3490 之間電壓很高,可以傳輸相當(dāng)長的距離)。實驗所需的電路原理如圖2所示:
軟件部分
dsp 的編程工具有c 語言和匯編語言兩種。一般實時性要求不是特別高的場合,采用c語言編程完全可以滿足要求。對于高速實時應(yīng)用,采用c語言和匯編語言混合編程的方法,能把c語言的優(yōu)點(diǎn)和匯編語言的高效率有機(jī)結(jié)合起來。本文涉及的關(guān)鍵程序和相應(yīng)的流程圖如下:
eallow;
sysctrlregs.hispcp.all=03;
edis;
adcregs.adctrl3.bit.adcbgrfdn = 0x3;
adcregs.adctrl3.bit.adcpwdn = 1;
// initadc();
//采樣窗口大小設(shè)置寄存器
adcregs.adctrl1.bit.acq_ps=0xf;
//內(nèi)核時鐘分頻器
adcregs.adctrl3.bit.adcclkps=0x1;
//級聯(lián)排序器工作方式
adcregs.adctrl1.bit.seq_casc=1;
adcregs.adcmaxconv.all=0x0001;
adcregs.adcchselseq1.all=0x0011;
adcregs.adctrl1.bit.cont_run=1;
//初始化串行通信模塊sci寄存器
eallow;
gpiomuxregs.gpfmux.all=0xffff;
gpiomuxregs.gpgmux.all=0xffff;
edis;
sra.sciccr.all=0x0007;
srb.sciccr.all=0x0007;
sra.scictl1.all=0x0003;
srb.scictl1.all=0x0003;
sra.scictl2.bit .rxbkintena=1;
srb.scictl2.bit .txintena=1;
窄帶濾波:
for(k=0;k<=l-1;k++)
{
wf=(2*pi*k)/l;
re=0.0;
im=0.0;
for(i=0;i
re=re+h[i]*cos((float)i*wf);
im=im+h[i]*sin((float)i*wf);
}
d[k]=sqrt(pow(re,2)+pow(im,2)); /*求模(幅度)*/
//db[k]=20.0*log10(d); /*轉(zhuǎn)換為對數(shù)表示形式*/
實際采集到的一個波形為:
結(jié)束語
本文論述了以32 位定點(diǎn)芯片tms320f2812 為核心的數(shù)據(jù)采集系統(tǒng),充分利用它的片內(nèi)外設(shè)adc,sci。利用其快速的轉(zhuǎn)換時間,實時地把采集的數(shù)據(jù)傳輸?shù)轿C(jī)上。12 位的高速adc 保證了采樣的快速準(zhǔn)確和同步,初步實現(xiàn)了數(shù)據(jù)的采集和存儲。數(shù)據(jù)采樣率可以通過程序?qū)崟r根據(jù)輸入信號的頻率進(jìn)行改變。
評論