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.

[参考译文] CCS/MSP430FR4133:读取 ADC 的值始终相同

Guru**** 2589245 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/826262/ccs-msp430fr4133-reading-adc-always-same-low-value

器件型号:MSP430FR4133

工具/软件:Code Composer Studio

您好!

我尝试读取 FR4133中的原始电池电压、并查看了示例。 基准为 VCC、读数来自通道13内部1.5电压基准。 读取3V 电压时、原始值应约为512、并具有一点噪声。

但是、我始终得到相同的值96。 是否可以是某个内容未初始化?  

uint16_t bat_get (void)
{
uint16_t temp = 0;
ADCCTL0 = ADCON | ADCSHT_2;
ADCCTL1 = ADCSSEL_1 | ADCDIV_1 | ADCSHP;
ADCMCTL0 = ADCINCH_13 | ADCSREF_0;
ADCIE = ADCIE0;

PMMCTL0_H = PMMPW_H;
PMMCTL2 |= INTREFEN;
while (!(PMMCTL2 & REFGENRDY));
ADCCTL0 = ADCSC | ADCENC;
LPM3;
temp = ADCMEM0;
PMMCTL0_H = PMMPW_H;
PMMCTL2 &=~INTREFEN;
ADCCTL0 = 0;
ADCCTL1 = 0;
返回温度;
}

#pragma vector=ADC_vector
__interrupt void ADC_ISR (void)
{
LPM3_EXIT;
ADCIE = 0;
} 

系统以32 KHz 的石英运行。  

谢谢!

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    >    ADCCTL0 = ADCSC | ADCENC;

    我没有尝试过这种方法、但它可能会设置 SHT=0。 尝试:

    >      ADCCTL0 |= ADCSC | ADCENC; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    只是我这边的另一个评论。 根据您原来的帖子、您正在尝试监控电池电压、但您选择 MSP430电源作为基准。 根据您的硬件设置、在某些情况下、如果电源电压下降、这可能会导致 ADC 结果错误。 因此、我宁愿建议将 ADC 转换参考为独立于电源的集成基准电压之一、只要该基准电压足以满足所选基准值(有关更多详细信息、请参阅数据表)。

    作为一般建议、始终建议查看我们的代码示例、如 CCS TI Resource Explorer msp430fr413x_ADC10_05.c 中的代码示例、该示例专门解决了使用集成 ADC 监测电源电压的问题。 在此应用示例中、您可以看到推荐的 ADC 配置和1.5V 基准的使用。

    根据您的回答、我将关闭此案例。

    此致

    Peter