如图所示,我用140K和10K两个电阻分压,万用表测量C22上面分到的电压为0.7V,当执行ReadVoltage时,万用表显示IO口电压为变成1.1V,造成读取错误,不知道是什么原因?
double ReadVoltage()
{
HalAdcSetReference( HAL_ADC_REF_AVDD );
double v = HalAdcRead(HAL_ADC_CHN_AIN7, HAL_ADC_RESOLUTION_10);
v = v*3.3/511; //ref*v / 2^(14-1)-1 , if ref vadd5(3.3), x3.3
return v;
}
Alvin Chen:
你现在的处理后的数值不是1.1V吗?
zhou jiangtao:
回复 Alvin Chen:
电源电压是10.6V左右,分压应该是0.67V左右,但是IO脚干扰了分压变成了1.1V,计算出来的VBAT是16V,而VBAT实际只有10.6V
Alvin Chen:
回复 zhou jiangtao:
我说的是你那个IO的电压和你adc读到的电压吻合吗
zhou jiangtao:
回复 Alvin Chen:
吻合,我也确实读到了1.1V,就是不知道为什么会干扰,不知道问题在哪儿。
Alvin Chen:
回复 zhou jiangtao:
应该是硬件问题,至于这个分压怎么算,你要自己计算了。。。