p13692166934 发表于 2019-4-2 13:58:05

为啥我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;

932837498@qq.co 发表于 2019-4-2 14:34:49

看看你的ADC基准电压是不是选择的内部2.5V

p13692166934 发表于 2019-4-2 14:42:51

932837498@qq.co 发表于 2019-4-2 14:34
看看你的ADC基准电压是不是选择的内部2.5V

是不是内部基准值是ADC拿来对比的,内部0-2.7,电池0-7.8,按比例来对比?

wenyangzeng 发表于 2019-4-2 14:44:45

本帖最后由 wenyangzeng 于 2019-4-2 17:28 编辑

1、已经是float类型的小数运算了,不能用整数运算;
2、楼主把那个ResultVolt放在括号内一起右移12位好像有点问题。
3、电压的计算公式应该是(float)(3300 mV÷4096)×(ADC转换值8次累加值>>3),

caoenq 发表于 2019-11-1 08:54:25

像是硬件的问题
页: [1]
查看完整版本: 为啥我ADC转换锂电池出来的是2.5左右,而万用表却是3.3