摘 要: 針對TMS320F2812在信息采集中存在的精度不夠,,采樣值與真實值偏離過大的問題,,本文采用了一種ADC校正算法,可以實現(xiàn)對ADC存在的增益誤差和偏移誤差進行補償,,結(jié)合簡易的硬件電路,,成功實現(xiàn)了對ADC采樣精度的補償。
關(guān)鍵詞: TMS320F2812,;ADC校正算法,;增益誤差;偏移誤差
0 引言
DSP芯片在信號處理方面具有獨特的優(yōu)勢,,其采用了先進的哈佛總線結(jié)構(gòu),,從而使數(shù)據(jù)的吞吐率提高一倍[1-3]。本文選擇TI公司的TMS320F2812為系統(tǒng)的核心,,它是一款32位的DSP芯片,,TMS320F2812具有12位ADC模塊,理論上采樣精度可以達(dá)到9位,,約為 0.2%左右,,但在實際應(yīng)用過程中并不讓人滿意,采樣值和真實值之間的相對誤差很大,,有時甚至超過15%,,這會給實際應(yīng)用帶來很大的麻煩[4]。為了提高TMS320F2812的采樣精度,,本文采用ADC校正算法進行補償,,經(jīng)過實際驗證,取得了很好的效果,。
1 ADC的工作方式選擇
TMS320F2812的ADC模塊共有16個采樣通道,,可分為兩組:一組是ADCINA0~ADCINA7,,另一組ADCINB0~ADCINB7[5-6]。ADC模塊的時鐘頻率最高可配置為25 MHz,,采樣頻率最高為12.5 MS/s,,也就是說每秒最高能完成12.5個百萬次采樣,內(nèi)置2個采樣保持器S/H-A,、S/H-B和2個序列發(fā)生器SEQ1,、SEQ2;基于上述結(jié)構(gòu),,選擇不同的采樣方式和不同的序列發(fā)生器模式,,就有不同的工作方式,所以ADC共有4種工作方式,,每種工作方式都有各自的特點,,需要根據(jù)實際需要進行選擇。
根據(jù)本文校正需要,,DSP需要同時采集兩路精準(zhǔn)電源信號,,為了保證兩路信號的實時性要求,本文選擇級聯(lián)模式下的并發(fā)采樣的工作方式,,一次采集2個通道,,可以保證兩路信號的實時性要求,ADC初始化程序如下:
void InitAdc(void)
{
unsigned int i,;
AdcRegs.ADCTRL1.bit.RESET=1,;
NOP;
AdcRegs.ADCTRL1.bit.RESET=0,;
AdcRegs.ADCTRL1.bit.SUSMOD=3,;
AdcRegs.ADCTRL1.bit.ACQ_PS=0;
AdcRegs.ADCTRL1.bit.CPS=0,;
AdcRegs.ADCTRL1.bit.CONT_RUN=0;
AdcRegs.ADCTRL1.bit.SEQ_CASC=1,;
AdcRegs.ADCTRL3.bit.ADCBGRFDN=3,;
for(i=0;i<10000,;i++)NOP,;
AdcRegs.ADCTRL3.bit.ADCPWDN=1;
for(i=0,;i<5000,;i++)NOP;
AdcRegs.ADCTRL3.bit.ADCCLKPS=15,;
AdcRegs.ADCTRL3.bit.SMODE_SEL=1,;
AdcRegs.MAX_CONV.bit.MAX_CONV=5,;
AdcRegs.CHSELSEQ1.bit.CONV00=0x0;
AdcRegs.CHSELSEQ1.bit.CONV01=0x1,;
AdcRegs.CHSELSEQ1.bit.CONV01=0x2,;
…
}
2 ADC校正原理
ADC模塊的誤差不僅包括器件本身特性引起的零點、增益,、非線性誤差,,這些因素很難通過措施補償,但ADC模塊的轉(zhuǎn)換特性是線性的,,可以通過適當(dāng)?shù)拇胧┻M行補償,。ADC的轉(zhuǎn)換特性曲線如圖1所示。
從圖中可以看出,,理想的ADC轉(zhuǎn)換特性曲線并不存在增益誤差和偏移誤差,,所以可以求得模擬輸入量X和數(shù)字量輸出量Y的對應(yīng)函數(shù)關(guān)系,一條過零點的正比例函數(shù),,該直線恒過(34 095)點,,4 095是結(jié)果緩沖寄存器的值右移4位后0x0FFF,但實際中由于增益誤差和偏移誤差的存在,,模擬量和數(shù)字的對應(yīng)關(guān)系為:
Y=KX+b(1)
式(1)中的K和b是未知量,,只要求得K和b的值,那么通過ADC轉(zhuǎn)換結(jié)果緩沖寄存器得到的數(shù)據(jù)Y,,就可以計算出實際的輸入電壓值X,。對于這個二元一次方程,只要找到如式(2)所示的兩個方程組就可以求得K和b,。
為了能求得K和b的值,,可以在硬件電路中增加兩路精準(zhǔn)電源作為參考電壓,本文提供給ADCINA0和ADCINB0采樣通道,,也就是X1和X2,,通過讀取ADCINA0和ADCINB0結(jié)果緩沖寄存器可以獲得Y1和Y2,通過式(2)可獲得K和b的值,,如式(3)所示:
所以實際的輸入值為式(4):
3 ADC校正算法
由ADC校正原理可以知道,,只要在硬件電路上提供兩路精準(zhǔn)電壓就可以求得式(3)的K和b值,由這兩個參數(shù)通過式(4)去校正其他通道的采樣值,。本文ADC共采集6路信號,,兩路校正信號(ADCINA0、ADCINB0)和4路待被校正信號(ADCINA1,、ADCINB1,、ADCINA2、ADCINB2),,對每個通道同時采樣N次,,對結(jié)果進行排序,,去掉最大值和最小值,取中間N/2平均值,,每個平均值作為采樣結(jié)果等待處理,,對參考通道ADCINA0和ADCINB0的結(jié)果進行計算,求得增益K和偏移b,,為了更好地測試其可行性,,本文取N等于8,在實際應(yīng)用中可以將N取大些以便于提高精準(zhǔn)度,。算法流程如圖2所示,。
4 結(jié)果驗證
為了驗證ADC校正算法的有效性,本文在硬件電路設(shè)計中加入了兩路精準(zhǔn)電源作為參考電壓ADCINA0= 0.502 V,、ADCINB0=1.801 V,,軟件的調(diào)試選用CCS3.3,調(diào)試完成后同時給ADCINA1,、ADCINB1,、ADCINA2、ADCINB2加上不同的電壓,,然后打開CCS3.3軟件下的watch windows觀察變量的值,,可以得到表1的數(shù)據(jù)。
在觀察watch windows下的變量值時,,數(shù)據(jù)位會不停地變化和刷新,,記錄一次采樣的值可能不準(zhǔn)確,所以可以多測幾次,。從表中數(shù)據(jù)可以看出,,ADC校正算法良好,校正后的結(jié)果與真實值很接近,。
5 結(jié)論
本文采用了ADC校正算法對TMS320F2812數(shù)據(jù)采集進行校正,,在硬件電路中設(shè)計了兩路精準(zhǔn)的參考電壓,為軟件校正提供硬件支持,。通過實驗證明,,ADC校正算法提高了TMS320F2812數(shù)據(jù)采集的精準(zhǔn)度,解決了在實際應(yīng)用中理論值和實際值的偏差問題,。
參考文獻(xiàn)
[1] 張雄偉,,陳量,,徐光輝.DSP芯片的原理與開發(fā)應(yīng)用[M].北京:電子工業(yè)出版社,,1997.
[2] 徐科軍,張涵,,陳智淵,,TMS320X281x DSP原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,,2006.
[3] 周霖.控制工程技術(shù)應(yīng)用[M].北京:國防工業(yè)出版社,2005.
[4] 顧衛(wèi)鋼.手把手教你學(xué)DSP基于TMS320X281x[M].北京:北京航空航天大學(xué)出版社,,2011.
[5] Texas Instruments. TMS320F28x analog to digital converter(ADC) reference guide[Z]. 2003.
[6] Texas Instruments. TMS320x281x,, 280x serial communications interface(SCI)reference guide (Rev.B)[Z].2004.