找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 33558|回复: 14
收起左侧

STM32如何通过内部VREF得到实际的VDDA值

  [复制链接]
ID:94349 发表于 2015-11-10 15:06 | 显示全部楼层 |阅读模式
我们经常会使用STM32 ADC功能测试外部电压,在一些精度不高的场合,我们一般就用3.3V作为参考电压来计算测到的电压值。不过,这种情况很少见,可能只有单片机学习板才会这样使用。因为我们使用的3.3V稳压芯片,很少有标准的3.300V输出,有可能是3.270V,也可能是3.345V,而且,还存在个体差异,这个板子上的电压是3.294V,另外一个板子上面,就可能是3.312V。如果我们都用3.300来计算的话,同样的电压,测出来的结果就会存在mV级别的差异。
在实际使用中,我们一般使用外部基准电压芯片,例如,100脚的STM32一般都有VREF引脚,就是用来接外部基准电压芯片,例如REF3133,输出的电压是标准的3.300V。
为什么不用基准电压芯片作为电源供电芯片?
因为基准电压芯片的输出电流都是小于25mA的,对于一般的电路板应用,这么点输出电流不足以让电路板工作。
不同的STM32 如何使用基准电压芯片?
对于100脚及其以上的芯片,把基准电压芯片连接到VREF芯片即可。
对于100脚以下的芯片,STM32没有把VREF引脚引出来,所以,我们只能把基准电压芯片连接到VDDA引脚。注意,STM32单片机上面有好多电源引脚,其中有若干VDD引脚,只有一个VDDA引脚,VDDA引脚就是模拟供电引脚。不过,需要注意,VDDA的电压不是随便定义的。例如,STM32F051系列单片机就规定,VDDA必须要大于或者等于VDD才可以正常工作,所以这时候,最好是给单片机3.0V供电,再给VDDA采用一个3.3V的基准电压芯片供电。
0.png
不用电压基准电压芯片可以吗?
如果在你的应用中,VDDA引脚和VDD引脚连在一起,都是由电源芯片供电,这时候,如果你能知道VDDA的实际电压,也可以得到精确的ADC结果。例如,你可以用万用表测到VDDA电压,例如,是3.286V,你就可以使用3286来计算。不过,这也只能是在实验的时候,在实际使用中,如果你做了1万个板子,然后需要用万用表量1万个板子的电源电压,然后再给每个板子修改程序,显示是不可能的。
所以,STM32给我们又一个解决方案,STM32在内部都有一个参考电压引脚,可以通过配置,把这个脚连接到ADC输入引脚,是内部连接。然后再计算实际的VDDA值。不过,STM32也存在个体差异,所以,它并没有在手册上给出我们这个参考电压是多大。而是用出厂时调教好的校准值和得到的参考电压值一起使用。如下图:
1.png
VREFINT_CAL是校准值,这个值,每个单片机都不一样,被存储到了0X1FFFF7BA和0X1FFFF7BB,使用的时候,需要先读出来。
说多了都是眼泪,不说了,给你个程序看吧,程序当中,有读取VREFINT_CAL和VREFINT_DATA值的语句。你可以看个究竟。这个程序已经实践验证过了,不会有问题,下面是实验结果:
2.png
我把测到的VDDA值,发送到了串口查看。然后我用万用表测了一下实际的VDDA值,由于我的万用表精度有限,只能测到小数点后2位数字,万用表得到的是3.32V和3.31V之间跳动。串口发送的值,小数点后第三位四舍五入之后,结果也是3.32V和3.31V。结果是一致的。说明这种方法也是可取的。
点击下载源程序: stm32f051计算VDDA测试程序.7z (781.2 KB, 下载次数: 360)

评分

参与人数 1黑币 +3 收起 理由
yexiumywife + 3 很给力

查看全部评分

回复

使用道具 举报

ID:690448 发表于 2020-4-5 13:17 | 显示全部楼层
本帖最后由 my808 于 2020-4-8 21:43 编辑

20200402_115723.jpg
谢谢楼主,按楼主的方法成了。
回复

使用道具 举报

ID:121312 发表于 2016-5-16 22:38 | 显示全部楼层
本帖最后由 雷霆跳蚤 于 2016-5-16 22:39 编辑

楼主,我以前在读资料的时候发现有这个功能,就是关于VERINT_CAL和VERINT_DATA这两个值,但是一直都不知道这两个值应该怎么取,读了你的贴子才知道这两个值在哪里,非常感谢你的分享,解决了困扰我很久的问题,以后可以用的上,但可惜看到的人不多。我很好奇的是,你怎么知道这两个值是在0X1FFFF7BA和0X1FFFF7BB?在哪份文档里有提到这两个值的位置,能告之吗?
回复

使用道具 举报

ID:169106 发表于 2017-3-8 14:00 | 显示全部楼层
请问如果ad原来是一个序列的转换,现在要加vref校准。怎么加?
回复

使用道具 举报

ID:216746 发表于 2018-8-7 10:05 | 显示全部楼层
非常感谢楼主细致的讲解,学习了,这就去试试!
回复

使用道具 举报

ID:370640 发表于 2018-11-10 12:15 | 显示全部楼层
感谢楼主, 测试一下
回复

使用道具 举报

ID:211788 发表于 2018-12-2 23:24 | 显示全部楼层
楼主,我今天用到STM32F030F4测量VDDA引脚电压,我把VDDA引脚和VDD引脚共同接在+3.3V电源上。我把你的STM32F051源程序移植成STM32F040F4的程序,怎么测出来VDDA的电压是1.228V啊?

stm32f051改成STM32F030计算VDDA等于1.228V测试程序.7z

782.16 KB, 下载次数: 29, 下载积分: 黑币 -5

回复

使用道具 举报

ID:240600 发表于 2018-12-25 15:55 | 显示全部楼层
不知道对F103系列通用不
回复

使用道具 举报

ID:476548 发表于 2019-4-24 14:03 | 显示全部楼层
这两个参数从哪个文档找到的,为什么我找不到
回复

使用道具 举报

ID:214152 发表于 2019-5-6 10:45 | 显示全部楼层
感谢楼主, 测试一下
回复

使用道具 举报

ID:67222 发表于 2019-7-26 13:55 | 显示全部楼层
感谢楼主,下载测试下看有用没。
回复

使用道具 举报

ID:397421 发表于 2020-1-3 14:45 | 显示全部楼层
非常感谢楼主,
回复

使用道具 举报

ID:247015 发表于 2020-3-29 16:18 | 显示全部楼层
谢谢分享  
回复

使用道具 举报

ID:800207 发表于 2020-7-9 10:03 | 显示全部楼层
小弟初来报到,看不到附件,呜呜
回复

使用道具 举报

ID:795009 发表于 2023-11-15 14:14 | 显示全部楼层
雷霆跳蚤 发表于 2016-5-16 22:38
楼主,我以前在读资料的时候发现有这个功能,就是关于VERINT_CAL和VERINT_DATA这两个值,但是一直都不知道 ...

数据手册里直接搜有的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表