请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

为啥我ADC转换锂电池出来的是2.5左右,而万用表却是3.3

[复制链接]
p13692166934 提问时间:2019-4-2 13:58 /
测试代码如下:
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;
收藏 评论4 发布时间:2019-4-2 13:58

举报

4个回答
橡皮筋儿 回答时间:2019-4-2 14:34:49
提示: 作者被禁止或删除 内容自动屏蔽
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),

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

Ankky 回答时间:2019-11-1 08:54:25
像是硬件的问题

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版