msp430内部温度传感器的问题

2019-03-24 09:58发布

最近遇到个问题,我用msp430内部温度传感器测温,用仿真器调试,如果不接外部电源,直接仿真器供电的话,可以正确采集,但是外接外部电源的话,采集的的值一直是4095,不知道是什么原因,求大哥大姐们指导一下,非常感谢,还有就是,同一个ADC12程序,下载到不同的msp430芯片,采集的原始值也不一样。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
541873558
2019-03-25 09:39
qiushenghua 发表于 2015-7-28 10:34
内置温度传感器不同芯片参数略有差异。在info_A区域存在温度校准参数的。
电源不同正常情况下是不会影响AD ...

#include <msp430fr5949.h>

long temp;
float temperatureDegC;
float tt;
int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT


  
  
  REFCTL0=REFVSEL_0+REFON;
  /* Initialize ADC12_A */
  ADC12CTL0 &= ~ADC12ENC;                   // Disable ADC12
  ADC12CTL0 = ADC12SHT0_0 + ADC12ON;        // Set sample time
  ADC12CTL1 = ADC12SHP;                     // Enable sample timer
  ADC12CTL3 = +ADC12TCMAP;                   // Enable internal temperature sensor

  ADC12MCTL0 |= ADC12VRSEL_1 + ADC12INCH_30; // ADC input ch A30 => temp sense

  ADC12IER0 |= 0x001;                        // ADC_IFG upon conv result-ADCMEMO

  while(!(REFCTL0 & REFGENRDY));            // Wait for reference generator
                                            // to settle
  ADC12CTL0 |= ADC12ENC;
  _EINT();
  while(1)
  {
    ADC12CTL0 |= ADC12SC;                   // Sampling and conversion start

    __bis_SR_register(LPM0_bits + GIE);     // LPM4 with interrupts enabled
    __no_operation();

   
    tt = (float)temp/4095*2500;
    temperatureDegC =(tt-700)/25.0f;

    __no_operation();                       // SET BREAKPOINT HERE
  }
}


#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)

{
  
      temp = ADC12MEM0;                     // Move results, IFG is cleared
      __bic_SR_register_on_exit(LPM4_bits); // Exit active CPU
   
}

一周热门 更多>

相关问题

    相关文章