若选择外部电压参考,则需要从VREFHI/VREFLO引脚引入参考电压,此时ADC的转换范同为0~VREFHI,转换上限为参考电压值,转换结果的计算公式如下:
1.3 初始化和中断设置 使用ADC时,应进行4步初始化操作:设置ADC校准;内部各电路上电;选择内部或外部采样参考;打开ADC。一般情况下ADC校准可使用厂家设定值,调用函数Device cal()即可。 若选择默认校准值和内部参考电压,ADC的初始化程序如下:
以上设置在TI C2000系列v129版本的头文件DSP2802x_Adc.c中被编译成了函数InitAdc(),可在程序中直接调用。 ADC的每次转换完成后都可触发中断,若需要使用ADC中断,则可进行如下步骤的设置:设置中断触发时刻,可选择开始转换时触发或转换结果产生时触发;选择中断编号;设置中断产生与中断标志的关系,可选择在中断产生与中断标志状态无关或在存在中断标志时不产生中断;选择触发中断的EOC信号。 若需要在SOC2的转换结果产生后触发ADCINT1中断,且在存在中断标志时不再产生中断,配置程序如下:
在完成对ADC的初始化设置后,即可根据应用需要配置采样方式和单次转换。 {pagination} 2 顺序采样方式的实现 2.1 顺序采样方式 顺序采样是最常用的采样方式,即单次转换按照触发-采样-转换的顺序进行。顺序采样只要按需求配置SOC即可。 ADC中共有16个SOCCx,x表示编号为0~15。每个SOC可没置由不同或相同的触发源触发,对任意采样通道进行可调时间的采样和转换。用户在设置好3个配置项后,ADC按照SOC0~SOC15的默认优先级进行转换。SOC的优先级也可通过优先级控制寄存器SOCPRICTL进行设置。 顺序采样方式的时序可以参见TI的相关文献。 在实际应用中,通常可设置多个SOC对同一通道进行采样,并对采样结果取平均值,即可有效地消除模拟信号中高频噪声的影响,提高A/D转换的精度。 若要在收到定时器Timer0的触发信号后按照通道ADCINA4、ADCINA2、ADCINA6的顺序进行转换,SOC的配置程序如下:
ADCINA4通道的采样结果存储在ADCRESULT0中,ADCINA2通道采样结果存储在ADCRESULT1中,ADCINA6的采样结果存储在ADCRESULT2中。 此外,需要指出的是,此类ADC的采样通道在空闲时也可以作为普通I/O端口使用,这也是与其他系列不同的地方。 2.2 采样和转换时间的计算 通过ADCSOCxCTL寄存器的ACQPS位,可设置采样窗口大小,即采样时间。采样时间设置的基本单位为一个时钟周期,ACQPS可设置为6~63的任意数值,采样时间可通过如下公式计算: 采样时间=(ACQPS+1)×时钟周期 转换时间=13×时钟周期 A/D转换过程的总时间=(ACQPS+14)×时钟周期 {pagination} 3 同步采样方式的实现 在某些应用中,为保证两个信号的采样间隔最小,常采用同步采样的方式。Piccolo系列MCU的ADC内部具有双采样保持电路,这使对双通道的同步采样成为可能。 在同步采样模式中,偶数编号的SOCx与其下一位奇数编号的SOCx组成一个采样对,例如SOC0和SOC1、SOC2和SOC3。8位寄存器ADCSAMPLEM ODE的一位SIMULENx控制一个采样对的使能,其编号与采样对的偶数编号相对应,例如SIMULEN0对应SOC0和SOC1采样对。 同步采样模式有以下规则: ①采样对中任意一个SOCx的触发都有效; ②只有编号相同的A/B通道才能实现一对同步采样; ③A/B通道的信号会被同时采样,但A通道会优先转换; ④A通道转换结束后可触发偶数编号的EOx,B通道转换结束后可触发奇数编号的EOCx; ⑤A通道转换的转换结果会被储存在偶数编号的ADCRESULTx中,B通道转换的转换结果会被存储在奇数编号的ADCRESULTx中; ⑥在进行多对同步采样时,同样遵守SOCx的优先级设置。 对于PWM1.ADCSOCA触发的同步采样,具体的配置方式如下:
其工作过程为:在PWM1送出ADCSOCA触发信号后,ADCINA2通道和ADCINB2通道会同时开始采样,采样完成后,A通道会优先转换,结果存储在ADCRESULT0寄存器中。同时,按寄存器ADCCTL1中INTPULSEPOS位的配置,EOC0脉冲会在转换开始或转换完成时触发。随后B通道开始转换,结果存储在ADCRESULT1寄存器中,并按相同规律触发EOC1脉冲。 结语 Piccolo系列微处理器内置ADC具有采样时间可调、转换快速、准确度高和配置简单的特点。本文详细介绍了其初始化、中断、触发源和通道选择的配置过程,以及采样值、采样时间等参数的计算方法,并给出了实现顺序采样方式和同步采样方式的例程。通过实验验证,例程均可实现其功能,为该系列处理器的实际应用奠定了良好基础。