为啥我ADC转换锂电池出来的是2.5左右,而万用表却是3.3
测试代码如下:uint32_t ResultVolt = 0;
uint8_t i;
for(i=0; i<8; i++)
{ //等待转换完成
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
ResultVolt +=(uint32_t) ADC_GetConversionValue(ADC1);
}
ResultVolt = ResultVolt >> 3; //求平均(除8)
ResultVolt = (ResultVolt*3300) >> 12; //计算得到1000倍的电压值(整数值, 无小数点)
return ResultVolt;
看看你的ADC基准电压是不是选择的内部2.5V 932837498@qq.co 发表于 2019-4-2 14:34
看看你的ADC基准电压是不是选择的内部2.5V
是不是内部基准值是ADC拿来对比的,内部0-2.7,电池0-7.8,按比例来对比? 本帖最后由 wenyangzeng 于 2019-4-2 17:28 编辑
1、已经是float类型的小数运算了,不能用整数运算;
2、楼主把那个ResultVolt放在括号内一起右移12位好像有点问题。
3、电压的计算公式应该是(float)(3300 mV÷4096)×(ADC转换值8次累加值>>3),
像是硬件的问题
页:
[1]