周宇,胡昕睿,曾宇航,邓力,刘和平
(重庆大学 电气工程学院,重庆400044)
周宇,胡昕睿,曾宇航,邓力,刘和平
(重庆大学 电气工程学院,重庆400044)
以TMS320F28027为代表的TI C28x Piccolo系列微处理器采用了以SOC为基础的ADC,其配置方式不同于TI其他系列MCU基于Sequencer的ADC。在TMS320F28027的基础上,详细介绍了其ADC的工作原理,以及顺序采样和同步采样两种采样方式的配置方法。
TI C28x Piccolo系列微处理器;基于SOC的ADC;顺序采样;同步采样
TI C28x Piccolo系列微处理器,因其低功耗、高性能的特点,被广泛应用在太阳能逆变器、白色家电设备、混合动力汽车电池、电力线通信和 LED照明等控制领域。A/D 转换实现了模拟量到数字量的转换,是控制应用中必不可少的环节之一。A/D转换的精度和速度直接关系到控制系统的准确性和快速性。
相比于TI其他类型微处理器,TI C28x Piccolo系列内部集成了新一代的基于SOC的ADC。此ADC的内核包含一个12位转换器,此转换器由两个采样保持电路供源。这两个采样保持电路可同时或者顺序采样。对于用户来讲,可以很容易地从一个单触发来创建一系列的转换。但此ADC在寄存器设置和配置方式上与基于Sequencer 的ADC有很大的不同,主要体现在控制寄存器ADCCTRL的数量和功能位设置、中断和工作方式的配置方式等方面,更新后的寄存器设置可以参见TI的相关文献[5]。
1.1 工作原理
对基于SOC的ADC,其核心在于对16个SOC(Start Of Conversion)的配置,单个SOC对应单个A/D转换过程,SOC的配置数量取决于应用中需要A/D转换的数目。每个SOC中都有三种配置项:启动转换的触发源、采样通道以及采样窗口时间。
其中,触发源可选择软件、PWM、GPIO,以及CPU定时器等多种触发方式,采样通道可根据采样方式的不同选择ADCINA1~8、ADCINB1~8共16个或8对采样通道,采样窗口时间也可根据需要设置。
对于单个转换,ADC的工作过程为:在收到相应的触发信号后,即开始按设置的采样窗口时间对指定通道进行采样,随后,采样值与参考电压进行比较,得到转换值。同时,在转换开始时或转换完成时触发与SOC编号对应的EOC(End Of Conversion)脉冲,标志转换结束。转换的结果存储在与SOC编号对应的ADCRESULT寄存器中。
1.2 转换结果的计算
若在初始化中选择内部参考,ADC将会选择其内部的带隙电路产生参考电压。此时ADC的转换范围为0~3.3 V,转换结果的计算公式如下:
若选择外部电压参考,则需要从VREFHI/VREFLO引脚引入参考电压,此时ADC的转换范围为0~VREFHI,转换上限为参考电压值,转换结果的计算公式如下:
1.3 初始化和中断设置
使用ADC时,应进行4步初始化操作:设置ADC校准;内部各电路上电;选择内部或外部采样参考;打开ADC。一般情况下ADC校准可使用厂家设定值,调用函数Device_cal()即可。
若选择默认校准值和内部参考电压,ADC的初始化程序如下:
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1;
(*Device_cal)();
//调用厂家设定的校准值
AdcRegs.ADCCTL1.bit.ADCBGPWD=1; //带隙电路上电
AdcRegs.ADCCTL1.bit.ADCREFPWD=1; //参考电路上电
AdcRegs.ADCCTL1.bit.ADCPWDN=1; //采样电路上电
AdcRegs.ADCCTL1.bit.ADCREFSEL=0; //选择内部参考
AdcRegs.ADCCTL1.bit.ADCENABLE=1; //打开ADC
EDIS;
以上设置在TI C2000系列v129版本的头文件DSP2802x_Adc.c中被编译成了函数InitAdc(),可在程序中直接调用。
ADC的每次转换完成后都可触发中断,若需要使用ADC中断,则可进行如下步骤的设置:设置中断触发时刻,可选择开始转换时触发或转换结果产生时触发;选择中断编号;设置中断产生与中断标志的关系,可选择在中断产生与中断标志状态无关或在存在中断标志时不产生中断;选择触发中断的EOC信号。
若需要在SOC2的转换结果产生后触发ADCINT1中断,且在存在中断标志时不再产生中断,配置程序如下:
EALLOW;
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;
//产生转换结果后触发中断
AdcRegs.INTSEL1N2.bit.INT1E=1; //选择ADCINT1中断
AdcRegs.INTSEL1N2.bit.INT1CONT=0;
//设置中断产生与标志的关系
AdcRegs.INTSEL1N2.bit.INT1SEL=2; //中断由EOC2触发
EDIS;
在完成对ADC的初始化设置后,即可根据应用需要配置采样方式和单次转换。
2.1 顺序采样方式
顺序采样是最常用的采样方式,即单次转换按照触发-采样-转换的顺序进行。顺序采样只要按需求配置SOC即可。
ADC中共有16个SOCx,x表示编号为0~15。每个SOC可设置由不同或相同的触发源触发,对任意采样通道进行可调时间的采样和转换。用户在设置好3个配置项后,ADC按照SOC0~SOC15的默认优先级进行转换。SOC的优先级也可通过优先级控制寄存器SOCPRICTL进行设置。
顺序采样方式的时序可以参见TI的相关文献[5]。
在实际应用中,通常可设置多个SOC对同一通道进行采样,并对采样结果取平均值,即可有效地消除模拟信号中高频噪声的影响,提高A/D转换的精度。
若要在收到定时器Timer0的触发信号后按照通道ADCINA4、ADCINA2、ADCINA6的顺序进行转换,SOC的配置程序如下:
EALLOW;
AdcRegs.ADCSOC0CTL.bit.CHSEL=4;
//SOC0选择ADCINA4通道
AdcRegs.ADCSOC1CTL.bit.CHSEL=2;
//SOC1选择ADCINA2通道
AdcRegs.ADCSOC2CTL.bit.CHSEL=6;
//SOC2选择ADCINA6通道
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=1;
//SOC0由Timer0触发
AdcRegs.ADCSOC1CTL.bit.TRIGSEL=1;
//SOC1由Timer0触发
AdcRegs.ADCSOC2CTL.bit.TRIGSEL=1;
//SOC2由Timer0触发
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;
//SOC0采样保持窗为6
AdcRegs.ADCSOC1CTL.bit.ACQPS=6;
//SOC1采样保持窗为6
AdcRegs.ADCSOC2CTL.bit.ACQPS=6;
//SOC2采样保持窗为6
EDIS;
ADCINA4通道的采样结果存储在ADCRESULT0中,ADCINA2通道采样结果存储在ADCRESULT1中,ADCINA6的采样结果存储在ADCRESULT2中。
此外,需要指出的是,此类ADC的采样通道在空闲时也可以作为普通I/O端口使用,这也是与其他系列不同的地方。
2.2 采样和转换时间的计算
通过ADCSOCxCTL寄存器的ACQPS位,可设置采样窗口大小,即采样时间。采样时间设置的基本单位为一个时钟周期,ACQPS可设置为6~63的任意数值,采样时间可通过如下公式计算:
采样时间=(ACQPS+1)×时钟周期
转换时间=13×时钟周期
A/D转换过程的总时间=(ACQPS+14)×时钟周期
在某些应用中,为保证两个信号的采样间隔最小,常采用同步采样的方式。Piccolo系列MCU的ADC内部具有双采样保持电路,这使对双通道的同步采样成为可能。
在同步采样模式中,偶数编号的SOCx与其下一位奇数编号的SOCx组成一个采样对,例如SOC0和SOC1、SOC2和SOC3。8位寄存器ADCSAMPLEMODE的一位SIMULENx控制一个采样对的使能,其编号与采样对的偶数编号相对应,例如SIMULEN0对应SOC0和SOC1采样对。
同步采样模式有以下规则:
① 采样对中任意一个SOCx的触发都有效;
② 只有编号相同的A/B通道才能实现一对同步采样;
③ A/B通道的信号会被同时采样,但A通道会优先转换;
④ A通道转换结束后可触发偶数编号的EOCx,B通道转换结束后可触发奇数编号的EOCx;
⑤ A通道转换的转换结果会被储存在偶数编号的ADCRESULTx中,B通道转换的转换结果会被存储在奇数编号的ADCRESULTx中;
⑥ 在进行多对同步采样时,同样遵守SOCx的优先级设置。
对于PWM1.ADCSOCA触发的同步采样,具体的配置方式如下:
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0=1;
//同步采样模式打开
AdcRegs.ADCSOC0CTL.bit.CHSEL=2;
//通道选择ADCINA2/ADCINB2
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=5;
//触发源选择ePWM1.ADCSOCA
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;
//采样保持窗大小设置为6
其工作过程为:在PWM1送出ADCSOCA触发信号后,ADCINA2通道和ADCINB2通道会同时开始采样,采样完成后,A通道会优先转换,结果存储在ADCRESULT0寄存器中。同时,按寄存器ADCCTL1中INTPULSEPOS位的配置,EOC0脉冲会在转换开始或转换完成时触发。随后B通道开始转换,结果存储在ADCRESULT1寄存器中,并按相同规律触发EOC1脉冲。工作时序图略——编者注。
Piccolo系列微处理器内置ADC具有采样时间可调、转换快速、准确度高和配置简单的特点。本文详细介绍了其初始化、中断、触发源和通道选择的配置过程,以及采样值、采样时间等参数的计算方法,并给出了实现顺序采样方式和同步采样方式的例程。通过实验验证,例程均可实现其功能,为该系列处理器的实际应用奠定了良好基础。
[1] 刘和平,严利平,张学锋,等TMS320LF240xDSP结构、原理及应用[M].北京:北京航空航天大学出版社,2002.
[2] 刘和平.数字信号控制器原理及应用-基于TMS320F2808[M].北京:北京航空航天大学出版社,2011.
[3] 刘和平,邓力,江渝,等.数字信号处理器原理、结构及应用基础-TMS320LF28x[M].北京:机械工业出版社,2007.
[4] 刘和平. DSP原理及电机控制应用-基于TMS320LF240x系列[M].北京:北京航空航天大学出版社,2006.
[5] Texas Instruments. TMS320x2802x, 2803x Piccolo Analog-to-Digital Converter (ADC) and Comparator. Reference Guide, 2009.
[6] 赵宇萍,谢拴勤,郭晓康. TMS320C28x模数转换器的精度校正[J].单片机与嵌入式系统应用,2005(8):76-77.
[7] 肖琴,常越. MSP430中模数转换器的使用方法[J].单片机与嵌入式系统应用,2003(5):73-74.
[8] 吕锋,李玮.几种模数转换技术的分析比较[J].单片机与嵌入式系统应用,2002(6):10-13.
Zhou Yu, Hu Xinrui, Zeng Yuhang, Deng Li, Liu Heping
(School of Electrical Engineering, Chongqing University, Chongqing 400044, China)
Contrary to previous ADC types, the ADC on TI C28x Piccolo series MCU is not sequencer-based but SOC-based, which has a quite difference on setting methods. Based on TMS320F28027, one of the typical MCU of Piccolo series is introduced in detail, and the examples of sequential sampling mode and simultaneous sampling mode are given.
TI C28x Piccolo series MCU; ADC based on SOC; sequential sampling; simultaneous sampling
TN792
A
迪娜
2013-10-29)