ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

STM32供电引脚别只接VDD和GND:VDDA、VBAT、VREF+接法详解

STM32供电引脚别只接VDD和GND:VDDA、VBAT、VREF+接法详解 开发板上电之后程序跑飞、ADC采样值乱跳、RTC时间一断电就归零八成不是代码的锅而是供电引脚没接全。很多人画STM32最小系统板原理图上只拉了VDD和GND觉得芯片能亮灯能跑程序就算完事等到项目调试到模拟采样、低功耗、掉电存储这些环节问题才一个一个冒出来。这篇文章就把STM32供电相关的引脚一次讲透重点说VBAT、VDDA、VREF这些“隐藏角色”到底有什么用不接会出什么状况以及实际画板子的时候应该怎么处理。我最早被VDDA坑过一次做一块基于STM32F103的采集板12位ADC采电压信号结果数值低端跳动特别大大概有正负20个LSB怎么滤波都压不下去。后来翻参考手册才反应过来VDDA和VSSA直接悬空了模拟供电域根本处于不稳定状态。从那以后我画任何一块STM32板子都会先把电源树理清楚VDD、VDDA、VBAT分别对待再开始布局布线。这篇文章就是把这些经验整理出来给准备自己做板子或者正在调试电源相关问题的朋友做个参考不管是画原理图阶段还是已经踩了坑都能找到对应的处理思路。1. 为什么“只接VDD和GND”是个隐蔽的坑1.1 STM32内部其实有多个“供电域”先看一个核心概念STM32芯片内部不是一整块单一供电的逻辑电路而是被划分成了好几个供电域。拿最常见的STM32F103和STM32F4系列来说至少能分出这么几个区域VDD/VSS供电域数字核心、Flash、SRAM、大部分GPIO和数字外设的电源。VDDA/VSSA供电域ADC、复位电路、内部参考电压、温度传感器、PLL等模拟电路和部分混合信号电路的电源。VBAT供电域RTC、备份寄存器和LSE外部低速晶振的电源在VDD掉电后维持供电。VREF如果有独立引脚供电域提供ADC和DAC的参考电压它通常由VDDA分出来或独立供给。这几个供电域在芯片内部不是完全隔离的很多引脚之间都有内部二极管的保护结构但它们对电源质量的要求完全不一样。数字域对纹波容忍度高模拟域对噪声极其敏感备份域则必须能在主电源掉电的时候保持供电。很多人只把VDD和GND当“正负极”接上就完事实际上VDD和GND只管住了数字域模拟域悬空、备份域悬空芯片虽然能运行但很多功能从一开始就是“残缺状态”。1.2 不接全引脚会导致哪些具体问题把供电引脚分成三类每一类不接的后果完全不同第一类VDDA/VSSA悬空或不稳定。ADC采样值跳动、内部参考电压不准、PLL工作不稳导致主频异常、复位电路受到干扰产生意外复位。F1系列如果VDDA没有接芯片甚至可能直接启动不了或者频繁重启。第二类VBAT悬空或直接接VDD。RTC跑不起来、备份寄存器无法保存数据、掉电后时间归零。如果直接把VBAT接VDD主电源断电时备份域也跟着断电RTC的备用电池功能就失去了意义。部分型号还存在漏电路径VBAT接VDD在低功耗场景下会浪费电流。第三类VREF悬空对于有独立VREF引脚的型号。ADC参考电压不确定采样值完全不可用。有的型号VREF在芯片内部已经默认连到VDDA但有的型号是独立引脚必须接。这三类问题有个共同特征在开发板、评估板上往往不明显因为官方板子已经把该接的都接好了但自己画板子的时候哪怕漏掉一个电容或者一个引脚问题就出来了。1.3 开发板原理图里通常怎么处理看官方Nucleo和Discovery板的原理图能发现一些规律性的接法。拿Nucleo-F103RB来说它的VDDA引脚接了一个10nF和1uF电容到VSSA再通过磁珠或者0欧电阻连到VDDVBAT接了一个104电容到地并且可选连接纽扣电池座VREF引脚在LQFP封装的某些型号上直接连到VDDA。这些不是设计者随手画的每个电容的位置和取值都有讲究。磁珠或者0欧电阻是为了把数字电源和模拟电源在板级隔离开避免数字开关噪声通过公共阻抗耦合到模拟电路。VDDA上的电容是为了给ADC内部采样电容提供瞬态电荷采样瞬间的电流尖峰如果直接抽取VDD的电流会在PCB走线上产生压降影响采样精度。2. VDD/GND供电的正确姿势从电容到布局2.1 VDD引脚的去耦策略虽然标题说的是“别只接VDD和GND”但前提是你得先把VDD和GND接好。很多自制板子的问题不是引脚接少了而是接上去的去耦电容作用不大。每个VDD引脚旁边都要放一个100nF电容这是ST参考手册的基本要求。这100nF电容要尽可能靠近引脚放置最好就在芯片同一面、引脚旁边不超过3mm的位置。电容的用途是给高速开关的数字电路提供瞬态电流如果放远了引线电感会抵消电容的滤波效果。除此之外整个芯片的电源脚上至少要有一个4.7uF到10uF的体电容放在靠近芯片主电源入口的地方。体电容负责低频段的稳定100nF负责高频段的去耦两者配合才能覆盖足够宽的频段。F4系列因为主频更高、动态电流更大体电容建议取10uFF0和L0系列可以小一点但4.7uF是底线。还有一个容易忽略的点VDD和VDDA之间不要直接用导线连过去。严格的做法是从VDD经过一个磁珠或者小阻值电阻10R以内再进VDDA磁珠和电阻位于模拟电源和数字电源之间起到单点隔离的作用。这样数字域的开关噪声不会直接串进模拟域ADC采样才能稳。2.2 PCB布局上的电源走线MCU的电源走线最忌讳“菊花链”连接VDD1的电容走线到VDD2再串到VDD3然后再到芯片引脚。这种接法让后面的引脚供电受到前面引脚电流变化的影响引脚之间通过电源线互相干扰。正确的做法是星形连接主电源先到体电容然后从体电容处分支每个VDD引脚用独立的走线连到最近的去耦电容再去引脚。这样每个引脚的瞬态电流都由自己旁边的电容提供路径最短回路面积最小。地线也一样。VSS引脚要单独回到主接地点不要让地电流穿过模拟区域。模拟地和数字地可以在主电容处单点汇合汇合点要选在电源入口处。2.3 不同封装下的引脚处理LQFP48、LQFP64、LQFP100这些封装VDD和VSS引脚数量不同但原则一致所有VDD引脚都必须接不允许悬空所有VSS引脚都必须接地也不允许悬空。很多人看到芯片引脚多觉得“这么多电源脚接一个就行了”这是错误的理解。每一个电源引脚在芯片内部都对应一段独立的电源网络漏接某个引脚不会立刻烧芯片但会让芯片内部的电流分布不均匀局部电源网络阻抗升高。在高负载条件下可能表现为IO驱动能力变弱、内部稳压器不稳定、偶发死机。这些现象排查起来非常头疼因为软件层面看不出任何逻辑问题。对于UFQFPN这类底部有外露焊盘的封装接地焊盘一定要处理好。这个焊盘是芯片地网络的一部分如果虚焊或者没接地芯片会因为地回路阻抗过高而出现各种诡异问题包括ADC采样跳动、芯片发热、复位不稳定。3. VDDA、VSSA、VREF模拟供电域千万别省3.1 VDDA和VSSA的核心作用VDDA给ADC、温度传感器、内部参考电压、PLL这些模拟和混合信号电路供电。ADC采样本质上是对模拟信号进行量化内部有采样保持电容和比较器这些电路对供电电压的稳定性和纯净度要求很高。如果VDDA直接悬空ADC根本没有正常工作的条件采样值可能是完全随机的。如果VDDA接到VDD但缺少滤波电容数字开关噪声会通过电源耦合到模拟电路采样值会出现周期性跳动尤其是当GPIO翻转频率较高、SPI/UART通信繁忙时噪声更明显。PLL对VDDA也很敏感。F1系列内部PLL供电来自VDDA如果VDDA不稳PLL可能锁定失败或者输出抖动表现为系统时钟忽快忽慢、串口波特率对不上、定时器时间计不准。这些问题在示波器上看电源波形还未必看得出明显异常因为干扰幅度可能在几十毫伏级别但足以影响模拟性能。3.2 正确的连接方案VDDA连接方案可以分成三种按项目对模拟性能的要求来选择基础方案VDDA直接和VDD连接然后各放一个100nF和一个1uF电容到地。适合对ADC精度要求不高、没有模拟信号采集需求的项目。进阶方案VDD经过一个磁珠600R/100MHz连接到VDDA电容配置不变。磁珠在100MHz附近有较大阻抗能有效抑制数字高频噪声对ADC采样稳定性有明显改善。适合有模拟采样、传感器读取需求的项目。高标准方案VDDA由独立的LDO供电LDO输入接主电源输出接VDDA模拟部分的地用独立的模拟地平面。适合音频采集、精密测量、多通道ADC同步采样等对噪声要求极高的项目。VREF引脚的处理要特别留意。STM32F1系列在LQFP64和LQFP100封装中有时不引出VREF而是内部直接连接到VDDA但F4系列的部分型号有独立的VREF引脚。如果芯片有VREF引脚必须接到一个干净的参考电压上最简单可靠的办法是接VDDA然后在引脚旁边放一个100nF到1uF的电容。如果你外接了精密基准源比如REF3030输出3.0V那就接基准源输出此时ADC满量程对应的是基准电压而不是VDDA。3.3 模拟地的处理原则VSSA必须连接到地而且最好单独走线到一个安静的地节点不要直接接在数字地过孔旁边。ADC采样精度受地噪声影响极大数字地回流噪声如果叠加到VSSA参考点上ADC的量化结果就会带着地噪声一起被采进去。小板上做单点接地就够了模拟地走线从芯片VSSA引脚拉出去在一颗0欧电阻或者磁珠处和数字地汇合汇合点放在电源入口地线最靠近输入电容的位置。这样数字回流不会经过模拟区域。如果板子上有多个模拟器件运放、基准源、传感器可以单独划一块模拟地铜皮然后通过一个点与数字地连接。注意不要把模拟地和数字地在多个点直接相连否则会形成地环路反而引入更多噪声。4. VBAT引脚RTC和备份域的“保命线”4.1 VBAT到底负责什么VBAT引脚连接的是备份供电域它给RTC、备份寄存器和LSE低速外部晶振供电。VDD正常供电时备份域由VDD供电VDD掉电后如果VBAT有外部电池或超级电容供电备份域继续工作RTC继续走时、备份寄存器内容不丢失。这意味着什么如果VBAT接VDD或者悬空主电源断电后RTC时间和备份数据全部丢失。对于需要掉电保存时间戳、运行计时的设备来说这个功能是核心需求。还有一个不太被注意的点VBAT域还控制着LSE振荡器。如果计划用外部32.768kHz晶振给RTC提供精准时钟源LSE振荡器的工作电压来自备份域。VBAT供电稳定LSE才能稳定起振和运行VBAT抖动可能导致晶振停振或RTC走时不准。4.2 常见错误的接法很多人的第一个错误是把VBAT直接接VDD认为“反正主电源一直都在”。对大多数情况这不会出问题但如果你做的是电池供电设备主电源是3.3V LDO输出而电池电压是3.7V锂电或2节AA电池3.0V主电源断电后VBAT也没有电RTC就白瞎了。第二个错误是VBAT悬空。有些封装上VBAT引脚在角落画原理图的时候容易漏。悬空时备份域可能处于一个不确定的电平状态表现为RTC初始化失败、备份寄存器读写异常严重时还可能通过内部二极管形成寄生电流路径导致整机待机电流偏高。第三个错误是VBAT电池供电时电池电压高于VDD。比如VDD是3.3V纽扣电池是3.6V的CR2032电池通过内部二极管向VDD反向漏电。为了防倒灌应在VBAT和电池之间串联一个低压降肖特基二极管或者使用带切换功能的电源管理芯片。4.3 推荐的VBAT接法建议按产品形态来分如果你做的是带断电保持需求的产品VBAT接纽扣电池座电池正极经过肖特基二极管如BAT54接到VBAT引脚VBAT到地放一个100nF电容。主电源正常时由VDD给备份域供电主电源掉电后自动切换到电池。如果你做的是无电池需求的开发板VBAT直接接VDD但同时加一个10uF电容到地可以在主电源短暂掉电时维持一段时间。这算是一种廉价的不间断备份方案但维持时间有限不能做长期RTC供电。如果你做的是超低功耗电池设备VBAT可以和VDD接在一起如果电池供电本身就是持续的但要注意电池电压范围是否在VBAT绝对最大额定值内。同时软件上建议关闭不必要的备份域写操作降低漏电。4.4 VBAT和LSE晶振的选型VBAT域供电稳定后LSE晶振的选型和配置也会影响RTC精度。32.768kHz晶振负载电容通常在6pF到12.5pF之间选型时优先选用MCU厂商在应用笔记中提到过的晶振型号比如NDK、Epson、TXC这些品牌的产品。PCB布线时LSE晶振的走线要尽量短晶振下方不要走其他信号线晶振周围用地包一圈。LSE振荡器电路的工作电流非常小微安级别对漏电流和环境湿度敏感如果PCB表面有助焊剂残留或潮湿可能导致不起振或者振荡幅度过低。软件层面使用LSI内部低速时钟虽然可以省掉外部晶振但LSI在全温范围内的精度通常在几十个百分点级别RTC走时一天能差几十秒。要求精确走时的应用务必用外部LSE晶振并且VBAT供电要稳定。5. 常见问题与排查技巧实录5.1 供电相关问题的现场排查我在调试过程中遇到过不少供电引脚没接好导致的玄学故障下面列一个常见问题表格方便大家对照排查。现象可能原因排查/解决思路ADC采样值跳动大加滤波也无改善VDDA/VSSA未接好或滤波不足检查VDDA是否通过磁珠/0欧接到VDD确认100nF1uF电容是否靠近引脚放置RTC时间掉电就清零VBAT悬空或未接电池用万用表量VBAT电压掉电后看是否还有供电确认电池方向没有接反系统偶发复位测电源无明显波动VDDA不稳导致PLL失锁或复位电路受扰示波器探头接VDDA观察启动和GPIO高速翻转时波形是否有毛刺加强VDDA去耦芯片低功耗模式待机电流偏高VBAT与VDD间漏电或内部二极管导通检查VBAT是否有外部上拉/电池电压高于VDD必要时加肖特基二极管隔离程序怎么下载都失败芯片发烫VDD和GND接反或电源引脚漏焊检查每个电源引脚的连通性用手摸芯片温度先排除硬件短路LSE晶振不起振RTC不走时VBAT域电压异常或晶振布局差示波器测量LSE引脚波形检查LSE引脚是否虚焊确认外部负载电容值匹配这个表格里的每一项我都实际碰到过或者看到设计评审时别人踩坑。最容易让人迷惑的是ADC采样跳动这个问题因为它既可能是供电问题也可能是参考电压问题还可能是PCB布局问题需要一层一层排查。5.2 画板阶段就避免的4个细节细节一是每个电源引脚都要独立过孔。不要在VDD引脚之间串接走线每个VDD引脚就近打孔到电源平面或宽走线每个VSS引脚就近打孔到地平面。这样回流路径最短引脚间耦合最小。细节二是模拟部分和数字部分的去耦电容不要共用过孔。VDDA的去耦电容如果和VDD的去耦电容共用一个过孔那磁珠和隔离就白加了数字噪声会从过孔处重新耦合进模拟电源。细节三是VBAT电池座的封装要留好二极管要靠近电池座放置。BAT54这类肖特基二极管的漏电流在微安级别如果放在离电池座很远的位置走线会形成天线效应引入额外的EMI问题。同时电池座的极性和PCB丝印一定要标清楚这是批量生产时避免返工的关键。细节四是电源引脚旁边预留测试点。每个主要电源网络VDD、VDDA、VBAT、VREF各放一个测试点调试时可以直接用示波器探头或万用表量测不用费劲去刮引脚。这点看似简单却能省下大量调试时间。5.3 电源树检查清单画完原理图之后建议系统性地过一遍电源网络用下面的清单逐项排查VDD每个引脚都有去耦电容电容地端连接到最近的VSS引脚或地平面。VDDA通过磁珠或0欧电阻连接到VDDVDDA有无缺失的滤波电容100nF1uF。VSSA连接到地且到主接地点路径独立、距离短。VREF如果有该引脚已接参考电压或VDDA并带去耦电容。VBAT已接电池或VDD附近有100nF去耦电容不存在VBAT悬空情况。所有VSS引脚都已接地所有VDD引脚都已接电源无悬空电源引脚。模拟电源和数字电源之间无多处直接相连保持单点隔离策略一致。LSE晶振和负载电容布局靠近芯片晶振下方无其他走线。用这份清单检查一遍能挡住绝大多数因供电引脚处理不当导致的硬件问题。6. 给不同场景的接法建议6.1 从简单到完善的三档方案根据项目需求供电接法的完善程度可以分为三档。第一档最低可用方案。VDD接电源、VSS接地、每个VDD引脚放100nF电容、VDDA和VSSA也接上。这种方案适合纯数字逻辑项目比如用STM32驱动LED、读取按键、跑逻辑控制不涉及ADC和RTC功能。只要电源质量不是特别差一般不会出大问题。第二档实用推荐方案。在第一档基础上VDDA通过磁珠接VDD加上体电容和模拟滤波电容VBAT接电池座或者VDD电容有独立VREF引脚的芯片把VREF接VDDA并加电容。这个方案覆盖大多数常见需求包括基本的ADC采样、RTC时间记录、传感器数据采集。我自己画的大部分板子都是这个配置。第三档高性能方案。VDDA由独立LDO供电LDO输入经过RC滤波或者LC滤波模拟地单独铺一块铜皮与数字地通过0欧单点连接VREF使用外部精密基准源ADC采样相关的模拟走线做阻抗控制和包地处理。适合音频、仪器仪表、数据采集设备。6.2 一个实用的小技巧电源指示与测试点结合在板子的主要电源网络上除了测试点我还习惯加一个小LED指示灯。VDD上放一个红色LED串联1k电阻VDDA上放一个绿色LED串联1k电阻VBAT上放一个黄色LED串联1k电阻但要注意这个LED在掉电后会耗电低功耗产品不要这么做。上电时瞄一眼三个灯是否全亮就能快速判断主要电源域是否都供电了。这个做法的成本很低但调试时的信息量很大尤其是在现场查问题时不用每次都焊线量电压。6.3 低功耗场景的特殊考虑做电池供电的低功耗设备时供电引脚的接法会更讲究。VBAT不能直接挂LED指示灯指示灯本身的漏电就会毁掉整个低功耗设计。VBAT上的滤波电容也不能太大电容越大备份域从VDD切换到电池时的瞬态电流就越大可能拉低电池电压。低功耗模式STOP、STANDBY下部分内部稳压器会关闭电源电流降到微安级别。此时VDDA上的电容如果过大会延长从STANDBY唤醒的稳定时间。推荐在低功耗设计中VDDA电容总和控制在1uF以内VDD电容总和控制在10uF以内同时选择低漏电的瓷片电容X5R或X7R。另外VBAT在STANDBY模式下依然工作电池电压检测电路要设计好别把电池电压直接接到ADC引脚应该通过分压电阻加MOS管开关只在需要测量时打开分压通路。7. 从一块失败板子到一次完整的电源整改讲一个我自己的实际案例帮助理解上面这些内容如何串联在一起。有次做一块四层板的小型数据采集器芯片是STM32F103C8T6功能包括ADC采集两路模拟量、RTC记录事件时间、通过SPI和SD卡存储数据。第一版打样回来程序调了两周都没法用现象有三个ADC采样值随机跳动超过满量程的2%RTC时间经常对不上SD卡写入偶尔失败。起初怀疑是软件问题把SPI速率从18MHz降到1MHz现象依旧往ADC采样结果加滑动平均滤波跳动从2%降到1%左右但依然无法满足0.5%的设计指标。后来用示波器测量芯片VDD引脚发现纹波在50mV左右在GPIO高速翻转时能冲到100mV但真正的问题藏在VDDA上——VDDA被直接连到了VDD的走线上中间没有磁珠也没有独立的滤波电容。找到原因后把板子做了二次修改VDDA从VDD走线分支处单独拉出来经过一颗600R磁珠再接100nF和1uF电容到VSSAVSSA单独走线到主接地点VREF这款芯片是内部连接VDDA的所以没这个引脚就不存在问题了。同时把每个VDD引脚的100nF电容都挪到了引脚正下方体电容从4.7uF升到10uF。改版后同一个测试程序ADC采样值的峰峰值跳动从原来的40多个LSB降到了4个LSB以内达到了0.3%的精度水平。RTC和SD卡的问题也没再出现。这个案例说明这些问题不是孤立存在的电源域处理不好会影响整个系统的稳定性。看起来无关的模块SDIO、SPI出问题根源可能是芯片内部数字电源和模拟电源之间的相互干扰。最后分享一个每次画板我都会做的事原理图画完后导出一份电源网络连接图把每个供电引脚、旁路电容、电源域直接连线关系都列出来对照ST的参考手册逐一打勾。工具上可以用立创EDA的“设计检查”功能或者Altium的“电源端口检查”但最靠谱的还是人肉核对一遍。这个过程只需要半小时但对避免“只接VDD和GND”这种坑来说是性价比最高的一步。
返回列表