2092|1

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430f5310 ADC多通道采集问题 [复制链接]

        你好,我在使用ADC多通道采集时遇到的问题,首先,我使用的ADC 4通道10位采集(A3,A2,A1,A0),采用内部基准电压2.5v,利用DMA取出ADC转换数据。我的问题是,在A3电压为0时,为什么采集的AD转换值 为110.理论上应该是0,才对,不知道问题出在什么地方,请给出帮助。谢谢


//******************************************************************************
#include

unsigned int ADC_Result[4];              

int main(void)
{
  WDTCTL = WDTPW | WDTHOLD;                 // Stop WDT

  // Configure ADC10
  ADC10CTL0 = ADC10SHT_2 | ADC10MSC | ADC10ON;// 16ADCclks, MSC, ADC ON
  ADC10CTL1 = ADC10SHP | ADC10CONSEQ_1;     // sampling timer, s/w trig.,single sequence
  ADC10CTL2 |= ADC10RES;                   // 10-bit resolution
  ADC10MCTL0 = ADC10SREF_1 |ADC10INCH_3;                 // A0,A1,A2,A3(EoS), AVCC reference

  while(REFCTL0 & REFGENBUSY);              // If ref generator busy, WAIT                                          
  REFCTL0 |= REFVSEL_2|REFON;               // Select internal ref = 2.5V

  // Configure DMA0 (ADC10IFG trigger)
  DMACTL0 = DMA0TSEL_24;                    // ADC10IFG trigger
  __data16_write_addr((unsigned short) &DMA0SA,(unsigned long) &ADC10MEM0);
                                            // Source single address  
  __data16_write_addr((unsigned short) &DMA0DA,(unsigned long) &ADC_Result[0]);
                                            // Destination array address  
  DMA0SZ = 0x04;                            // 4 conversions
  DMA0CTL = DMADT_4 | DMADSTINCR_3  | DMAEN | DMAIE;
                                            // Rpt, inc dest, byte access,
                                            // enable int after seq of convs   
  while(1)
  {
    while (ADC10CTL1 & ADC10BUSY);          // Wait if ADC10 core is active
    ADC10CTL0 |= ADC10ENC | ADC10SC;        // Sampling and conversion start
    __bis_SR_register(CPUOFF | GIE);        // LPM0, ADC10_ISR will force exit
    __delay_cycles(5000);                   // Delay between sequence convs   
    __no_operation();                       // BREAKPOINT; check ADC_Result
  }
}

#pragma vector=DMA_VECTOR
__interrupt void DMA0_ISR (void)

{
  switch(__even_in_range(DMAIV,16))
  {
    case  0: break;                         // No interrupt
    case  2:
      // sequence of conversions complete
      __bic_SR_register_on_exit(CPUOFF);    // exit LPM
      break;                                // DMA0IFG
    case  4: break;                         // DMA1IFG
    case  6: break;                         // DMA2IFG
    case  8: break;                         // Reserved
    case 10: break;                         // Reserved
    case 12: break;                         // Reserved
    case 14: break;                         // Reserved
    case 16: break;                         // Reserved
    default: break;
  }   
}


最新回复

在A3电压为0时,实际测量值是多少。0V?A3的电压,不同,得到的数据是否会变化。接近2.5V时,数据是否基本正确。  详情 回复 发表于 2016-4-26 20:53
 
点赞 关注

回复
举报

3471

帖子

13

TA的资源

五彩晶圆(高级)

沙发
 
在A3电压为0时,实际测量值是多少。0V?A3的电压,不同,得到的数据是否会变化。接近2.5V时,数据是否基本正确。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表