[求助] MSP430F149单片机ADC12序列通道多次转换问题

DQHWX   2016-10-8 19:28 楼主
初学430单片机,在调试使用ADC12模块时遇到几个小问题,请大家帮忙看一下,谢谢! 以下为ADC初始化函数
  1. void ADC_Init()
  2. {
  3. P6SEL = 0x0F; // Enable A/D channel inputs
  4. ADC12CTL0 = ADC12ON+MSC+SHT0_8; // Turn on ADC12, extend sampling time to avoid overflow of results
  5. ADC12CTL1 = ADC12SSEL_2+CSTARTADD_0+SHP+CONSEQ_3;// Use sampling timer, repeated sequence
  6. ADC12MCTL0 =SREF_0 + INCH_0; // ref+=AVcc, channel = A0
  7. ADC12MCTL1 =SREF_0 + INCH_1+EOS; // ref+=AVcc, channel = A1, end seq.
  8. ADC12IE = 0x02; // Enable ADC12IFG.1
  9. ADC12CTL0 |= ENC; // Enable conversions
  10. }
以下为ADC中断服务函数内容
  1. #pragma vector=ADC_VECTOR
  2. __interrupt void ADC12ISR(void)
  3. {
  4. static unsigned int index = 0;
  5. A0Results[index] = ADC12MEM0; // Move A0 results, IFG is cleared
  6. A1Results[index] = ADC12MEM1; // Move A1 results, IFG is cleared
  7. if(index++ >= (Num_of_Results-1))
  8. {
  9. ADC_Flag = 1; //ADC取样完成标志位置位
  10. index = 0; //清零索引
  11. }
  12. }
编译环境:IAR5.50.2 A0,A1作为ADC输入,基准源AVcc(3.3v) ,ADC为序列通道多次转换,Num_of_Results设置为5 A0悬空,A1接Vcc时,显示转换后电压3.15V A0悬空,A1接GND时,显示电压0.45V A0接Vcc,A1接电位器中间引脚,电位器两端(最大阻值)引脚串接在Vcc和GND之间 电位器调整过程中,A1电压值在0.43V-3.3V之间,A0电压值也会变,在3.3V-2.6V之间 如果把Num_of_Results 增大为 32 A0悬空,A1接Vcc时,显示转换后电压3.25V A0悬空,A1接GND时,显示电压0.05V A0接Vcc,A1接电位器中间引脚,电位器两端(最大阻值)引脚串接在Vcc和GND之间 电位器调整过程中,A1电压值在0.06V-3.3V之间,A0电压值在3.3V-3.2V之间 {输出时会对A0Results数组取平均值再转化成电压值} 这两种情况下的差别仅是因为数据的多少造成的吗? 还有这种看起来好像“通道间能相互影响”的原因是什么? 另外已经试过单通道单次,序列通道单次,ADC取样值均能在0.04--3.3V之间变化,且A0,A1互不影响,只有序列通道多次转换会有这种“通道间能相互影响”的现象。 还有一个为偶然发现就是当Num_of_Results 为1的时候,也就是序列通道多次取样设置成一次取样,A1,A0输出竟然完全一样,这是为什么? 说的有些啰嗦,感谢知道的dalao帮忙解答 本帖最后由 DQHWX 于 2016-10-8 19:28 编辑

回复评论 (3)

不知道答案,帮楼主顶一下
点赞  2016-10-9 11:17
楼主直接贴个电路图上来嘛。好看点
点赞  2016-10-9 11:21

你好  楼主  你的问题解决了没? 我在调试过程中也遇到这种问题

点赞  2020-3-28 09:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复