请教关于5438的ADC问题
采用的是序列通道模式,AD输入端使用了OPA835作电压跟随器,电压范围在0~2V,现在的问题是获得的结果不准。代码如下:
void ADC12_Init(void)
{
P6SEL |= BIT0;
ADC12CTL0 &=~ ADC12ENC;
ADC12CTL1|= ADC12CSTARTADD_8+ADC12DIV_1+ADC12SHS_0;
ADC12MCTL8|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL9|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL10|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL11|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL12|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL13|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL14|=ADC12SREF_0+ADC12INCH_0;
ADC12MCTL15|=ADC12SREF_0+ADC12INCH_0+ADC12EOS;
ADC12CTL0 = ADC12SHT1_4 + ADC12ON;
ADC12CTL1 = ADC12SSEL_1+ADC12CONSEQ_1;
ADC12CTL2|= ADC12TCOFF+ADC12RES_2;
ADC12CTL2&=~ ADC12DF+ADC12SR;
ADC12IE = ADC12IE8+ADC12IE9+ADC12IE10+ADC12IE11+ADC12IE12+ADC12IE13+ADC12IE14+ADC12IE15;
ADC12CTL0 |= ADC12ENC;
}
利用定时器TA产生的信号来启动(ADC12CTL0 |= ADC12SC;)或者停止(ADC12CTL0 &=~ ADC12SC;),使用的REF电压为VCC3.3V,且信号的频率不超过250Hz,得到的结果就是不准确,例如,在示波器上得到的电压值为1.9V,但是从ADC12MEMx的结果换算过来只有1.3V,请问出现这样的问题的原因是什么?
另外,这个ADC出现不能工作在8位和10位的模式,选择这两种工作模式,在MEM里得到的结果仍旧是12位的;以及通道0的结果与其他通道结果相差非常大,这是什么原因?
希望得到论坛里的大牛的指导,谢谢了!!