ARTICLE DETAIL

资讯详情

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

STM32电源引脚VDD、VDDA、VBAT到底怎么接?一篇讲透

STM32电源引脚VDD、VDDA、VBAT到底怎么接?一篇讲透 干了几年嵌入式画过不少板子也帮别人排查过不少“上电不工作”“ADC读数乱跳”的怪问题。最后发现很大一部分毛病都出在一个最不起眼的地方——芯片的电源引脚没接对。尤其是看到原理图上那一排VDD、VDDA、VBAT很多刚入门的朋友直接懵了有的干脆把VDDA悬空有的把VBAT直接接地还有的搞不清楚VCC和VDD到底啥关系。今天这篇就把这几个引脚一次说清楚。1. 这几个电源引脚分别是什么为什么有的叫VDD有的叫VCC先解决最让人迷糊的命名问题。你在51单片机上经常看到VCC到了STM32这里变成了VDD、VDDA、VBAT其实是因为两者的“供电语境”不同。VCC这个概念来源于双极型晶体管电路C指的是Collector集电极意思是接到电源正极给整个电路供电的“主电源轨”。到了CMOS时代MOS管的漏极D取代了集电极C的位置所以芯片内部的数字逻辑电源就沿用了VDD的叫法——D就是Drain漏极。再往后芯片内部被分成数字和模拟两个域模拟部分独立供电就有了VDDAA是Analog模拟。VSS自然就是数字地VSSA就是模拟地。对STM32来说VCC并不是芯片上的某个具体引脚而是整个系统里那条主电源轨的统称。比如你用USB的5V供电这5V就习惯叫VCC再用一个LDO把5V转成3.3V这3.3V就是VDD。所以常见的设计是这么一路下来的电源轨典型值说明VCC外部输入5V / 12V来自USB、适配器、电池等外部源头VDD芯片数字电源3.3V / 2.8V / 1.8V由LDO或DC-DC把VCC降压得到VDDA模拟电源与VDD相同或略低给ADC、DAC、内部参考源等模拟电路供电VBAT备份电源1.65V ~ 3.6VRTC和备份寄存器专用供电VREFADC参考电压通常等于VDDAADC满量程对应的电压基准网上很多朋友搜“stm32 vss vdd怎么接”搜出来的是一堆芯片手册片段翻半天也没看懂原因就是没先把这一条供电链路理清楚。你只要记住一句话VCC是系统级的供电入口VDD是芯片级的数字电源轨VDDA是芯片内部模拟部分的专用电源轨VBAT是掉电后给RTC和备份域续命的专用电源轨。2. 一堆VDD和VSS引脚到底全接还是选一个接现在的STM32封装越来越小LQFP48、LQFP64、LQFP100这些封装上你都能看到多个VDD引脚和多个VSS引脚比如F103C8T6这颗经典的LQFP48芯片就有3个VDD、3个VSS。好多新手认为“芯片内部都一样接一个不就行了”这是非常危险的认知。芯片内部虽然是一个完整的晶圆但内部的电源网络是分区域布线的每个引脚的邦定线bonding wire都有各自的寄生电感和寄生电阻。如果某个VDD引脚不接对应的那片内部数字逻辑单元就可能供电不足表现就是芯片能连上调试器但程序跑飞、某个外设莫名不工作、IO口输出电平偏低。这类问题你用万用表测静态电压是看不出来的因为芯片总功耗很低的时候压降不明显一旦外设全开、IO翻转频率提高动态压降就会暴露问题。正确的做法非常明确所有的VDD和VSS引脚必须全部接到对应的电源轨和地平面一个都不能漏。然后在这些引脚旁边就近放置去耦电容一般每对VDD/VSS放一个100nF0.1uF的MLCC再在芯片外围放一个4.7uF或10uF的钽电容/陶瓷电容做整体储能。去耦电容的摆放位置也很有讲究要尽量靠近引脚走线要短最好先过电容再到芯片引脚而不是从电源轨拉一条长线再分叉。还有个实操细节容易被忽略VSS引脚不仅仅是地还是芯片内部所有电流的“回流点”。如果你把VSS引脚接到PCB地平面的走线太细太长数字逻辑开关时产生的瞬态电流会在走线电感上形成压降这个压降会直接影响同一块地平面上的模拟电路导致ADC采出来的数值有周期性跳变。所以画PCB时芯片底下的地过孔要舍得打VSS引脚就近打过孔到地平面这是低成本提升系统稳定性的关键一招。有些板子用两层板芯片背面没法铺整块地这时候可以用“星型接地”的思路所有VSS引脚先用短走线汇聚到一个点再从这个点单独铺一条较宽的地线到电源输入端的地。原理是让数字回流电流和模拟回流电流在物理路径上尽量少重叠这个习惯在画STM32最小系统板时就能养好。3. VDDA和VREF不能不接也别瞎接这是整个标题里我觉得最值得展开的部分。很多人看到VDDA第一反应是“我又不用ADC这个脚应该空着”这个想法直接踩坑。VDDA不仅仅是给ADC供电的它还负责给芯片内部的复位电路、PLL、内部参考电压源供电。如果你把VDDA悬空哪怕你一个ADC引脚都不碰芯片也可能出现上电复位不稳定、外部晶振起振困难、程序跑着跑着突然HardFault的问题。正确接法是在VDDA和VSSA之间接一个1uF的陶瓷电容再在电容旁边并联一个10nF的高频去耦电容同时VDDA这一路的走线要尽量短、尽量直。如果你的系统里数字电源VDD是3.3V模拟电源VDDA直接也接3.3V就好。不想让数字噪声窜进模拟域的话可以加一个磁珠或10欧姆小电阻把VDD和VDDA隔开磁珠选60~100欧100MHz的型号电阻选10欧左右这样能吃掉一部分数字开关噪声。再来说VREF和VREF-。F103系列只有大容量型号如F103ZET6、F103RCT6才有独立的VREF引脚小容量型号VREF在内部直接和VDDA绑定了。如果你用的芯片有VREF引脚VREF建议直接接VDDAVREF-接VSSA中间同样放一个100nF的去耦电容。VREF就是ADC满量程对应的电压它如果纹波很大ADC采出来的数值就会在低位来回跳。你辛辛苦苦写好了采样程序结果测试时发现读数不稳先别急着怀疑算法量一下VREF上的纹波多半能找到答案。有不少朋友在论坛问“ADC采样不准怎么办”我通常先问一句你的VDDA上有没有干净的电如果VDDA直接挂在同一个开关电源输出的3.3V上纹波有50mVADC是12位的满量程3.3V那这50mV纹波就直接等于几十个LSB的误差软件算法再厉害也救不回来。所以在对模拟采样精度有要求的项目里模拟电源要单独走线、单独滤波甚至用单独的LDO给VDDA供电。硬件上省事软件上就得费劲去补这笔账算下来往往不划算。另外注意如果你用STM32的DAC输出模拟电压DAC的供电同样来自VDDA所以VDDA不干净DA输出的波形也会有毛刺。4. VBAT要不要接电池不接电池该怎么处理VBAT这个引脚不少人没用明白。它的作用是给RTC实时时钟和备份寄存器供电当主电源VDD掉电时只要VBAT上还有电RTC就会继续走时备份寄存器里的数据也不会丢。但是有两个很常见的认知误区。第一个是“我没用RTCVBAT悬空就行了”这个也不行。VBAT引脚内部有一个电源切换电路如果VBAT悬空切换电路的状态不确定有些芯片会出现漏电增大的现象甚至在某些情况下影响芯片正常启动。如果不用RTC最简单的做法是把VBAT直接接到VDD上这样备份域一直有电虽然掉电后RTC数据不保但芯片工作完全正常。第二个误区是“VBAT接个纽扣电池就行不用管电压”纽扣电池CR2032的电压是3.0V左右没问题但如果你VDD是3.3V而纽扣电池电压被充到超过VDD0.3V芯片内部的电源切换电路就会通过VBAT引脚向电池反向充电这样既损电池寿命又有安全隐患。所以正确的接法是需要RTC掉电走时VBAT接纽扣电池正极电池负极接GNDVBAT和VDD之间串一个1N4148二极管方向从VDD到VBAT目的就是防止VDD给电池反向充电二极管压降0.7V左右VDD是3.3V时VBAT大概2.6V足够维持RTC工作。不需要RTCVBAT直接接VDD不悬空。想省事但保留扩展能力VBAT对地放一个100nF电容再接一个2P排针正常默认用跳线帽连到VDD以后想加电池时拔掉跳线帽换接电池就行。还要注意VBAT引脚的电压范围是1.65V到3.6V也就是说你VDD用3.3V时VBAT直接接VDD是没问题的如果VDD是3.6V的LDO输出也在范围之内。但如果你VDD用的是5V绝对不能把VBAT直接接VDD5V已经超过VBAT的极限了必须通过二极管降压或者用一个3.3V的LDO单独给VBAT供电。之前帮朋友看过一块板子功能是带时钟的智能家居面板。他的现象是每次断电重启后时间就回到出厂值排查了半天软件后来发现VBAT引脚没连电池也没连VDD内部备份域彻底断电RTC时间自然保不住。这种问题就是“省了一个跳线帽的功夫亏了三天排查时间”。5. 完整的供电连接方案直接把“抄作业”级的接线方式给你讲了这么多知识点这里直接给一套完整的、在常规项目里能直接用的接线方案。假设你的系统是USB 5V输入通过AMS1117-3.3转成3.3V给STM32F103C8T6供电。第一级USB或者外部电源进来5V这部分你爱叫VCC还是5V都行经AMS1117-3.3输出3.3V输出端放一个10uF钽电容加一个100nF陶瓷电容这是LDO的标准滤波配置。第二级3.3V电源轨分三路出去第一路直接接芯片所有VDD引脚每个VDD旁边放一个100nF电容再接一个10uF电容放在芯片附近作为整个数字电源的蓄水池。第二路经过一个10欧姆小电阻或者60欧100MHz磁珠变成模拟电源AVDD接VDDA引脚VDDA旁边放1uF和10nF电容各一个电容另一端接VSSA。第三路如果不用RTC直接接VBAT如果要用电池串二极管后接电池正极电池负极接GND。第三级所有VSS引脚直接接到地平面VSSA引脚单独接一个小的模拟地然后在芯片附近用一颗0欧姆电阻或磁珠将模拟地和数字地单点连接。两层板做不了完整地平面分隔的话至少保证数字地和模拟地在芯片附近一点汇合。这套方案对于绝大多数基于STM32的小项目都够用。可能有人会问“为什么AMS1117的输入放钽电容输出放钽电容传统LDO不都是这样吗”多说一句AMS1117这类LDO本质是一个可调线性稳压器它需要一定的输出电容来保证环路稳定官方手册推荐输出用22uF钽电容但实际上很多板子用10uF钽电容也能稳定工作。如果你手头只有陶瓷电容也不是不能用只是要注意某些LDO在纯陶瓷电容负载下会有振荡风险如果示波器看到电源波形有持续振铃优先考虑换回钽电容或增大陶瓷电容到22uF以上。还有个细节VDD、VDDA、VBAT的上电时序问题。STM32要求VDDA不能比VDD晚太多上电最好同步或者略早一点。实际设计里如果你VDDA是直接从VDD串电阻过去的天然就是同步上电没问题如果你用了两路独立的LDO给VDD和VDDA供电要确保两路LDO的上电延迟差不要超过几百毫秒否则芯片可能因内部闩锁而损坏。虽然现代芯片已经有保护电路但设计上还是别去踩这个边界。画PCB时芯片下面多打几个地过孔VDD和VDDA的走线至少10mil以上VBAT走线8mil就够因为它的电流非常小。去耦电容尽量靠近引脚这是老生常谈但实际操作中很多人嫌走线麻烦把电容放在芯片外侧绕了一大圈效果大打折扣。6. 常见供电问题排查与实测经验最后整理几个我实际排查过的案例你对照着看遇到类似症状能少走很多弯路。现象一芯片能识别到SWD设备但程序下载后不运行。这种通常是VDD虽然有电压但某个VDD引脚没接或者去耦电容缺失导致核心逻辑供电不足。我遇到过一块板子3.3V空载量正常一接芯片就被拉到2.9V查了半天发现是AMS1117输出电容焊反了钽电容极性接反导致漏电。还有一次是LQFP48的芯片某一侧VDD引脚焊盘虚焊肉眼看不出来用放大镜才看到引脚和焊盘之间有一条极细的裂纹。遇到这类问题先用万用表二极管档量VDD和VSS之间是否导通芯片未上电时量到几百欧~几千欧是正常的上电后再量对地电压最后用示波器看电源纹波。现象二ADC采样值稳定但严重偏低。比如输入1.65V采出来只有1.2V。这通常是VDDA电压偏低或者VREF被接到了错误的电压上。如果VREF悬空内部参考电压就不确定采样结果自然不对。用万用表直接量VREF引脚对地电压如果明显低于VDD那就顺着这条线查。现象三RTC时间能走但一断电就复位。典型原因就是VBAT没有电。用万用表量VBAT对地电压如果为0说明VBAT没接通或二极管方向接反了。还有种情况是纽扣电池座接触不良电池正负极簧片氧化这类问题在批量生产时容易被忽略建议量产前把电池座列为关键来料检验项。现象四低功耗模式下电流明显偏大。STM32在STOP或STANDBY模式下的数据手册电流都是微安级但你实测发现毫安级。很多时候问题不在固件而在VDDA和VSSA之间漏接电容或者VBAT引脚悬空导致备份域电路通过IO内部路径漏电。另外板子上除了STM32还有其他外围器件比如LED、LDO静态电流低功耗测试要把这些外围因素也考虑进去不然会被误导。下面把这个排查思路整理成一张速查表方便你对照现象优先排查项参考处理芯片上电不启动VDD和VSS是否全部连接补焊确保每个电源引脚可靠连接能下载程序但运行不稳定各路电源去耦电容位置和容量每个VDD旁加100nF整体加10uFADC读数跳变或偏低VDDA、VREF的电压和纹波加磁珠隔离、增大滤波电容RTC掉电复位VBAT是否接入电池/VDD确认VBAT电压在1.65V以上低功耗电流过大VBAT、VDDA是否悬空外围漏电接上所有电源引脚检查外围器件还有一件事值得单独说很多人在PCB layout阶段喜欢把所有电源引脚用走线串成一串daisy chain这个在高速或高精度项目里要尽量避免。给每个电源引脚单独从主电源轨引线相当于并联供电比串联走线的压降小得多。当然两层板空间有限做不到每个引脚单独拉线的时候至少保证电源走线的宽度足够比如20mil以上并且不要经过太窄的瓶颈。7. 一点个人体会画了这么多年的板子我最大的感受是电源设计这种事前期多花半小时把手册看仔细后期能省下好几个通宵。VDD、VDDA、VBAT这几个引脚看着不起眼但它们就像人体的血管任何一条接错了系统都会以各种意想不到的方式“生病”。很多朋友习惯出了问题先怀疑固件、怀疑时钟配置、怀疑外设驱动折腾一圈下来才发现是硬件供电的锅。所以我的习惯是拿到一块新板子第一步不是烧程序而是先拿万用表把所有电源引脚对地量一遍第二步上电量各路电压是否在正常范围、纹波是否干净第三步才轮到下载程序。这套流程看着慢实际上是最快的排错路径。最后分享一个小技巧画原理图时把ST
返回列表