0 弁言
DSP芯片在旗子暗记处理方面具有独特的上风,其采取了前辈的哈佛总线构造,从而使数据的吞吐率提高一倍[1-3]。本文选择TI公司的TMS320F2812为系统的核心,它是一款32位的DSP芯片,TMS320F2812具有12位ADC模块,理论上采样精度可以达到9位,约为 0.2%旁边,但在实际运用过程中并不让人满意,采样值和真实值之间的相对偏差很大,有时乃至超过15%,这会给实际运用带来很大的麻烦[4]。为了提高TMS320F2812的采样精度,本文采取ADC校正算法进行补偿,经由实际验证,取得了很好的效果。
1 ADC的事情办法选择
TMS320F2812的ADC模块共有16个采样通道,可分为两组:一组是ADCINA0~ADCINA7,另一组ADCINB0~ADCINB7[5-6]。ADC模块的时钟频率最高可配置为25 MHz,采样频率最高为12.5 MS/s,也便是说每秒最高能完成12.5个百万次采样,内置2个采样保持器S/H-A、S/H-B和2个序列发生器SEQ1、SEQ2;基于上述构造,选择不同的采样办法和不同的序列发生器模式,就有不同的事情办法,以是ADC共有4种事情办法,每种事情办法都有各自的特点,须要根据实际须要进行选择。
根据本文校正须要,DSP须要同时采集两路精准电源旗子暗记,为了担保两路旗子暗记的实时性哀求,本文选择级联模式下的并发采样的事情办法,一次采集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模块的转换特性是线性的,可以通过适当的方法进行补偿。ADC的转换特性曲线如图1所示。
从图中可以看出,空想的ADC转换特性曲线并不存在增益偏差和偏移偏差,以是可以求得仿照输入量X和数字量输出量Y的对应函数关系,一条过零点的正比例函数,该直线恒过(34 095)点,4 095是结果缓冲寄存器的值右移4位后0x0FFF,但实际中由于增益偏差和偏移偏差的存在,仿照量和数字的对应关系为:
Y=KX+b(1)
式(1)中的K和b是未知量,只哀求得K和b的值,那么通过ADC转换结果缓冲寄存器得到的数据Y,就可以打算呈现实的输入电压值X。对付这个二元一次方程,只要找到如式(2)所示的两个方程组就可以求得K和b。
为了能求得K和b的值,可以在硬件电路中增加两路精准电源作为参考电压,本文供应给ADCINA0和ADCINB0采样通道,也便是X1和X2,通过读取ADCINA0和ADCINB0结果缓冲寄存器可以得到Y1和Y2,通过式(2)可得到K和b的值,如式(3)所示:
以是实际的输入值为式(4):
3 ADC校正算法
由ADC校正事理可以知道,只要在硬件电路上供应两路精准电压就可以求得式(3)的K和b值,由这两个参数通过式(4)去校正其他通道的采样值。本文ADC共采集6路旗子暗记,两路校正旗子暗记(ADCINA0、ADCINB0)和4路待被校正旗子暗记(ADCINA1、ADCINB1、ADCINA2、ADCINB2),对每个通道同时采样N次,对结果进行排序,去掉最大值和最小值,取中间N/2均匀值,每个均匀值作为采样结果等待处理,对参考通道ADCINA0和ADCINB0的结果进行打算,求得增益K和偏移b,为了更好地测试其可行性,本文取N即是8,在实际运用中可以将N取大些以便于提高精准度。算法流程如图2所示。
4 结果验证
为了验证ADC校正算法的有效性,本文在硬件电路设计中加入了两路精准电源作为参考电压ADCINA0= 0.502 V、ADCINB0=1.801 V,软件的调试选用CCS3.3,调试完成后同时给ADCINA1、ADCINB1、ADCINA2、ADCINB2加上不同的电压,然后打开CCS3.3软件下的watch windows不雅观察变量的值,可以得到表1的数据。
在不雅观察watch windows下的变量值时,数据位会一直地变革和刷新,记录一次采样的值可能不准确,以是可以多测几次。从表中数据可以看出,ADC校正算法良好,校正后的结果与真实值很靠近。
5 结论
本文采取了ADC校正算法对TMS320F2812数据采集进行校正,在硬件电路中设计了两路精准的参考电压,为软件校正供应硬件支持。通过实验证明,ADC校正算法提高了TMS320F2812数据采集的精准度,办理了在实际运用中理论值和实际值的偏差问题。
参考文献
[1] 张雄伟,陈量,徐光辉.DSP芯片的事理与开拓运用[M].北京:电子工业出版社,1997.
[2] 徐科军,张涵,陈智渊,TMS320X281x DSP事理与运用[M].北京:北京航空航天算夜学出版社,2006.
[3] 周霖.掌握工程技能运用[M].北京:国防工业出版社,2005.
[4] 顾卫钢.手把手教你学DSP基于TMS320X281x[M].北京:北京航空航天算夜学出版社,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.