2012年4月27日星期五

TMS320F2802x Errata汇总(ADC部分)

简单汇总一下TMS320F2802x的Errata情况:

本文基于Errata版本:http://www.ti.com/lit/er/sprz292j/sprz292j.pdf

1. ADC:初始化转换(ADC: Initial Conversion)

影响版本:0

问题描述:当ADC转换初始化的时候,被触发的一系列转换中,第一个转换结果不正确。

解决方法:在ADCCLK为60MHz或40MHz时,抛弃第一个转换结果;或者在版本A中,将ADCCTL2中的ADCNONOVERLAP和CLKDIV2EN置1,使得ADC转换时钟将为30MHz。

评论:在ADC中,要么丢弃每个转换序列中第一次转换结果,要么降低ADC时钟速度。

2. ADC:温度传感器最小采样窗口的需求(ADC: Temperature Sensor Minimum Sample Window Requirement)

影响版本:0,A

问题描述:当温度传感器采样选择最小的采样窗口时(6ADC时钟@60MHz,116.67ns),温度传感器转换结果与实际值有较大的误差。

解决方法:1). 采用双采样的方法——连续进行两次采样,丢弃第一次转换的结果,使用第二次转换结果。这样等效于给了采样保持器(S/H)足够的时间进行采样。2). 配置采样保持器(S/H)的窗口时间超过550ns。

评论:温度转换的时候需要较长的采样时间。

3. ADC:直流特性:线性度限制(ADC: DC Specifications: Linearity Limitation)

影响版本:0,A

问题描述:在上半部分的传递函数中,线性度随着温度的升高而下降。

解决方法:1). 将ADC时钟通过CLKDIV2EN设置为1,在60MHz的时钟下,采样速率降低为2.3MSPS,这样得到了30MHz ADC时钟和60MHz系统时钟,可以解决线性度问题。2). 现有的流水线模式可以工作在4.6MSPS@60MHz系统时钟,可以提升线性度。

评论:仍然是采样速率过快导致的ADC采样精度缺失

4. ADC:新的ADC控制位在A版中被添加进来(ADC: New ADC Control Bits Added to Revision A Silicon)

影响版本:A

问题描述:添加了新的控制位ADCCTL2@0x7101,包含CLKDIV2EN,可以使ADC时钟降低为系统时钟的1/2;ADCNONOVERLAP一个使能位,可以用来关闭采样/转换过程的重叠时间。

解决方法:无

评论:添加了新控制位用来改善糟糕的ADC性能

5. ADC:上电后不符合特性的电流消耗(ADC: Out-of-Specification Current Consumption on Power Up)

影响版本:0,A

问题描述:当系统的ADC模块首次上电后,会消耗双倍于数据手册中标明的电流(Idda),该问题持续到第一次AD转换后消失。

解决方法:在ADC初始化之后立即产生一次假的AD转换,随后电流消耗会恢复到数据手册所规定的电流。如果这段时间的电流消耗是可以接受的,则无需进行任何更改。参考代码如下:
EALLOW;

SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1; //Enable Clocks to ADC module

AdcRegs.ADCSOCFRC1.bit.SOC0 = 1; //Issue dummy conversion

asm(" rpt #19 || nop"); //Wait for conversion to propagate

AdcRegs.SOCPRICTL.bit.SOCPRIORITY = 1; //Change Priority Control to reset

AdcRegs.SOCPRICTL.bit.SOCPRIORITY = 0; //round robin pointer

EDIS;

评论:如果初始化以后没有进行转换,会一直消耗较多的电流,否则可以忽略这个问题

6. ADC: ACQPS=6 or 7时,前一次转换结果之后的14个周期的ADC结果转换(ADC: ADC Result Conversion When Sampling Ends on 14th Cycle of Previous Conversion, ACQPS = 6 or 7)

影响版本:0,A

问题描述:片内的ADC在采样阶段结束后,用13个ADC时钟周期来完成转换。随后,采样后的第14个周期会被提交给CPU,第15个周期被锁存在ADC结果寄存器中。如果下一次转换的采样阶段在前一次的第14个周期结束,CPU在结果寄存器中锁存的结果不能保证在所有条件下都是有效的。

解决方法:有几种方法可以解决这个问题。1). 由于产生问题的是ADC的采样和转换阶段,只有两个ACQPS的值会出现这个问题:6或者7,因此尽量避免使用这两个值。2). 将ADCNONOVERLAP的值(ADCCTL2的bit 1)设置为1,不会再遇到任何问题,此时可以使用任意的ACQPS的值。3). 根据系统中ADC采样的频率,用户可以判断使用ACQPS = 6或者7是否会触发这个情况;如果转换持续工作在ACQPS = 6的状态,上面的情况不会发生,因为采样结束的时候出现在当前转换的第13个周期。

评论:避免在转换的第14个周期结束采样,本来可以充分利用流水线加快采样速率。

以上是Errata涉及到的ADC的部分问题。