工具/软件: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次。 这是预期行为吗?
谢谢!