ADC12,速度快时读GND电平读数太大。

2019-03-24 14:57发布

我用的MCU是F5438A,主时钟是32M。ADC12的配置是 主时钟,8位分辨率,64个采样时钟,A0A1A2A3轮序; 出现的现象是: 1.当我采用以上配置,将A0直接接到DGND时,ADC的读数不为零,而是128(255/2?); 2.将分辨率改为12位,则恢复正常,扫描DGND读数时为零; 3.降低主时钟,将其改为16M时,也恢复正常,扫描DGND读数时为零; 4.提高采样时钟,无效,情况仍是将A0直接接到DGND时,ADC的读数不为零,而是128(255/2?);   现在可能的话,我不想降低主时钟或者做其他会降低ADC速率的配置,但也想他恢复正常。 请问能有其他方法不?是否我还需要配置其他比方呢? 是他转换时间不够??   谢谢 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
shushu
2019-03-25 11:18

void Init_ADC_seq(void)

{

P6SEL = 0x0F; // Enable A/D channel A0A1A2A3

ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_8;

ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1+ADC12SSEL1 ;    // Use sampling timer, single sequence // ADCCLK=MCLK,NO DIV ADC12CTL2 = ADC12RES_0; //8位的分辨率

 ADC12MCTL0 = ADC12INCH_0; // ref+=AVcc, channel = A0

ADC12MCTL1 = ADC12INCH_1; // ref+=AVcc, channel = A1

ADC12MCTL2 = ADC12INCH_2; // ref+=AVcc, channel = A2

ADC12MCTL3 = ADC12INCH_3+ADC12EOS; // ref+=AVcc, channel = A3, end seq.

 ADC12IE = 0x08; // Enable ADC12IFG.3

ADC12CTL0 |= ADC12ENC; // Enable conversions

}

可以跑32M,参考电压是AVCC 3.3V,AGND; 这配置,在我将ADC12转换分辨率设为12位时,是没有这现象的。

[ 本帖最后由 shushu 于 2012-2-21 10:34 编辑 ]

一周热门 更多>

相关问题

    相关文章