ARTICLE DETAIL

资讯详情

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

STM32电源引脚全解析:VDDA、VBAT、VCAP接法及PCB设计要点

STM32电源引脚全解析:VDDA、VBAT、VCAP接法及PCB设计要点 1. 一张电源树看懂STM32为什么不止VDD和GND先说个我真实遇到的场景。几年前帮一个朋友调一块STM32F103的最小系统板现象特别诡异板子用ST-Link能连上程序也能下载但跑起来就是不稳定——有时候上电直接跑飞有时候工作几分钟后ADC采出来的数据开始漂最离谱的一次是芯片莫名其妙发热量了一下电流比正常值大了将近一倍。排查到最后问题居然出在供电上。那板子的VDDA直接悬空VBAT也没接VREF更是没影儿。我当时就明白了这又是只把VDD和GND接上就以为万事大吉的典型做法。很多刚接触STM32的朋友都会有这个疑问芯片不就是个数字器件吗我把主电源接好地接好不就能跑了吗VDDA、VBAT这些引脚到底是什么角色不接到底会怎样要搞清楚这个问题得先看一张图——STM32内部的电源树结构。虽然不同系列F1、F4、L4、H7细节上有差异但大的框架基本一致。芯片内部大致可以分成这么几个供电域VDD/VSS域数字核心、Flash、SRAM、大部分I/O引脚和数字外设的主电源一般接了稳压器输出或者直接接电池。VDDA/VSSA域模拟电路专用电源给ADC、DAC、复位电路、内部参考电压、PLL、RC振荡器等供电。VREF/VREF-域ADC和DAC的参考电压输入决定转换的满量程电压。VBAT域备份域供电给RTC、备份寄存器和LSE外部低速晶振供电用于主电源掉电后保持时间和数据。VCAP/VCORE域内核逻辑电压由内部稳压器输出通过VCAP引脚外接电容稳定这个引脚从F2/F4/F7/H7这些高性能系列开始出现。这些域之间的关系不是完全隔离的而是有内部的电源切换和连接逻辑。比如VDDA和VDD之间内部有一个稳压器或连接路径VBAT和VDD之间也存在电源切换开关。正是这套结构决定了不接会怎样的答案不是一句会坏或不会坏能概括的。所以核心问题来了如果只接VDD和GND把其他电源引脚全部悬空芯片能跑吗答案是多数情况下能跑但这种能跑就像开车不系安全带——不出事儿的时候你觉着没啥一出事儿就是大问题。而且有些系列、有些场景下不接这些引脚芯片可能压根就无法启动。要理解这个问题就得把每个电源引脚单独拿出来说清楚。下面我按出问题概率从高到低一个一个拆开讲。2. 最容易被坑的VDDA/VSSA它管着的不只是ADC2.1 VDDA悬空时芯片内部到底发生了什么VDDA是模拟电源引脚给ADC、DAC、温度传感器、内部参考电压、复位电路、PLL、HSI内部高速RC振荡器、HSE振荡器驱动等模拟模块供电。先说个很多人不知道的点STM32内部并没有把VDD和VDDA完全短接。在F103这样的芯片上VDDA和VDD之间通过一个内部的开关或低压差路径连接上电后VDD可以喂给VDDA域所以就算你不接VDDA芯片也能从VDD获得模拟电源。这也是为什么很多人VDDA悬空芯片照样能跑的原因。但问题就出在这个喂上。内部这条路径的电阻并不小而且它经过的是芯片内部走线抗干扰能力很差。当芯片内部数字电路大规模翻转时比如高频通信、大量GPIO切换、Flash擦写VDD上的纹波和噪声会通过这条路径直接耦合进模拟域。这时候你会遇到什么现象我列一下实际见过的ADC采样值飘忽不定同一个电压采出来每次差十几个LSB到几十个LSB而且没有规律。用示波器看VREF或者VDDA引脚能看到明显的毛刺。ADC在某个阈值附近反复跳变比如采一个2.5V的电压一会儿是2498mV一会儿是2512mV怎么滤波都压不下去。复位电路误触发芯片偶尔无缘无故重启尤其是在电机启动、继电器吸合这类大电流负载动作的瞬间。PLL工作不稳定某些芯片上表现为系统时钟频率偏移串口波特率偶尔出错通信偶发乱码。内部参考电压不准导致用VREFINT校准过的ADC仍然误差很大。我见过最夸张的一个案例一块板子VDDA悬空ADC采集一个直流电压信号波形长得跟心电图似的频率恰好和SPI通信的帧率一致——这就是数字噪声调制到模拟域上的典型特征。2.2 VREF不接ADC满量程就是一笔糊涂账VREF是ADC参考电压正端。在F103这种中小容量型号上VREF和VDDA是同一个引脚但在F405、F427这些大容量型号上VREF是独立引脚可以单独接外部精密参考电压源。如果你用的是VREF独立引脚的型号并且把它悬空那ADC还能工作吗答案是能但参考电压变得不确定。手册上写的典型接法是VREF直接和VDDA连接这样默认参考电压就是模拟电源电压。但悬空的话VREF引脚处于高阻状态内部虽然有上拉结构但阻抗极高一点点漏电都会让参考电压漂移。实测表现是ADC采样结果整体偏移而且随着温度、湿度变化而缓慢漂移极其难排查。这里多说一句如果你的应用对ADC精度有要求比如做电流采集、电桥测量这类模拟量采集VREF建议不要直接接VDDA而是用一颗高精度基准源比如TL431、REF3030这类单独供电ADC精度能提升一个档次。2.3 VDDA的推荐接法不是简单接个VDD就完了数据手册里要求的是VDDA和VSSA需要连接到一个干净的模拟电源。最标准的做法是这样VDDA和VDD分开布线从电源入口处汇合而不是在芯片引脚附近短接。这样模拟域和数字域的电流路径在源头分开避免数字噪声注入模拟域。VDDA引脚就近放一颗1μF10nF的去耦电容和数字域的VDD去耦电容物理上分开。1μF负责低频能量补充10nF负责高频噪声旁路。VSSA接地要单独走不要和数字GND在芯片肚子底下共用一小段走线。可以的话模拟地和数字地在PCB上单点连接或者在ADC采样时刻确保数字地噪声不干扰模拟地。如果板子空间紧张最差也要保证VDDA引脚上有一个0.1μF的陶瓷电容就近接地。完全不加电容、VDDA直接一根长线连到电源那ADC精度基本就别指望了。对于要求更高的场景可以在VDDA前端串一个磁珠或者几欧姆的小电阻配合电容组成RC滤波。注意这个电阻不能太大——VDDA引脚在芯片内部消耗的电流虽然不大一般几个毫安级别但如果电阻过大压降会导致VDDA低于规格书要求的范围芯片模拟部分可能工作异常。通常串10Ω以内比较保险。3. VBAT不接会怎样从备份域原理到实测表现3.1 VBAT到底管什么为什么很多开发板都不接VBAT是备份域的电源输入给RTC、备份寄存器和LSE外部32.768kHz低速晶振供电。它的意义在于系统主电源VDD掉电后只要VBAT上还有电RTC就能继续走时备份寄存器里的数据就不会丢。很多开发板上VBAT引脚是悬空的因为大多数学习用途的板子根本不需要RTC功能也不在乎备份寄存器。这给很多人造成了VBAT可以不管的印象。但如果是做产品、做低功耗设备VBAT的处理方式直接决定了一个功能是否可用。先看F103的数据手册里对VBAT的描述当VDD存在时备份域由VDD供电当VDD掉电后自动切换到VBAT供电。内部有一个电源切换开关优先级是VDD VBAT。3.2 VBAT悬空但在VDD存在时芯片能正常工作吗能RTC也能走——因为此时备份域用的是VDD。所以如果你只是调试程序VBAT悬空完全不影响芯片运行。这也是为什么很多人一直没发现问题的原因。但这里有一个容易翻车的细节如果VBAT悬空而你在代码里用了RTC或者备份寄存器然后系统掉电重启RTC时间会归零备份寄存器数据会丢。这在某些产品上是不可接受的行为——比如一个带日历功能的设备用户设好时间后断电再上电时间恢复到初始值用户直接认为产品是坏的。另一个极端情况如果芯片的VDD还没建立起来比如3.3V电源还没稳定而VBAT已经上电备份域会先由VBAT供电。这时候如果VBAT电压和VDD差异较大内部切换开关上会产生电流倒灌。低功耗设计里这种倒灌电流是电池电量流失的一个隐性来源。3.3 VBAT的具体接法产品级和开发级的不同处理产品级设计里VBAT的标准接法取决于你是否需要RTC需要使用RTC或备份寄存器VBAT接电池CR1220纽扣电池或超级电容通过一个低漏电流的二极管/PMOS开关隔离主电源防止电池给整个系统供电。同时VBAT引脚要并一颗100nF电容到地滤除高频噪声电池正极到VBAT之间建议串联一个几百欧姆的电阻做限流保护。不需要RTC最简单可靠的做法是VBAT直接短接到VDD。注意是短接不是悬空。数据手册明确指出VBAT不能悬空因为悬空状态下引脚电压不确定可能导致内部ESD保护二极管导通产生不可控的漏电流。F103数据手册里有一句话When VBAT is not used, it must be tied to VDD。这个必须很多人没注意到。低功耗产品如果系统在主电源掉电后希望RTC继续跑但又不希望纽扣电池被其他电路消耗需要在VBAT和VDD之间加切换电路。经典做法是用两个二极管一个从VDD到VBAT一个从电池到VBAT利用二极管的单向导通特性实现自动切换。缺点是有0.3V左右的压降。要求高的可以用BAT54C这类双二极管或者专用电源切换芯片比如TPS2121、LTC4415这类。有一种特殊情况笔记本、工业控制器这类设备里VBAT经常接一个大容量电容或者充电电池在系统完全断电后靠电容存储的能量维持RTC一段时间。这时候电容容量的计算有个简单公式I_bat 是备份域的工作电流典型值约1~2μA低温下可能更小t 是需要的维持时间ΔV 是允许的电压跌落范围。比如要求断电后维持72小时备份电流1.5μA允许从3.3V跌落到2.0V那么 C I × t / ΔV 1.5μA × 72×3600s / 1.3V ≈ 0.3F。需要一颗0.33F的超级电容这个容量可不小实际选型时还得考虑漏电流、温度特性、体积通常要选0.5F甚至1F的规格才能保证余量。3.4 一个VBAT和AD/DA仿真器的真实坑再分享一个实战中踩过的坑。有次做一块带RTC的板子VBAT接了纽扣电池座但电池座没装电池。上电调试时发现RTC时间能跑但偶尔会出现时间跳变。排查了很久最后发现是VBAT和VDD之间的切换逻辑问题因为VBAT引脚悬空内部ESD二极管在某种电压状态下微导通导致备份域的供电电压不稳LSE晶振偶尔停振时间自然就错了。装上电池后问题消失但后来换了方案——干脆把VBAT通过一个0Ω电阻接到VDD不用电池了。在不需要断电保持时间的应用里这个方案比悬空可靠得多。所以我的建议很简单确定不需要RTC的板子VBAT直接接VDD需要RTC的板子老老实实按产品级方案接电池或超级电容。别悬空别心存侥幸。4. VCAP/VCORE、VREF-这些隐藏引脚以及不同系列的差异4.1 VCAP不接电容高性能系列直接罢工如果你用的是F4、F7、H7、L4这些系列会发现芯片上多了一个标着VCAP的引脚。这个引脚是内部核心逻辑稳压器的输出端需要外接一个电容到地用来稳定内核电压。VDD怎么变核心电压始终稳定在某个值比如F4是1.2V左右全靠这个电容。这个引脚非常关键。数据手册上写得很明确VCAP引脚必须通过一个电容连接到地电容容值因系列而异F4系列是2.2μFH7系列是2.2μF或4.7μFL4系列也是2.2μF具体以对应型号的数据手册为准。电容一般要求陶瓷电容耐压6.3V或10VESR要低。VCAP不接电容会怎样我来回答芯片大概率无法正常启动或者启动后立刻进入某种异常状态。实测过F405VCAP悬空上电后NRST引脚一直是低电平芯片反复复位根本跑不进用户程序。用示波器测VCAP引脚电压能测到类似充放电的锯齿波——内部稳压器在反复尝试建立电压但失败触发欠压复位然后又重新启动形成死循环。这个坑在画PCB时特别容易踩因为原理图库和封装图里VCAP引脚位置往往比较偏有些偷懒的原理图库甚至没画出来。用了这类库画图打样回来芯片就起不来检查半天才发现是VCAP没接电容。F103这种老型号没有VCAP引脚因为它的内核稳压器在内部已经做了补偿但代价是功耗相对较高。从F2/F4之后用了外部电容方案性能和功耗反而优化了但外部电路就多了一个必须项。4.2 VREF-和VSSA的关系双极性/差分测量时才显现的问题VREF-是ADC参考电压负端规格书上要求VREF-必须和VSSA连接。在大多数型号上VREF-和VSSA是同一个引脚但在F405、F427这些型号上它们是分开的两个引脚。VREF-悬空或者接错的话ADC转换结果会完全没有参考意义而且可能损坏内部模拟电路。实际处理很简单VREF-直接和VSSA连在一起再统一接到模拟地。这里重申一个关键点模拟地VSSA/VREF-和数字地VSS之间应该怎么处理。理论上模拟地和数字地是分开的但地平面割裂带来的问题有时候比噪声还大。我的习惯做法是小板上直接共地但模拟部分单独走线、单独电容去耦大板上用0Ω电阻或磁珠在电源入口处单点连接模拟地和数字地。这个经验是从实际项目中总结出来的比死记必须分开或必须共地都可靠。4.3 不同系列的电源引脚差异对照很多人画原理图只找引脚编号不看引脚功能结果换了个系列就把一系列引脚搞混了。这里列一个常用系列的电源引脚对照表方便查阅系列VDD/VSSVDDA/VSSAVREF/VREF-VBATVCAPSTM32F103LQFP48VDD 1/32, VSS 24/48VDDA 9, VSSA 8VDDA引脚9无独立VREF1无STM32F103LQFP64VDD 11/47, VSS 12/48VDDA 26, VSSA 25VDDA无独立VREF1无STM32F405LQFP64VDD 11/47, VSS 12/48VDDA 25, VSSA 26VREF 24, VREF- 23221STM32F407LQFP100多组VDDA 14, VSSA 15VREF 13, VREF- 12621STM32H743LQFP100多组VDDA 14, VSSA 16VREF 13, VREF- 12621STM32L431LQFP48VDD 10/28, VSS 11/27VDDA 9, VSSA 8VDDA无独立VREF1无注意具体引脚编号必须以你实际使用的封装型号对应的数据手册为准不同封装引脚位置不同。上表仅作对比示意别直接照抄去画封装。从这个表能看出几个规律VCAP是F4/F7/H7系列才有的VREF独立引脚出现在大容量型号上F103这样的老型号没有单独的VREF引脚VREF内部直接连VDDA。这些差异决定了只接VDD和GND在不同系列上的后果完全不同——F103可能能跑但ADC飘F407/H743可能直接启动不了。5. 电源完整性不只是引脚接对去耦电容、地回路和PCB布局的那些细节5.1 数据手册里每个VDD都要放100nF的真正含义很多人看数据手册看到每个VDD引脚需要连接一个100nF陶瓷电容觉得不过是例行公事布局时把所有去耦电容排成一排放在芯片一边完全不管每个电容离对应引脚的距离。这种做法在某些情况下确实能跑但高速设计里就是自己给自己埋雷。去耦电容的工作原理是当芯片内部数字电路翻转时瞬间需要从电源吸取一个尖峰电流。这个电流如果从远处电源走线过来走线电感会产生压降VDD引脚电压瞬间跌落。去耦电容的作用就是在引脚附近建立一个局部电荷池就近补充这个瞬态电流。关键点在于100nF电容和芯片VDD引脚之间的走线越短越好最好紧贴引脚放置过孔直接到地平面。一个典型的反面教材是VDD引脚在芯片左边去耦电容却放在芯片右边中间隔了整个芯片长度走线绕了一大圈——那这个电容基本等于白放因为它和引脚之间的走线电感已经大到失去高频响应能力了。我的布线习惯是每个VDD引脚旁边放一个100nF0402或0603挨着引脚走线尽量短粗全板电源入口处放一个10μF左右的钽电容或大容量陶瓷电容负责低频能量缓冲如果空间允许再用一个1μF放在VDDA附近和VDD的去耦电容分开。这样组成一个多级去耦结构实测电源纹波能改善不少。5.2 地回路为什么GND处理比VDD处理更关键芯片能不能稳定可靠地工作地的质量起到的作用往往比电源更大。一个很形象的比喻电源是给水管道地是排水管道排水管道堵了再多的水也白搭。STM32的地引脚一般有好几个VSS、VSSA在PCB上应该通过过孔直接连接到完整的地平面上不要走细长导线。VSSA和VSS的关系前面说过了这里再强调一个工程细节如果板子上有电机、继电器、电磁阀这类感性负载它们的驱动电流回流路径绝对不能经过芯片地。否则你会在芯片VSS引脚上测到地弹噪声——地平面某个局部瞬间电压跳动外部看起来就是芯片工作异常。一个经典案例一块控制板STM32控制一个PWM调速的电机驱动电机一启动STM32就复位。排查到最后发现电机驱动的功率地和控制板的数字地共用了一小段PCB走线电机启动瞬间几十A的电流在这个走线上产生了几百毫伏的压降直接把STM32的复位电路打挂了。处理方式是功率地和数字地分开走在电源入口处汇合问题彻底消失。5.3 上电时序要不要考虑什么时候要考虑STM32的上电时序要求是VDD的上升斜率不能太慢。一般来说从0V到额定电压的上升时间不能超过规格书规定的值F103是100μs左右H7系列更严格。如果电源上升太慢内部复位电路可能无法正确触发芯片进入不定状态。电源上升缓慢的典型场景是用一个大电容做缓启动、电源输出能力不足带不动大电容、用了慢速的软启动电路。实测中遇到过用USB口直接给带大电容的板子供电USB口限流导致电压爬升极慢芯片能连上ST-Link但程序一直跑不对。后来在电源入口处减小了电容或者用外部电源供电就正常了。多电源系统的上电时序比如先VDD后VDDA还是先VDDA后VDD也是个容易被忽略的问题。STM32大多数系列要求不高一般同时上电就可以但H7系列有特殊要求VDD和VDDA上升时间差不能太大。稳妥的做法是把VDD和VDDA看作同一个电源网络用磁珠或0Ω电阻区分这样上电时序天然一致既满足规格书要求又简化设计。6. 一个完整的电源设计检查清单帮你避开90%的供电坑最后分享一套我自己一直在用的检查清单。每画完一块STM32板子我都会对着这个清单逐项过一遍能挡掉绝大部分供电相关的低级错误。6.1 原理图阶段逐项核对每个VDD引脚都有去耦电容100nF并且在芯片附近有物理位置放置VDDA通过磁珠或0Ω电阻连接到VDDVDDA引脚上有1μF10nF去耦电容VSSA连接到模拟地VSS连接到数字地两者在合适位置单点连接VBAT需要RTC就接电池/超级电容不需要就短接到VDD绝不悬空VREF接VDDA或独立基准源VREF-接VSSAVCAP引脚接规格书要求的容值电容F4/F7/H7/L4系列极性不能反NRST引脚有上拉电阻和复位电容这个不是电源引脚但和复位稳定性强相关电源入口处有总去耦电容10μF级别考虑是否加反接保护和过流保护6.2 PCB Layout阶段重点检查去耦电容尽量靠近对应引脚过孔直接到地层VSS引脚到地平面的过孔数量要足够至少一个高频设计两个更好模拟部分走线不要和数字信号线平行长距离走线电感类负载电机、继电器的驱动回路远离芯片供电回路晶振附近的VDD走线干净晶振下方尽量不要走信号线多层板时芯片正下方尽量保持完整的地平面不要被走线切开6.3 上电测试时需要验证的项目万用表先量一遍所有电源引脚对地阻抗排除短路后再上电。这个习惯帮我抓过好几次封装画错的低级失误。空载上电测量VDD电压在规格范围内电流在合理区间F103大概几十毫安H7系列略高用示波器看VDD纹波正常情况峰峰值应该在几十毫伏以内用示波器测VCAP引脚如果有电压稳定在规格值没有锯齿波运行一个简单的ADC采样程序采一个稳定电压确认数据不飘——这一步能快速暴露VDDA/VREF的问题运行RTC测试程序如果接电池断电再上电确认时间继续走——这一步验证VBAT电路如果板子有通信接口跑一段持续通信测试确认长时间运行不异常——这一步能把电源完整性、热稳定性等问题逼出来每次画新板子或者改版我都会把这套流程走一遍。很多看起来玄学的芯片异常比如偶发复位、ADC漂移、通信乱码、特定温度下不工作最后追根溯源大概率都在供电设计上。把VDDA、VBAT、VCAP、去耦、地上这些问题一次解决好后续调试能省下大量时间。
返回列表