使用万用表测量的电压为0.716V,但ADC值为0x185,无论是哪个参考电压,它是(1.2V,1.8V.3V,3.6V),间隙有点大。
此外,我发现一个问题,当我将PIN(将测量)连接到P02时,电压将减少约0.08V.它有什么问题?
代码是
UINT16_T ADC_GET_THER_SAMPLE(void)
{
Volatile UINT32_T ADC_SAMPLE,ADC_SAMPLE1,ADC_SAMPLE2;
/ *单结尾模式* /
/ *转换在输入和输出时相反的标志取消
ZC的内部偏移和低频* /
/ *通过启用3x衰减器允许输入电压高达3.6V。* /
adc_init(gp_adc_se,gp_adc_sign,gp_adc_attn3x);
ADC_USDELAY(20);
adc_enable_channel(adc_channel_p02);
adc_sample1 = adc_get_sample();
ADC_USDELAY(1);
adc_init(gp_adc_se,0,gp_adc_attn3x);
adc_enable_channel(adc_channel_p02);
adc_sample2 = adc_get_sample();
//我们必须将以下结果除以2如果
// 10位精度足够
ADC_SAMPLE =(ADC_SAMPLE2 + ADC_SAMPLE1);
adc_disable();
返回ADC_SAMPLE;
}
设备:
嗨兰迪宇,
无论设备的工作电压如何,使用衰减器时,580的参考电压为1.2V伏或3.6(以降压或升压模式)。在您粘贴的代码中,我看到你已经总结了从ADC获得的两个值。关于您在连接到P02引脚时获得较低值的事实,我无法讲述为什么发生这种情况,我在所有引脚上测试了ADC,我在P02上没有不同的值,没有衰减器。
谢谢mt_dialog.
Q1:我不是很了解'衰减器',我是如何知道我是否使用衰减器的情况?
粘贴的代码是我在ADC.c中从ADC_GET_VBAT_SAMPLE(BOOL Sample_VBAT1V)修改
你能给我一个关于抽样的代码吗?
*************************************************************************************************
现在我已经修改了下面的抽样
UINT16_T ADC_GET_THER_SAMPLE(void)
{
UINT32_T ADC_SAMPLE;
/ *单结尾模式* /
/ *转换在输入和输出时相反的标志取消
ZC的内部偏移和低频* /
/ *通过启用3x衰减器允许输入电压高达3.6V。* /
adc_init(gp_adc_se,0,gp_adc_attn3x);
ADC_USDELAY(20);
adc_enable_channel(adc_channel_p02);
adc_sample = adc_get_sample();
adc_disable();
返回ADC_SAMPLE;
}
结果似乎对了,
但是计算的噬替氏型比万用表测量的值略低(约0.02V)。
偏移量有点大。
Q2:采样代码是否正确?或者如果有另一种更好的方法可以获得更准确的结果
嗨兰迪宇,
恢复器可以在初始化ADC时,它在ADC_INIT()中的第3个Paramater时,您可以在第10.4节中检查功能的实现或UM-B-051中的文档。您可以使用相同的代码读取ADC作为ADC示例指示,您只需将您获得的结果划分为2以获得适当的值。关于您认为您必须在使用之前校准ADC的偏移量。而且,您无法将ADC的值与万用表的值匹配,您是否完全确定您正在使用的万用表被校准,并且它具有完美的准确性?
谢谢mt_dialog.