ARTICLE DETAIL

资讯详情

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

STM32电源引脚VDD/VDDA/VBAT详解:最小系统电源设计与去耦接线指南

STM32电源引脚VDD/VDDA/VBAT详解:最小系统电源设计与去耦接线指南 第一次用STM32画板子的人十个有九个会在电源引脚上栽跟头。明明照着开发板抄了一个最小系统图结果自己画的时候发现STM32的引脚上赫然写着 VDD、VDDA、VBAT却根本没有 VCC 这个脚再一翻网上不少原理图又到处都是 VCC。VCC 和 VDD 到底是不是一回事VDDA 为什么单独拉出来VBAT 不接行不行如果只用 3.3V 供电这些脚是不是统统接到 3.3V 就完事了这篇文章不会让你去翻几千页的数据手册也不会讲什么高深理论。我会直接把 VCC、VDD、VDDA、VBAT 这几个脚的本质讲清楚画一张可以照着抄的电源树接线图再把我自己画板、调板时在这几个脚上踩过的坑翻出来晒一晒。不管你是在做毕设、画核心板还是只是想把开发板飞线改稳定把这几个脚弄明白后面调 ADC、调 RTC、查复位异常会省下一大半时间。1. 四个电源名词的“家谱”先在原理图上分清它们是谁1.1 VCC和VDD一个是历史称呼一个是芯片本名先解开最核心的误会STM32 这颗芯片上根本没有 VCC 引脚它的正电源引脚在官方数据手册里就老老实实写着 VDD。那 VCC 哪来的这是历史遗留问题。VCC 最早来自双极型晶体管BJT时代的术语全称是 Voltage at Common Collector就是“共集电极电压”后来泛指整个电路系统的正电源输入。到了 CMOS 时代芯片内部主要用场效应管正电源端自然就叫 VDDVoltage Drain漏极电源地端叫 VSSVoltage Source。所以你在原理图里看到 VCC 和 VDD在绝大多数场合是指同一类东西芯片的正电源。但问题就出在“绝大多数”这几个字上。很多开发板的原理图习惯把 USB 输入的 5V 标成 VCC把经过稳压器输出的 3.3V 标成 VDD。这种标注本身没问题它是一种“系统级”命名习惯。但如果你把开发板上的 VCC 和 STM32 手册里的 VDD 混在一起就危险了STM32 的 VDD 引脚只接受 2.0V~3.6VF1 系列典型 3.3V你如果把板子上那个标着 VCC 的 5V 直接怼到 STM32 的 VDD 脚上轻则芯片发烫重则直接冒烟。所以我的习惯是原理图里把 5V 网络叫 5V把 3.3V 网络叫 3V3芯片引脚上的 VDD、VDDA、VBAT 全部按手册原名标注不额外套 VCC 这个笼统称呼。这样画出来的图任何人一眼就能看懂也不会接错。1.2 VDD和VSS芯片的数字生命线VDD 是 STM32 数字核心、GPIO、内部 Flash、SRAM 等数字电路的供电脚VSS 就是对应的地。STM32 的封装上通常不止一组 VDD/VSS比如 F103C8T6LQFP48 封装就有多组大封装如 LQFP100 的 VDD/VSS 数量更多。很多人第一次画图时会问既然芯片内部这些 VDD 是连在一起的我只接其中一两组行不行答案是能跑但不建议。芯片内部的多个 VDD 确实属于同一个电源网络但每一组 VDD/VSS 引脚都有它对应的键合线、引脚框架和内部供电区域。如果只接其中一组电流会全部从这一组引脚流入导致引脚和内部连线上电流密度偏大压降也会比分散布局时更大。更麻烦的是如果某个区域对应的 VDD 悬空高频瞬态电流就要走更远的内部路径到达那里供电回路电感变大很容易引入噪声和地弹。我实测过只给部分 VDD 供电的板子GPIO 高速翻转时偶尔出现串口乱码把所有 VDD/VSS 都按手册接齐之后问题就消失了。所以原则很简单手册上列了几个 VDD你就接几个列了几个 VSS你就接几个地。一个都不要漏。1.3 VDDA给ADC和内部模拟模块独立喂水VDDA 是模拟电源引脚给 STM32 内部的 ADC、温度传感器、内部参考电压、复位电路等模拟模块供电。这里要强调一个反直觉的点哪怕你完全不用 ADCVDDA 也必须接。因为 STM32 内部的复位电路和部分时钟检测逻辑是挂在模拟电源域上的。VDDA 如果悬空芯片的上电复位行为可能变得非常诡异有时候能跑有时候上电后直接卡死有时候用着用着突然复位。这不是芯片坏了就是供电问题。VDDA 的电压范围和 VDD 一样典型 3.3V。但因为它给模拟电路供电对纹波和噪声更敏感。后面我会专门讲 VDDA 的滤波要求这里先记住结论VDDA 必须接并且要接得更干净。另外如果封装上有 VREF 和 VREF- 引脚大封装才有小封装如 LQFP48 通常没有这两个脚内部已经和 VDDA 连好一般把 VREF 接到 VDDAVREF- 接到地。如果你要追求 ADC 的最高精度可以给 VREF 专门接一个高精度基准源比如 3.0V 或 2.5V 的基准芯片。但对绝大多数项目来说VREF 直接跟 VDDA 走就够用了。1.4 VBAT备份域的“小保险丝”VBAT 是备份电源引脚负责给 RTC实时时钟、备份寄存器和备份 SRAM 供电。它的核心价值在于当整个系统断电VDD 消失时只要 VBAT 上还有电RTC 就能继续走时备份寄存器里的数据也不会丢。VBAT 的正常工作电压是 1.8V~3.6V。如果你不需要掉电保存时间可以直接把 VBAT 和 VDD 连在一起如果需要断电后 RTC 继续走就接一颗 3V 纽扣电池。有一点必须反复强调VBAT 绝对不可以悬空。我见过好几个“RTC 每次断电就归零”的求助贴最后查到原因都是 VBAT 没接。还有些人 VBAT 悬空后芯片出现各种随机复位、下载程序失败的现象把 STM32 焊下来换新芯片还是一样最后查到 VBAT 空着。这个脚不接会让备份域处于不定的电位状态内部电路行为完全不可预测。引脚全称含义主要为谁供电典型电压不接的后果VDD数字电源内核、GPIO、Flash、SRAM3.3V芯片完全不工作或部分模块异常VSS数字地所有数字电路回流0V同上必须全部接地VDDA模拟电源ADC、复位、内部参考等3.3V上电复位异常、ADC无法正常工作VBAT备份电源RTC、备份寄存器、备份SRAM1.8V~3.6VRTC不工作、掉电丢时间、异常复位VREFADC参考正端ADC采样参考接VDDA或外部基准ADC满量程不准VREF-ADC参考负端ADC参考地接地ADC在零刻度漂移需接地2. 最小系统电源树从5V进来到每个引脚的完整接法2.1 先搭一个典型的电源架构说到接线得先从整个板的电源架构看起。绝大多数 STM32 开发板的输入电源是 USB 的 5V或者外部直流 5V然后通过一颗 AMS1117-3.3 之类的 LDO 稳压到 3.3V再分发给 STM32 的各个电源引脚。整个过程可以用一张电源树图表示USB 5V / 外部5V │ ▼ AMS1117-3.3 │ ▼ 3V3 电源轨 ──────────────► VDD_1/VDD_2/VDD_3... │ │ │ 每个VDD脚就近接100nF到GND │ ├── 磁珠FB (600Ω100MHz) │ │ │ ▼ │ VDDA / VREF VREF- ──► GND │ │ │ 1μF 10nF 到GND │ └──── 二极管 ────────► VBAT ──► 100nF到GND ▲ │ 3V纽扣电池可选这个图不是让你背下来而是理解它的思路5V 先经过稳压器降到 3.3V3.3V 再分成三路——一路直接给 VDD 数字电源一路经过磁珠滤波后给 VDDA 模拟电源一路通过二极管隔离后给 VBAT 备份电源。GND 是所有 VSS、VSSA、VREF- 的共同参考点。2.2 VDD/VSS 逐引脚对应别只凭感觉抄开发板我给新手画图时的建议是打开 STM32 的数据手册Datasheet翻到引脚定义那一页把 MCU 符号里所有 VDD 引脚统一连到 3V3 网络所有 VSS 引脚统一连到 GND 网络。这里不需要做任何“取舍”也不需要理解每个电源脚负责哪个区域照单全收就行。有一点要特别提醒不要直接拿别人的开发板原理图“抄一半”。很多开发板为了省事在原理图里把 VDD/VSS 画得很隐蔽有些甚至只标引脚编号不标网络名。等你导入 PCB 时才发现某几个 VDD 脚是悬空的。更隐蔽的是有的开发板因为布局限制会把其中一组 VDD/VSS 当作“测试点”处理这在量产板或学习板上可能没问题但你自己画板子时完全没有必要学这个老老实实全部接上最可靠。我个人的做法是原理图里用“电源符号”给 VDD、VDDA、VBAT 分别建独立的电源网络名3V3、3V3_A、VBATVSS 统一用 GND。这样到了 PCB 布局阶段哪个脚没接、哪块铺铜没连上一眼就能看出来。2.3 VDDA 和 VREF 的具体连法VDDA 的接法有两种层次第一种最简单、最稳妥VDDA 直接和 VDD 连同一个 3.3V 网络然后在 VDDA 引脚旁边放一颗 1μF 和一颗 10nF 电容到地。F1 系列的数据手册里这种方式是允许的芯片能正常工作ADC 也能用只是精度会受一点影响。第二种追求 ADC 精度在 3.3V 和 VDDA 之间串一颗磁珠比如 600Ω100MHz或者一颗 10Ω 左右的小电阻把数字电源的高频噪声隔一隔然后在 VDDA 引脚处放 1μF 10nF 到地。磁珠的作用相当于一个低通滤波器它让直流 3.3V 顺利通过但把上百 MHz 的高频开关噪声衰减掉。这里有个很容易被人忽视的细节VREF-。如果你的封装上有这个引脚绝对不能悬空一定要接到地。VREF- 悬空会导致 ADC 零刻度参考不稳定采样值在小信号时乱跳。如果封装上没有 VREF- 引脚说明它内部已经连到 VSSA你只需要把 VSSA 接地就行。我见过一个初学者画的板子ADC 代码怎么调都不对采 0V 时数值不是 0 而是在几十到几百之间波动后来发现是 VREF- 网络只连了焊盘PCB 上漏了一根线。这种问题查起来真的很浪费时间。2.4 VBAT 的基本接法先决定要不要“掉电走时”VBAT 的接法其实取决于一个产品需求系统断电后RTC 要不要继续走如果不需要那最简单把 VBAT 直接连到 3.3V。这样系统上电时备份域有电RTC 能走系统断电后备份域也没电RTC 停止下次上电重新计时。很多项目就是这样做的没毛病。如果需要断电后继续走时那就得接电池。经典的接法是用两颗二极管做隔离一颗二极管从 3.3V 接到 VBAT另一颗从纽扣电池正极接到 VBAT两组电源共同向 VBAT 供电。如果 3.3V 存在VBAT 由 3.3V 供电电池几乎不耗电3.3V 消失后电池自动接管给 RTC 续命。这样既省电又可靠。这个电路的细节会在第四章展开这里你先记住一个原则VBAT 永远要连接到某个正常电位上绝对不能悬空。3. 去耦电容放错位置等于白接VDD、VDDA的滤波要求差一条街3.1 每个VDD脚一颗100nF这不是玄学很多人画完原理图后觉得“反正都是 3.3V放一两个电容意思意思就行”。等板子调起来才发现各种怪问题LCD 刷新时 MCU 偶尔复位、PWM 输出波形毛刺巨大、串口偶发乱码。这些大概率不是代码问题而是去耦电容没放够、没放对。去耦电容的作用是给芯片提供一个“本地能量池”。STM32 的 IO 在翻转瞬间内部 MOS 管同时开关会产生一个非常陡峭的瞬态电流需求这个电流变化率可以达到纳秒级。如果 VDD 引脚旁边没有一个低阻抗的电容顶着瞬态电流只能从远处的电源走线流过来走线电感会阻碍电流突变结果就是 VDD 引脚上的电压瞬间跌落形成一个噪声尖峰。这个尖峰轻则干扰 ADC重则触发复位。原则很简单每个 VDD 引脚旁边放一颗 100nF 的陶瓷电容电容要尽量靠近引脚摆放VDD 和 VSS 之间跨接。如果封装特别紧凑、实在放不下至少保证每两个相邻 VDD 引脚共用一个 100nF。这是什么道理因为电容离引脚越远过孔和走线引入的电感就越大去耦效果就越差。见过有人把所有去耦电容放成一排离芯片好几厘米说实话那种接法还不如不接心理安慰大于实际作用。我自己的实测经验是这样的在 F103C8T6 的板子上把所有 VDD 脚都接上 3.3V但只在其中一个 VDD 脚旁边放了 100nF其余 VDD 脚旁边没放电容72MHz 主频下 GPIO 高速翻转时3.3V 上的噪声尖峰能到 200mV 以上给每个 VDD 脚各补一颗 100nF 后噪声尖峰明显回落到几十 mV 以内。这还是在双面板上的效果如果是四层板还会更好。3.2 VDDA的滤波比VDD更讲究VDDA 走的是模拟电路天然对噪声敏感。即使你不做高精度 ADC只要用了 ADC 功能VDDA 上的噪声就会直接映射成采样值的波动。这里有个比较直观的类比VDD 像自来水管家里所有水龙头都从它取水高峰时段水压会波动VDDA 像是单独给实验室接的一根净水管中间加了一个过滤器保证进入实验室的水压稳定。所以 VDDA 的滤波一般分两级第一级是磁珠或小电阻把 VDDA 和 VDD 隔开第二级是 1μF 和 10nF 两颗电容并联到地。为什么是 1μF 10nF 这个组合因为 1μF 负责提供低频段稳定的大容量电荷10nF 这种小容值电容的自谐振频率更高对几百 MHz 的高频噪声更有效。两颗不同容值的电容配合才能在较宽的频段上保持低阻抗。如果 ADC 精度是你的核心指标比如做数据采集、电子秤、电池电压监测那我建议磁珠选额定电流 100mA 以上的保证峰值电流下磁珠不会饱和。磁珠后面只给 VDDA 和 VREF 供电不要再串别的负载。1μF 和 10nF 都放在 VDDA 引脚附近10nF 要离引脚最近。如果芯片有 VREF 和 VREF-并且你想追求更高精度可以用外部基准源给 VREF 单独供电VDDA 还是按上述方式滤波。我遇到过一种典型问题VDDA 直接硬接 VDD没有任何隔离板子上还有一个直流电机驱动。电机一启动ADC 采样的数值就跟着跳跳得毫无规律。加了一颗磁珠和电容组合后大部分跳动都消失了。虽然不是百分百干净但对大多数应用来说已经足够。3.3 从“AMS1117换钽电容还是陶瓷电容”说起你可能在网上看过一个问题AMS1117 输出端原来用的钽电容能不能换成陶瓷电容对 STM32 有没有影响先说结论能换但别乱换。AMS1117 是低压差线性稳压器它对输出电容的 ESR等效串联电阻有要求。老版本的数据手册普遍推荐钽电容原因是钽电容的 ESR 可以在一定范围内帮助 LDO 稳定环路。如果你把钽电容换成一颗容量很小的陶瓷电容比如 1μF陶瓷电容的 ESR 极低某些 LDO 的内部环路会因为相位裕度不足而产生振荡输出电压出现持续纹波甚至肉眼可见的“呼吸灯”式波动。这种情况下 STM32 肯定受影响轻则 ADC 不准重则随机复位。但如果换成容量足够的 X5R/X7R 陶瓷电容比如 10μF 甚至 22μF实验证明大多数 AMS1117 兼容型号都能稳定工作。原因也好理解现代多层陶瓷电容虽然 ESR 低但容量够大ESR 低带来的环路问题被大容量拉回来了。我自己验证过AMS1117-3.3 输出端用 10μF 陶瓷 100nF 高频电容并联驱动 STM32 完全没有问题输出电压纹波在示波器上看和钽电容方案没有明显区别。不过这里要提醒一点电容的“容值”会因为直流偏压而下降。比如一颗 0805 封装的 10μF X5R 陶瓷电容在 3.3V 直流偏压下实际容值可能只有标称的 60%~70%。所以如果你准备缩容量建议选额定电压 6.3V 或 10V、容值余量足够大的型号别真的就卡着边界用。4. VBAT的三种去向纽扣电池、直连VDD、还是干脆悬空4.1 备份域到底是个什么区域STM32 内部有一个“备份域”由 VBAT 供电里面主要住着三样东西RTC 计数器、42 个 16 位的备份寄存器F1 系列和一部分备份 SRAM。这个区域的特殊之处在于它的供电可以独立于 VDD。当 VDD 掉电后备份域由 VBAT 维持只要 VBAT 还有电RTC 就能继续走备份寄存器里的数据就不丢。很多人问我的代码里又不用 RTC也不存备份寄存器VBAT 是不是可以不接不能。因为备份域如果不接电源内部逻辑会处于不确定电位可能导致芯片整个电源域的状态不稳定甚至影响主电源的上电复位时序。STM32 官方手册写得很清楚即使不用备份功能VBAT 也必须连接到 VDD 或电池。4.2 纽扣电池方案二极管隔离是经典接法如果你的项目需要“断电后时间继续走”比如电子时钟、数据记录仪、工控设备那就要给 VBAT 接电池。最常见的电池是 CR2032 纽扣电池标称电压 3.0V。经典电路是这样的3V3 ──►|──┐ ├──► VBAT ──► 100nF ──► GND BAT──►|──┘两颗二极管的阳极分别接 3V3 和电池正极阴极都接到 VBAT。这样当 3V3 存在时VBAT 被 3V3 抬到 3.3V 左右电池不供电3V3 消失后电池通过二极管给 VBAT 供电。二极管在这里的作用是防止两个电源互相倒灌如果没有二极管电池会在系统正常运行时一直给 3V3 回路灌电不仅浪费电池还可能损坏电源芯片。二极管选型上要注意压降。普通的 1N4148 正向压降约 0.6V~0.7VCR2032 新电池电压约 3.0V减去 0.7V 后剩 2.3V还在 STM32 的 VBAT 正常工作范围1.8V~3.6V内。但电池放一段时间后电压会慢慢下降到后期可能会低于 1.8V 的临界点导致 RTC 停走。所以我更推荐用肖特基二极管比如 BAT54、SS14压降只有 0.2V~0.3V留给电池更宽的工作范围。VBAT 引脚旁边那一颗 100nF 电容也别省。它的作用是平滑两个电源切换瞬间的电压抖动避免切换时 VBAT 电压出现毛刺。4.3 无电池场景直接连VDD最省事如果你不需要断电走时直接一根短线把 VBAT 和 VDD 连在一起就行。这样芯片正常工作时备份域由 VDD 供电RTC 跟着系统走系统断电 RTC 也停。这是官方手册明确推荐的做法。有一个小细节如果你确定永远不用电池最好把 VBAT 和 VDD 在 PCB 上直接走同一个网络不要只靠引脚旁边飞线。有些开发板上 VBAT 连了 VDD 却忘了放电容其实影响不大因为 VDD 本来就有大量去耦电容VBAT 和 VDD 短接后相当于共享了这些电容。还有一种特殊情况系统会进入 STM32 的待机模式Standby Mode。进入待机模式后VDD 域的绝大部分电路都会被关掉但备份域仍然由 VBAT 维持。如果你的产品需要待机时 RTC 继续走那么 VBAT 必须接电池或始终保持有效电源不能只接 VDD。这个区别很多做低功耗产品的朋友容易忽略。4.4 悬空会怎样别拿“概率性正常”赌板子VBAT 悬空最麻烦的地方在于它的故障表现不固定。有的芯片悬空后完全能跑ADC、GPIO、串口都正常你甚至意识不到有问题有的芯片却出现各种稀奇古怪的现象上电后偶尔不启动、下载程序时连接不稳定、进入低功耗模式后唤不醒、RTC 初始化失败。为什么悬空会有这么随机的影响因为备份域内部的逻辑没有确定的电平会受到周围走线、引脚间漏电流和静电的干扰内部电路可能处于一个“亚稳态”。这种状态不会稳定复现排查起来非常折磨人。所以我的态度很明确VBAT 宁可多一根线连到 VDD也不要省这根线让它悬空。反正又不会因为多接一个引脚增加什么成本为什么要给自己留一个这么隐蔽的雷4.5 内部LSI做RTC时钟源的一个大坑很多人做 RTC 时为了省掉外部 32.768kHz 晶振直接用 STM32 内部的 LSI约 40kHz作为 RTC 时钟源就是网上一搜一大把的“stm32内部32khz做rtc”话题。这样确实能省两个电容一个晶振但有一个坑必须知道LSI 是数字电源域里的振荡器它靠 VDD 供电。当 VDD 掉电时LSI 会停振RTC 也就失去了时钟源即使 VBAT 还有电RTC 计数也无法继续推进。也就是说你用 LSI 做时钟源断电后时间就“冻住”了但备份寄存器里的数据仍然可以靠 VBAT 保存。如果产品需求是“断电后时间继续走”那必须用外部 LSE 晶振32.768kHz因为 LSE 属于备份域由 VBAT 供电。VDD 掉电后 LSE 仍然靠电池驱动RTC 才能继续计时。这个坑的隐蔽性在于样机阶段你一直插着调试器VDD 一直有电RTC 看起来完全正常。等你拔掉电源、再接上电发现时间没有继续走才会意识到问题。所以我一般建议不是空间特别紧张RTC 还是老老实实用 LSE 外部晶振可靠性高很多。LSE 晶振两端要接两个十几 pF 的负载电容具体值看晶振规格通常 6pF~12.5pF 负载电容对应 10pF~20pF 的并联电容。5. 画板翻车实录3个电源接错案例与上电验证顺序5.1 案例一VDD接了、VDDA悬空上电芯片发烫有次帮一个网友看板子他说自己画的 STM32F103 最小系统板上电后芯片很快就烫手电流有 200 多毫安代码下载不进去。我让他把原理图发过来第一眼就看见 VDDA 引脚是空着的网络名都没连。VDDA 悬空导致的发热和异常电流本质上是内部模拟电路供电缺失使一些模拟模块工作在错误状态同时 ESD 保护二极管可能被强迫导通产生大电流。这种问题不会百分之百出现但一旦出现轻则芯片发烫、工作不稳定重则直接损伤芯片内部 ESD 结构。解决方式很简单VDDA 连 3.3V加磁珠和电容滤波。改完原理图重新打板或者飞线验证芯片温度恢复正常下载也正常了。这个案例我印象特别深因为问题太基础但太容易被忽略。5.2 案例二ADC数值跟着电机负载漂移VDDA太脏另一个项目里STM32 读取一个电位器的电压电机一启动ADC 数值就剧烈跳变。代码里加了滑动滤波效果依然很有限。用示波器看 VDDA 引脚发现电机启动瞬间上面叠加了不小的毛刺很明显是 VDDA 和 VDD 共用电源网络、没有做隔离导致的。我当时做的处理是割断 VDDA 原来的焊盘走线飞线串一颗磁珠到 3.3V然后在 VDDA 引脚旁边补了 1μF 10nF 去耦电容最后把电机回路尽量远离模拟布线。处理后 ADC 的跳变从几十个 LSB 降到了三四个 LSB 以内进步非常明显。这个案例说明一个问题VDDA 不是说“接了就行”怎么接很关键。在噪声环境比较恶劣的板子上磁珠和电容那一点成本千万别省。5.3 案例三RTC每次断电都归零VBAT悬空还有个做门禁控制器的朋友板子调完了功能都正常就一个问题断电重新上电后RTC 时间总是回到初始值。他之前觉得不用电池、VBAT 空着没事结果每次断电备份域就彻底掉电RTC 计数器自然归零。这个案例其实不算bug是设计需求没理清。他不需要断电走时那直接把 VBAT 连 VDD 就能解决“断电归零”的困扰——每次上电后 RTC 从某个设定值开始走如果要求断电后继续计时那就上纽扣电池和二极管隔离。后来我把他的 VBAT 飞线连到 3.3V再上电断电测试RTC 虽然还是停走但至少不会乱初始化了代码里也做了掉电时间判断。5.4 上电后的验证顺序用万用表和示波器把“接对”落到实处接线到底对不对不能只靠眼睛看。我给你一套我每次拿到新板子都要做一遍的验证流程电阻短路检查用万用表电阻档测 3V3 网络对 GND 的电阻。如果接近 0Ω说明有短路先别上电如果显示几百欧以上属于正常范围可以继续。这一步专治焊接短路和电源网络连错。上电测电压接上电源后用直流电压档分别测 VDD、VDDA、VBAT 对 GND 的电压。VDD 是 3.3VVDDA 是 3.3VVBAT 如果是直连 VDD 也是 3.3V如果是电池就是 3.0V 左右。这几个点只要有一个不对先解决电源问题再跑程序。看纹波有示波器的话看一下 VDD 和 VDDA 上的纹波。正常情况应该在几十 mV 以内如果看到几百 mV 的高频噪声或者周期性的振荡波形说明去耦电容或者 LDO 有问题回头检查布线和电容。跑一个最简单的程序让一个 LED 以 1Hz 闪烁确认芯片能运行。这一步排除下载器配置、芯片封装选择等一系列低级错误。ADC自检用一个已知电压比如 3.3V 经电阻分压后 1.65V接到某个 ADC 引脚读采样值粗略估算是否在预期范围。如果数值差得很离谱优先怀疑 VDDA、VREF、VREF- 的接法和滤波。RTC掉电测试如果用了 RTC设置好时间后断电等一会儿再上电看时间是否连续。这个测试能直接验证 VBAT 接法和 LSE/LSI 的选型是否正确。我个人的一点习惯是拿到板子先不焊 MCU直接在电源网络空焊盘上量一遍电压和纹波确认整个电源系统没问题再焊芯片。这样可以避免“芯片焊上去才发现问题”之后反复拆焊的尴尬。毕竟 STM32 引脚密集拆一次芯片对板子和芯片都是损伤。再分享一句我自己总结的接线口诀画图时默念一遍不容易漏VDD全接、VSS全接、VDDA要滤波、VBAT不许悬空。这四句话涵盖了本文大半的内容剩下的就是电容的容量和摆放问题。把这几个脚处理好你的 STM32 项目就已经赢在起跑线上了。
返回列表