STM32 之 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压

发布时间:2018-12-21 10:50, 浏览次数:1553 , 标签: STM VREFINT ADC

<>问题

今天在使用
STM32F407的ADC时遇到一个问题:ADC的参考电压都是通过Vref+提供的并作为ADC转换器的基准电压。当我们使用的Vref+是直接取自用VDD电压时,当VDD电压波动比较大时或稳压性能比较差时,转换结果自然就不准确了!

<>供电方案

MCU的参考手册都会有一章节单独介绍MCU的电源管理,针对不同的MCU(封装不同等)其外部电源如何连接也是有要求的,我们在MCU上一般都会发现如下引脚:

* VDD = 2.0 to 3.6 V: external power supply for I/Os and the internal
regulator. Provided externally through VDD pins.
* VSSA, VDDA = 2.0 to 3.6 V: external analog power supplies for ADC, reset
blocks, RCs and PLL (minimum voltage to be applied to VDDA is 2.4 V when the
ADC is used). VDDA and VSSA must be connected to VDD and VSS, respectively.
* VBAT = 1.8 to 3.6 V: power supply for RTC, external clock 32 kHz oscillator
and backup registers (through power switch) when VDD is not present.
* VREF+: 正模拟参考电压输入(部分芯片没有个引脚)
下面以 STM32F1 和 STM32F2 的 MCU 比较来具体看看
供电架构如下图所示:

不同的供电所管理的供电域

供电电压

* VCC: C=circuit 表示电路的意思, 即接入电路的电压
* VDD: D=device 表示器件的意思, 即器件内部的工作电压;
* VSS: S=series 表示公共连接的意思,通常指电路公共接地端电压
* stm32的VDDA和VSSA不能悬空,复位模块和RC振荡器需要VDDA和VSSA。否则无法下载程序!
<>电源引脚连接

* VDD引脚外接去藕电容连到外部稳压源
* 一个最小值4.7uF、典型值10uF的钽电容或陶瓷电容
* 每个VDD引脚再接一个100nF的陶瓷电容
* VBAT引脚外接电池。若没有电池,推荐通过100nF的陶瓷电容连到VDD引脚
* VDDA引脚外接两个去藕电容
* 一个100nF的陶瓷电容
* 一个1uF的钽电容或陶瓷电容
* VREF+引脚连到VDDA
* 若有单独的参考稳压源连接
一个100nF和1uF的电容
* VCAP1和VCAP2通常只各连接一个2.2uF的电容
* 特殊封装上,可外接1.2V电源来旁路内部主电压调节器

<>ADC的参考电压

  在部分MCU的封装中,会有单独的一个Vref引脚

我们可以把外部基准电压芯片(例如REF3133,输出的电压是标准的3.300V)连接到Vref引脚。一般100脚的STM32
MCU(如上图STM32F4)都有VREF引脚。

  对于100脚以下的芯片,STM32没有把VREF引脚引出来,所以,我们只能把基准电压芯片连接到VDDA引脚。注意,STM32单片机上面有好多电源引脚,其中有若干VDD引脚,只有一个VDDA引脚,VDDA引脚就是模拟供电引脚。不过,需要注意,VDDA的电压不是随便定义的。例如,STM32F051系列单片机就规定,VDDA必须要大于或者等于VDD才可以正常工作,所以这时候,最好是给单片机3.0V供电,再给VDDA采用一个3.3V的基准电压芯片供电。

<>内部参照电压

  以上两种方法都需要外加基准电压芯片,在实际应用中,往往是VDDA引脚和VDD引脚连在一起,都是由电源芯片供电。这个时候如果要提高ADC转换准确性该怎么办呢?
  在每个MCU的内部,都有一个叫内部参照电压的东西。关于该部分的介绍,位于对应 MCU 的 数据手册 中(不同MCU的 数据手册
介绍有多又少,同样是STM32F0的数据手册 介绍更为详细),如下图:

内部参考电压在芯片出厂时已经校准过精度了!且不同的MCU是有可能不同的!其厂内校准过程是在外部供3.3V电源,将采样内部参考的ADC值写入到固定的内存中去(如上地址,不同MCU具体位置可能不同)!而我们就可以利用这个来校准自己的ADC。

  STM32的ADC内部都有一个参考电压引脚,可以通过配置,把这个脚连接到ADC输入引脚,是内部连接。然后再计算实际的VDDA值。MCU不同具体链接的ADC引脚也是不同的。下面是STM32F4芯片的
参考手册的说明:

这样我们就可以用ADC实际采样,得到VREFINT的采样值,然后使用上面的校准值进行计算即可!
  关于使用内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的几句说明。

更进一步,在计算其他通道的时候,我们就可以使用以上计算的VDDA来作为基准了!

<>ADC转换时间

在使用上面的方法时,必须要特殊注意ADC转换时间。否则采样值将出现较大偏差!先看看每个通道的总转换时间公式:每个通道总的转换时间 = TSampling +
Tconversion

* TSampling可配置:SMP@ADC_SMPRx,需要和外部电路的输入阻抗匹配(在对应的数据手册中会有详细说明)

* Tconversion取决于转换精度:RES@ADC_CR1,降低转换精度可提高转换速度

ADC总转换时间为:Ttotal = (SMP + RES) * ADCCLK

* SMP:采样时间,需要和外部输入阻抗搭配
* RES:转换精度,降低精度可提高速度
* ADCCLK:ADC模块工作时钟
* ADCCLK = APB2时钟分频(2,4,6,8)
* ADCCLK最大值还受限于工作电压
* VDDA=1.8~2.4V fADCmax = 15MHz
* VDDA=2.4~3.6V fADCmax = 30MHz
为什么要说ADC采样时间?因为上一节所讲的方法,对于采样时间是有限制的!!!

* 温度传感器

* Vbat

* VREFINT

关于采样时间需要和外部输入阻抗搭配,参看下图和对应的 数据手册

<>参考

* STM32F4、STM32F0、STM32F1、STM32F2的 数据手册,参考手册
* ST的培训资料

STM32 之 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压和ADC校准相关推荐

  1. STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压,内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的说明

    STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压 ZCShouEXP 2018-12-21 10:50:33  16404  收藏 32 展开 问题   今天在使用 ...

  2. STM32的内部参照电压VREFINT(1.2V)和ADC参考电压Vref+如何区分呢

    一.STM32的内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准电压测量点(和MSP430不一样..),内部参照电压VREFINT只能出现在主ADC1中使用. 内部参照电 ...

  3. STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压

    问题   今天在使用 STM32F407 的 ADC 时遇到一个问题:ADC 的参考电压都是通过 Vref+ 引脚提供的并作为ADC转换器的基准电压(部分 MCU 没有 Vref+ 引脚).当我们使用 ...

  4. bandgap的理解(内部带隙电压基准)

    转载地址:http://bbs.mydigit.cn/read.php?tid=1635508 写的非常好,想把每句话都记住. 首先了解两个英文缩写. Abbreviations缩略语 Full sp ...

  5. 笔记:STM32的ADC参考电压与参照电压(电源监测)

    STM32的ADC 电压输入范围为: VREF- ≤ VIN ≤ VREF+.一般设计的时候会把VREF-和地相连, VREF+和VDDA相连.若MCU供电电压为3.3V,则ADC输入电压范围为0~3 ...

  6. STM32使用内部参考电压提高ADC采集准确度

    我们在使用ADC采集外部电压时,一般默认参考电压为MCU的供电电压,例如单片机供电电压为3.3V时,我们计算采集电压的公式为: 假设12位ADC 采集电压=(AD值/4096)*3.3: 但是如果因为 ...

  7. STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)

    本篇文章包含的内容 一.ADC 模数转换器 1.1 ADC简介 1.2 逐次逼近型ADC工作原理 1.3 STM32中的ADC基本结构 1.4 STM32中ADC的输入通道 1.5 STM32中的AD ...

  8. STM32 Mbed系列-ADC参考电压设置

    stm32l4x5/4x6 Mbed系统ADC内外部参考电压修改 ADC参考电压 mbed系统ADC驱动 ADC参考电压 ADC采样的参考电压可以分为内部参考电压和外部参考电压,参考电压为VREF+, ...

  9. mtk 电池驱动的电压,电流,温度等数据通过adc通道获取

    mtk 电池驱动的电压,电流,温度等数据通过adc通道获取 pmic BATSNS 引脚电压 bat_vol = battery_meter_get_battery_voltage(KAL_TRUE) ...

最新文章

  1. 五大颠覆性特征带你认识6G网络
  2. python round()四舍五入有偏差 注意了解
  3. nginx常用功能全揭秘
  4. ftp上传当天文件的方法_2种windows到linux上传文件的方法
  5. node 生成随机头像_微信头像新玩法?二次元头像自己捏,每款都独一无二
  6. 【万字长文】详解Python时间处理模块-datetime
  7. ITK:生成具有正确面积的结构元素
  8. java 原子类能做什么_死磕 java原子类之终结篇(面试题)
  9. php 5.5.12 yaf,yaf框架教程(5)- yaf框架的启动文件
  10. 查看总耗时_吉林德惠电力施工总承包资质代办
  11. css 总结内容用到的绝对居中的几种方式
  12. deepin20系统选择手动安装盘_国产操作系统替换微软还有多远?掌上电脑安装深度Deepin 20体验...
  13. 自写string.h头文件(部分)
  14. Java基于Socket实现简单QQ聊天详细教程
  15. 深圳市自助图书馆详细分布地址
  16. Java 解析Tiff深入研究
  17. 爱测未来移动-从Emmagee代码浅谈Android基础性能数据监控方法
  18. badatatable转成json_数据表转换成json(DatatableToJson)
  19. Java后端Cookie工具类(设置Cookie有效时间、得到Cookie的域名等方法)
  20. 坑爹的APAR IT08059.

热门文章

  1. Teams app 开发最佳实践
  2. web前端 网页加载 性能优化大全
  3. 26.编辑距离(一)
  4. 40岁男人娶20岁女孩
  5. 软件开发的12大定律,你是否使用了呢
  6. R语言RSelenium包爬取动态网页数据前期准备(环境配置)-连载NO.01
  7. CSS颜色的6种写法
  8. DDSM数据库——LJPEG转PNG格式
  9. 一行代码教你七夕情人节如何告白❤—动漫3D相册(音乐+文字)HTML+CSS+JavaScript
  10. matlab的积分函数