This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR6972 ADC 采集温度

按照官方提供例程配置ADC以及计算公式,但是计算出来的温度不正确。

ADC例程如下,有什么修改建议?

 


 

另外发现,在原来的板子上换了一个批次的6972样品后,发现总是在不停地复位,换回老芯片能正常运行。

是哪里配置有问题吗?

 

 

  • 你好,通过adc测量计算出来的温度和实际查多少?

    你使用的参考电压和例程中是否相同?

  • “计算出来的温度不正确” 能否请您详细说明下?
    关于复位问题,您的板子和之前对比,除了MSP430芯片不同,其余的软硬件都是相同的?能否具体描述一下?谢谢!
  • 参考电压和例程是一致的。温度采样问题目前已经通过校准,问题解决了。
    复位问题,硬件和软件都是一样的,只是重新换上6972后,发现有此现象;换回原来新片后,不存在复位问题。
    另外,6972的AD能不能同时2种转换方式?一种是序列连续采样,一种是单次转换。比如电压电流用序列连续采样,温度用单次转换。
  • 1、使用内部温度传感器测得的温度,实际是mcu的内部温度,有时比外界温度多个一两度也是有的。

    2、能否提供下复位电路?

    3、不能同时两种转换方式的。建议采用序列采样就可以,用不到的数据可以不处理,需要的时候再做处理。

  • 复位电路是一个阻容复位电路:

  • C48有点小了,你换100nF的电容试试,看情况有没有好转

  • 换成0.1uF也不行...之所以用1nF的电容是因为电容大了下载不了程序。
  • 复位是什么原因导致的?能否将复位标志位存到FRAM然后复位后读取一下复位标志位,看看具体哪种复位?

    另外,你做的是什么应用?能否提供以下你的程序?
  • 初步找到原因是外部高速晶振问题,用内部晶振就不复位,但是用内部晶振速度不够的。以下是时钟配置相关程序:

    void SysClkConfig(void)
    {
    //外部晶振,LFXT HFXT
    PJSEL0 |= BIT4 | BIT5| BIT6 | BIT7;
    PJSEL1 &=~(BIT4 | BIT5| BIT6 | BIT7);
    PM5CTL0 &= ~LOCKLPM5; //该位必须清零

    CSCTL0_H = CSKEY >> 8; // Unlock CS registers
    CSCTL1 = DCOFSEL_0; //DCOFSEL_6; // Set DCO to 8MHz
    CSCTL2 = SELA__LFXTCLK | SELS__HFXTCLK | SELM__HFXTCLK;
    CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers to 1

    CSCTL4 |= LFXTDRIVE_3 + HFXTDRIVE_3;

    CSCTL4 &= ~(LFXTOFF | HFXTOFF);

    do
    {
    CSCTL5 &= ~(LFXTOFFG | HFXTOFFG); // Clear XT1 and XT2 fault flag

    SFRIFG1 &= ~OFIFG;

    }while (SFRIFG1&OFIFG); // Test oscillator fault flag

    CSCTL4 &= ~(LFXTDRIVE_0|HFXTDRIVE_0);
    CSCTL0_H = 0; // Lock CS registers
    __no_operation();
    __no_operation();
    __no_operation();

    }


    帮忙看看什么原因,谢谢!
  • 6972 REVA 版本没有出现复位问题;REVB版本样品发现,容易复位。

    使用外部晶振用8M还可以工作,到12M就不行;内部也是最大8M可以,在往上就不行。

    是因为REV B 版本芯片只支持最大8M吗?按理不会啊,是不是哪里配置还有错?

  • 6972 REVA 版本没有出现复位问题;使用REVB版本样品,同样代码发现,容易复位。

    使用外部晶振用8M还可以工作,到12M就不行;内部也是最大8M可以,在往上就不行。

    是因为REV B 版本芯片只支持最大8M吗?