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/MSP430G2755:ADC10结果波动很大:(

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/711702/ccs-msp430g2755-adc10-results-are-fluctuating-a-lot

器件型号:MSP430G2755

工具/软件:Code Composer Studio

您好!

我使用 ADC10通过内部2.5V 基准电压读取电压测量值。

我还设置了它、以便当读数低于某个数字时、LED 将亮起。

我正在测试它并获取非常嘈杂的数据、因此我尝试设置 LED、以便它在0V 时打开、并将输入引脚连接到 GND。

但 LED 仍在大量闪烁(这意味着它不会在 GND 读取0V?)。 ADC10是否应该如此不可靠? 或者、我的设置是否出了问题?

我的所有时钟都是最长的、因此如果需要、它有更多的时间求平均值(ADC10SHT_3和 ADC10DIV_0)

下面是我的代码中的一些 ADC 和 LED 设置:

// Vref+和 VSS,采样保持时间=64*tADC10CLKS,打开 ADC 和 Vref
ADC10CTL0 |= SREF_1 | ADC10SHT_3 | REFON | REF2_5V | ADC10ON;


//温度传感器 ADC10CLK = ACLK/1、单次转换模式
ADC10CTL1 = INCH_0 | ADC10DIV_0 | ADC10SSEL_1 | CONSEQ_0;

//在 Vref 正确稳定之前需要等待30us
_DELAY_CYCLES (480);


ADC10CTL0 |= ENC | ADC10SC;//采样和转换开始

uint16_t temp;
ADC10CTL0 &=~ADC10IFG;
温度= ADC10MEM;

如果(temp<=0)//当 temp (voltage)为0或更低时 LED 亮起

VBAT_LOW = true;
P1OUT |= 0x01;//将 P1.0 LED 设置为打开

其他

VBAT_LOW = false;
P1OUT &=~0x01;//清除 P1.0 LED 关闭

ADC10CTL0 &=~ENC;

除了这个、我还有很多其他工作要做、但这应该是唯一与 ADC 操作相关的部分。

其他人是否也有 ADC10精度问题?  

当它被接至 GND 时、我已经看到它在 ADC10MEM 的2^10=1024中跳了10 (十进制)、这在使用2.5V 基准时转换为一个误差的.008V 这是我将该引脚直接连接到 GND 时的情况。 当我用我的眼睛观察 LED 时、它会每秒关闭并重新打开(从0V 开始干扰)约3次。 这是预期行为吗?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不会评论这是"预期"还是"在规格内"、但一种简单的方法是对几个读数求平均值或保持运行平均值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能应该添加:
    >ADC10AE0 |= BIT0;//为模拟启用 A0 (关闭缓冲器)