|
目前F0系列的MCU,我只用过F030和F051(F031)两者各有自己的Reference Manual 以及 DataSheet 我发现ST的文档还是比较坑的,就如何利用内部CH17通道ADC采样求得VCC电压,F030的参考手册里面并没有 解释得很清楚,网上的帖子也是一大堆,不过没有一个准确的,至少我没找到。 今天就这个问题,作一个笔记,方便以后查阅: 首先,我们翻开F030的DataSheet来看看(F030的DataSheet:DS9773)
看看这段英文,大概的意思就是MCU有一个内部参考电压,是和ADC通道17相连的。ST公司在MCU 生产过程中,会在这样一个环境下对MCU作一个校准: 温度30度,为MCU加上较为精确的3.3V电压时,获取ADC CH17的AD值Vrefint_cal,并且把此AD值记录 到MCU的内部存储器里面作为一个只读的数据,作为参考。此数据地址为0x1ffff7ba,长度2字节 然后呢?怎么用呢?datasheet就没下文了,好吧,那我们再去查查Reference Manual 找到STM32F030的[RM0360],找到ADC这一章,204页(我这个是Rev3的)
我想说:然并卵!!! file:///C:/Users/Administrator/AppData/Local/YNote/data/qq64CFFFD5BCF5D79E15E658E5AFC24512/e77d702919e9404aafe723892f30752b/clipboard.png 看到这里我突然无语了,只讲了内部温度如何求得,居然没讲内部参考电压的用法!!! 所以我说ST的文档坑呢。。。 不过还好,我发现虽然这个RM0360里面没有提及VREFINT的用法,但是另一款MCU STM32F051的参考手册里面有说到: 打开[RM0091] file:///C:/Users/Administrator/AppData/Local/YNote/data/qq64CFFFD5BCF5D79E15E658E5AFC24512/b7f2c021c1b1452b8ee1cf39f729f6f9/clipboard.png
终于找到了用法,这段英文大概的意思是这样的: VDDA提供电压给MCU(MCU能工作的前提条件),但是VDDA的值可能是波动的,或者我们不能知道 其精确值,那么内部的参考电压VREFINT和记录在MCU里的参考值会帮助我们求得当前VDDA的精确值 并且给了一个很简单的公式。 VREFINT_CAL 就是前面提到的生产时记录到MCU内部的一个数据 VREFINT_DATA 则为ADC CH17采集到的AD值 自此,我们终于知道这个内部参考电压是怎么用的了,简单的讲,就是: 当我们无法知道当前VDD的值到底是多少时,可以利用ADC CH17采样值 以及MCU内部的参考值去求得 此方法,我已经做过实验了,F030和F051上都试过,并且应用于实际产品(估算电池电量),准确性还是挺高的。 PS: 从公式来看,VDD越高,CH17的值越小;VDD越低,CH17的值反而越大 那么,内部的原理图到底是怎样的呢?很好奇。 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版
就是不知道他的量化值是否由一个与电源无关的恒压参考源提供