msp430内部温度传感器的问题

2019-03-24 09:58发布

最近遇到个问题,我用msp430内部温度传感器测温,用仿真器调试,如果不接外部电源,直接仿真器供电的话,可以正确采集,但是外接外部电源的话,采集的的值一直是4095,不知道是什么原因,求大哥大姐们指导一下,非常感谢,还有就是,同一个ADC12程序,下载到不同的msp430芯片,采集的原始值也不一样。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
蓝雨夜
1楼-- · 2019-03-24 20:43
 精彩回答 2  元偷偷看……
sint27
2楼-- · 2019-03-24 21:16
< :TI_MSP430_内容页_SA7 --> 本帖最后由 sint27 于 2015-7-28 10:37 编辑

4095的话相当于就是采样口的电压跟参考电压一样了
qiushenghua
3楼-- · 2019-03-25 02:24
内置温度传感器不同芯片参数略有差异。在info_A区域存在温度校准参数的。
电源不同正常情况下是不会影响ADC采样的,除非你配置的参考电压不对。建议贴出ADC初始化部分的代码,更容易看出原因来。
541873558
4楼-- · 2019-03-25 08:15
 精彩回答 2  元偷偷看……
541873558
5楼-- · 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
   
}
541873558
6楼-- · 2019-03-25 12:00
541873558 发表于 2015-7-28 10:45
#include

long temp;
float temperatureDegC;
float tt;
int main(void)
{
  WDTCTL = WDTPW +  ...

这个是不接外部电源能正常采样的程序

一周热门 更多>

相关问题

    相关文章