我的购物车(0)

ADC12采样读取数据错误

作者:amphenol ,2018/12/12 17:25:37 发布     举报
    (880) (0) (0) (2)
  • 芯片:MSP430FR6972

    IDE:I***.14

    问题描述:

    我的程序平时在一直采集电流,接收到读取电池电压指令后关闭采样定时器,重新配置ADC通道采集电池电压。调试过程发现采集完后读取的电压值老是不正确,进入IAR调试定位到temp = ADC12MEM0;这一句发现此时ADC12MEM0的值是对的,但是全速跑然后将断电定位到Indicator_Status.Voltage_Bat = temp;这一句发现temp值不正确,通过调试框看寄存器值ADC12MEM0值却对的。这是什么原因导致的呢?

    相关程序:

    {

      TimerB0_Stop();  //暂停电流采样
      For_Real_Sample();
      while(ADC12IFGR0 & ADC12IFG1 == 0);
      temp = ADC12MEM0;//这里

      Indicator_Status.Voltage_Bat = temp;

    }

    void For_Real_Sample(void)
    {
     PowerSwitch(ADC_CAP,ENABLE); 
     PowerSwitch(ADC_BAT,ENABLE);
     while(REFCTL0 & REFGENBUSY);                 // If ref generator busy, WAIT
     REFCTL0 |= REFVSEL_2 | REFON;                // Select internal ref = 2.5V, Internal Reference ON
     
     ADC12CTL0 &= ~ADC12ENC;
     ADC12CTL0 = ADC12ON | ADC12SHT0_2 | ADC12MSC;       // Turn on ADC12, 采样周期64 ADC12CLK,采样保持时间尽量长
     ADC12CTL1 = ADC12SHP |ADC12SHS_0 | ADC12CONSEQ_1 | ADC12SSEL_3 | ADC12PDIV_1; // ADC12SC触发采样,序列通道采样 0-1,SMCLK/4
     ADC12MCTL0 = ADC12VRSEL_1 | ADC12INCH_14;     //ADC_BAT
     ADC12MCTL1 = ADC12VRSEL_1 | ADC12INCH_15 | ADC12EOS; //ADC_CAP
     ADC12IER0 = 0;           //关闭中断
     
     while(!(REFCTL0 & REFGENRDY));                // Wait for reference generator to settle 
     ADC12CTL0 |= ADC12ENC + ADC12SC;        
    }


标签:

MSP430 16 位超低功耗 MCU

下一篇:没有了
共有2条网友评论
gmailcom 发表于2018/12/12 17:26:35
建议**下采集电池电压的外部电路,怀疑你的adc阻抗不匹配
有帮助(0)没帮助(0)引用此答案
EverHuang 发表于2018/12/12 17:26:54
就这个我怀疑是之前的ADC采样还在执行,导致本次读取到的转换值不对。
有帮助(0)没帮助(0)引用此答案
1/1
文明上网,理性发言
专题版主
申请成为版主
  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

最新分享上传与展示原则:
1、首先展示的产品必须是电子业内的作品;
2、对业内人士有学习的意义;
3、作品可以以广告的形式出现,若广告目的太
强烈,不予展示;
4、带病毒性的文件,不予展示,若严重,还会
屏蔽会员IP;
5、任何的分享都会通过系统管理员的审核,审
核时间,通常不超过24小时;