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