MCU内部参考电压几种妙用你都知道嘛

近期接触到STM32L0系列MCU,为了发挥超低功耗特性使用的也是干电池供电,想要获取当前干电池组的电量。 起初的方案设计是在MCU的IO口找一路ADC,使用分压方式直接让MCU采集电量,之后在查找资料如何实现时发现了参考电压的问题,步步深入后发现原来还有一种解决方案,即使用内部参考电压直接演算出VDDA的供电,在此做个记录并分享

对ADC工作比较重要的电压一般就两个,VDDA供电让ADC运行,VREF+提供ADC转换的参考电压值。经查阅该型号的数据手册,直接通过供电给VREF+的方式定ADC的基准电压是不可行的,于是下图中也标注了芯片生产制造时已经根据一定环境测试出了一个精准的电压值,此值存储在内存地址如图所示处,这个VREFINT_CAL下面会用到。   

查阅ADC的编程手册,发现了如下公式,基本意思就是在VDDA不能准确知道的情况下,使用VREFINT和ADC获取内部参考电压的模拟值计算出VDDA的过程。怎么获得VREFINT_DATA呢,手册中已说明内部参考电压已经连接到了ADC_IN17通道上,无需外部连接,那么我们只要打开这一路的ADC转换就可以像正常获取ADC转换值一样获得VREFINT的AD转换值。

公式里的NREFINT_CAL和VREFINT_DATA都有了,代入计算可以算的VDDA的值,经本人实际测量有0.1V左右的误差,对我来说这还不够精准,只能说提供了这个途径让我们不用外接线路可以实时获得MCU供电电压了(在VDDA和VCC相同时)。

/**********************************************************小分割*********************************************************/

于是回到最初的方案,使用IO口采样电压的模拟值,打开PA1对应的ADC通道,在正常获得了正常AD转换值后怎么办呢,数据手册是个好东西! 它又一次给了我们答案......让我们上图

好了,大体意思就是公式里的VDDA如果不知道,那可以用内部参考电压计算的值代替VDDA计算通道上获取的电压值,剩下的两个参数为实际从通道获得的AD值ADC_DATAx和用户自己配置的ADC最大分辨率输出值full_SCALE,这两个值都很好得知,在此不做阐述(如有需要可以评论处提问),这样IO口处的电量值就被计算出误差在0.0x,已达到需要的标准。

两种方式都做了说明,在此记录一下,与君分享

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kx_Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值