ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

STM32最小系统供电设计:VDDA隔离与去耦电容布局实战

STM32最小系统供电设计:VDDA隔离与去耦电容布局实战 1. 从一块“能用”到“好用”的最小系统板说起画STM32最小系统板这件事很多人第一次做都能跑起来但真正到了ADC采样抖动大、RTC走时不准、无线模块通信距离短的时候才会回头怀疑供电。我前后打过十几版F103和F407的最小系统板踩过最深的坑不是晶振不起振也不是复位电路而是VDDA这一路模拟供电没处理好。数字部分跑得好好的ADC读出来的值能跳几十个LSB这种问题用示波器看VDD纹波还挺干净但VDDA上全是数字电路耦合过来的开关噪声。这篇内容就围绕STM32最小系统供电电路设计展开重点讲两件事VDDA为什么要隔离、去耦电容到底怎么布局。适合正在画第一块或第二块STM32最小系统板的硬件新手也适合做了几版板子但ADC精度始终上不去的朋友。我不会只给你一个原理图让你抄而是把每个电容为什么放那里、每个磁珠为什么选那个型号讲清楚让你下次改板的时候能自己判断。先给一个结论性的认知STM32的供电设计不是“把3.3V接上去就行”而是要把数字电源和模拟电源当成两个独立的负载来对待它们共享同一个3.3V来源但在芯片引脚附近必须分开走线、分开去耦。这个思路贯穿全文。2. 供电架构的整体设计与思路拆解2.1 STM32最小系统到底有哪几路电源以最常见的STM32F103C8T6为例打开数据手册的Pinouts and pin description章节电源相关引脚有这么几类VDD数字电源通常有多根F103C8T6是2根VDD给内核、Flash、数字外设供电标称3.3V。VSS数字地与VDD配对。VDDA模拟电源只有一根给ADC、DAC、复位电路、内部RC振荡器等模拟部分供电。VSSA模拟地与VDDA配对。VBAT备份电源给RTC和备份寄存器供电可以接纽扣电池或直接接VDD。VREF / VREF-参考电压输入100脚以上的封装才有独立引脚小封装内部连接到VDDA/VSSA。很多人画板子的时候把VDDA直接和VDD连在一起VSSA直接和VSS连在一起觉得“反正都是3.3V”。这样做的后果是数字部分每次翻转产生的电流尖峰会通过共享的走线阻抗耦合到VDDA上ADC的参考电压跟着抖采样结果自然不稳。2.2 为什么VDDA必须隔离要理解隔离的必要性先看数字电路的工作方式。STM32内部数字逻辑每个时钟周期都在翻转翻转瞬间的电流是脉冲式的上升沿可能在纳秒级别。这个脉冲电流流过PCB走线的寄生电感时会产生瞬时压降公式是V L × di/dt。假设走线电感5nH电流跳变50mA1ns内完成那么压降就是0.25V。这个压降会沿着走线传播如果VDDA和VDD共用一段走线ADC的参考电压就会在采样瞬间被拉低。ADC的精度直接取决于参考电压的稳定度。12位ADC在3.3V满量程下1个LSB约等于0.8mV。参考电压只要抖动几毫伏采样结果就会跳好几个码。这就是为什么数据手册里明确要求VDDA必须独立去耦并且推荐通过磁珠或电感与VDD隔离。隔离的本质是增加数字噪声传到模拟侧的阻抗。对于直流和低频磁珠阻抗接近0VDDA和VDD电压基本一致对于高频开关噪声磁珠呈现高阻抗把噪声挡在数字侧。这就是“隔离”两个字的物理含义。2.3 隔离方案选型磁珠、电感还是0欧电阻实际项目中我见过三种做法各有适用场景方案优点缺点适用场景0欧电阻便宜、好买、方便调试时断开测电流高频隔离效果差只有几nH电感量对ADC精度要求不高的场合磁珠高频阻抗高抑制噪声效果好直流电阻会带来压降选型不当会谐振大多数STM32最小系统板电感阻抗特性明确可计算体积大直流电阻大容易和电容谐振对模拟供电要求极高的场合我的经验是普通最小系统板用磁珠就够了选100MHz下阻抗60Ω到120Ω的型号比如常见的0603封装磁珠。额定电流要大于VDDA实际消耗电流的2倍以上F103的VDDA电流在几毫安级别选100mA以上的磁珠绰绰有余。注意磁珠的直流电阻DCR会带来压降。如果选了一颗DCR为1Ω的磁珠VDDA电流5mA压降就是5mV。这个压降本身不影响ADC因为参考电压跟着一起降但要注意磁珠的额定电流不要卡得太紧否则温升会导致阻值变化。2.4 去耦电容的总体布局原则去耦电容的作用是在芯片需要瞬时电流时就近提供电荷避免电流从远处的稳压器经过长走线过来。走线越长寄生电感越大响应越慢。所以去耦电容的核心原则只有一条离引脚越近越好回路面积越小越好。具体到STM32最小系统去耦电容分三层第一层100nF小电容每个VDD引脚配一个放在引脚背面或紧贴引脚负责高频去耦。第二层1uF到10uF中电容每路电源配一个放在芯片附近负责中频去耦。第三层10uF到100uF大电容整个板子配一到两个放在稳压器输出端负责低频储能。VDDA这一路同样需要这三层而且因为模拟部分对噪声更敏感第一层的100nF和1uF要更靠近VDDA引脚。3. 核心细节解析与实操要点3.1 VDDA隔离电路的具体画法先给一个我实际在用的VDDA隔离电路以F103C8T6为例3.3V ──┬── 10uF ── GND │ ├── 1uF ── GND │ └── FB1 (磁珠) ──┬── VDDA │ ├── 100nF ── GND │ ├── 1uF ── GND │ └── 10nF ── GND这里有几个细节值得展开磁珠的位置磁珠要放在数字电源和模拟电源的分界点。3.3V先经过数字侧的大电容和中电容然后通过磁珠进入模拟侧模拟侧再放自己的去耦电容。顺序不能反否则数字侧的噪声已经污染了模拟侧的电容。10nF电容的作用很多人只放100nF和1uF忽略10nF。10nF的自谐振频率比100nF高在几十MHz到上百MHz频段阻抗更低。STM32的数字开关噪声主要能量集中在几十MHz10nF能补上100nF在高频段的不足。这三个电容并联覆盖从几百kHz到几百MHz的宽频段。VSSA的处理VSSA不能直接就近打孔到数字地平面而是要先连接到模拟地的一个独立铜皮区域再通过一个0欧电阻或磁珠连接到数字地。这个单点连接很关键它避免了数字地上的噪声电流流过模拟地区域。3.2 去耦电容的选型与自谐振频率去耦电容不是随便拿一个100nF就行要关注它的自谐振频率SRF。电容在自谐振频率以下呈容性以上呈感性。超过自谐振频率后电容就不再是电容了而是一个电感去耦效果急剧下降。常见封装的寄生电感大致如下封装典型寄生电感100nF自谐振频率10nF自谐振频率04020.4nH约25MHz约80MHz06030.7nH约19MHz约60MHz08051.0nH约16MHz约50MHz从表里能看出来同样容值封装越小自谐振频率越高。所以高频去耦优先选0402或0603不要用0805。我早期板子用0805的100nFADC噪声就是比后来换0603的大换了之后改善明显。另外电容的介质类型也影响性能。X7R和X5R是常用的但X7R的容值随电压和温度变化更小模拟部分优先用X7R。Y5V虽然容值大但温度特性差、老化快不要用在去耦上。3.3 PCB布局的实操要点原理图画对了布局不对照样白搭。去耦电容的布局有几个硬性要求第一电容和引脚之间的走线要短而粗。理想情况下电容焊盘直接贴着引脚焊盘走线长度控制在2mm以内。走线宽度至少0.3mm能宽则宽。走线越长越细寄生电感越大去耦效果越差。第二过孔要打在电容焊盘旁边不要打在走线末端。电流路径是VDD引脚 → 电容 → 过孔 → 地平面。过孔的位置决定了回路面积。正确的做法是电容一端连VDD引脚另一端紧挨着打过孔到地平面过孔离焊盘越近越好。第三地平面要完整。去耦的回路是VDD到电容到地再回到芯片的VSS如果地平面被分割得七零八落回路电感会大幅增加。STM32最小系统板建议用两层板时底层尽量铺完整地四层板时第二层做完整地平面。第四VDDA的走线要远离数字信号线。特别是时钟线、USB差分线、PWM输出线这些线上的高频噪声会通过容性耦合到VDDA。如果实在避不开中间加一条地线做屏蔽。3.4 关键参数的计算过程有人会问去耦电容的容值到底怎么算这里给一个简化的估算方法。假设STM32内部某次开关瞬间需要从电容抽取电荷Q允许的电压跌落为ΔV那么所需电容C Q / ΔV。以F103内核为例一次时钟翻转的电荷量大约在皮库仑级别。假设一次翻转需要1pC电荷允许电压跌落10mV那么C 1pC / 10mV 100pF。这是单次翻转的需求实际电路中翻转频率很高需要电容在两次供电之间持续补充电荷所以实际选100nF是留了很大余量的。更工程化的方法是看稳压器的瞬态响应。如果稳压器从检测到电压跌落到输出电流跟上需要1us负载电流变化50mA允许跌落50mV那么C I × t / ΔV 50mA × 1us / 50mV 1uF。这就是为什么每路电源要配1uF以上的中电容。大电容的选型看低频纹波要求。如果稳压器输出纹波在100kHz下为20mV希望降到5mV需要电容在100kHz下阻抗足够低。10uF电容在100kHz下阻抗约0.16Ω配合稳压器的反馈环路通常能压到几毫伏。这些计算不需要很精确因为实际PCB的寄生参数影响更大。但理解这个思路能让你在选电容时心里有数而不是盲目抄别人的BOM。4. 实操过程与核心环节实现4.1 从原理图到PCB的完整流程我以自己最近一版F103C8T6最小系统板为例走一遍供电部分的完整设计流程。第一步确定电源树。板子输入是USB 5V或外部5V经过一颗LDO降到3.3V。LDO选的是常见的AMS1117-3.3虽然它静态电流大、压差高但便宜好买最小系统板够用。3.3V出来之后分两路一路给数字VDD一路经过磁珠给VDDA。VBAT直接接3.3V不用纽扣电池。第二步画原理图。数字侧放一个10uF钽电容和一个1uF陶瓷电容在LDO输出端每个VDD引脚配一个100nF。模拟侧在磁珠后面放100nF、1uF、10nF各一个VSSA通过0欧电阻连到数字地。第三步PCB布局。先放芯片再放晶振和复位电路然后放去耦电容。去耦电容优先放在芯片背面如果板子只有单面就放在引脚旁边。LDO放在板子边缘远离晶振和模拟区域。第四步走线。3.3V主走线宽度0.5mm到每个VDD引脚的支线宽度0.3mm。VDDA走线从磁珠出来后直接到引脚中间不拐弯宽度0.3mm。地平面底层完整铺铜去耦电容的接地过孔直接打到地平面。第五步检查。用DRC检查间距然后人工检查每个去耦电容是否真的靠近引脚过孔是否在焊盘旁边VDDA走线是否远离时钟线。4.2 焊接与调试的现场记录板子打回来之后先不急着焊芯片先焊电源部分测电压。上电前检查用万用表测3.3V和GND之间是否短路测VDDA和VSSA之间是否短路。这一步能避免焊接短路烧芯片。上电测电压接5V输入测LDO输出是否为3.3V测磁珠两端电压。如果磁珠后面电压明显低于前面说明磁珠DCR太大或者后面有短路。测纹波用示波器交流耦合探头接地弹簧尽量短测3.3V和VDDA的纹波。好的布局下VDDA纹波应该比VDD更小因为磁珠和电容滤掉了一部分噪声。如果VDDA纹波反而更大说明隔离没做好或者模拟侧去耦不足。ADC实测焊上芯片烧一个简单的ADC采样程序采样内部参考电压或者外部基准看采样值的跳动范围。12位ADC在安静环境下采样值跳动应该在±2个LSB以内。如果跳动超过±10个LSB供电部分肯定有问题。我记录过一组对比数据同一块板子VDDA直接连VDD时ADC采样跳动±15个LSB加上磁珠和10nF电容后跳动降到±3个LSB。这个改善是肉眼可见的。4.3 不同封装和型号的适配调整F103C8T6是48脚封装VDDA只有一根。如果是F407VET6这种100脚封装VDDA和VREF是分开的处理方式略有不同。VREF如果独立出来可以接一个更精密的基准源比如REF3033输出3.3V精度±0.2%。这时候VDDA可以仍然接3.3V但VREF要单独去耦去耦电容要更讲究100nF加10uF布局更严格。对于F407这种有多个VDD引脚的芯片每个VDD都要配100nF不能省。我见过有人只在芯片一角放一个100nF结果远离电容的那侧VDD引脚供电不足芯片工作不稳定。对于QFN封装的芯片引脚在底部去耦电容要放在PCB背面通过过孔连接。这时候过孔的电感更关键每个电源引脚至少配两个过孔一个连电容一个连平面。5. 常见问题与排查技巧实录5.1 ADC采样跳动大的排查思路这是最典型的供电问题表现。排查顺序如下先看VDDA纹波。示波器交流耦合带宽限制20MHz测VDDA对VSSA的纹波。如果峰峰值超过10mV供电有问题。断开磁珠测VDD纹波。如果VDD纹波本身就大问题在稳压器或数字去耦不在隔离。检查去耦电容是否真的靠近引脚。用镊子短接电容两端看ADC跳动是否变化。如果短接后改善说明电容位置太远。检查地平面是否完整。用万用表测芯片VSS引脚到电容接地端的电阻应该接近0Ω。如果超过0.1Ω地平面有问题。检查VDDA走线是否被数字线平行走过。如果有尝试割线飞线看是否改善。5.2 常见问题速查表现象可能原因排查方法解决方法ADC采样跳动大VDDA去耦不足测VDDA纹波加10nF换小封装电容ADC采样跳动大数字噪声耦合检查走线平行拉开距离或加地线屏蔽RTC走时不准VBAT供电不稳测VBAT电压加100nF去耦检查纽扣电池芯片发热VDD短路或过压测VDD对地电阻检查焊接确认LDO输出晶振不起振电源纹波大测VDD纹波加去耦电容检查LDO无线模块距离短电源噪声大测模块供电纹波加LC滤波单独供电5.3 几个容易忽略的坑坑一磁珠选型只看阻抗不看DCR。我买过一批磁珠100MHz阻抗120Ω看着很好但DCR有1.5ΩVDDA电流10mA时压降15mV。虽然ADC参考跟着降不影响比例但VDDA低于数据手册最低值2.0V时ADC性能会下降。选磁珠时DCR要小于0.5Ω。坑二去耦电容的接地过孔离焊盘太远。有人为了走线方便电容焊盘先拉一段线再打过孔。这段线哪怕只有3mm寄生电感也有2nH到3nH高频去耦效果大打折扣。正确做法是过孔紧贴焊盘甚至打在焊盘上如果工艺允许。坑三VDDA和VDD共用一颗大电容。有人图省事在3.3V总线上放一颗10uF然后VDDA和VDD都从这颗电容后面取电。这样数字噪声会通过这颗电容耦合到VDDA。正确做法是数字侧和模拟侧各有自己的大电容中间用磁珠隔开。坑四忽略VSSA的连接。VSSA不接或者随便接ADC的共模电压就不对采样值会整体偏移。VSSA必须连接到模拟地再单点连到数字地。坑五LDO选型不当。AMS1117虽然常用但它的瞬态响应慢负载跳变时输出电压跌落大。如果板子上有无线模块这种脉冲负载建议换低压差、快响应的LDO比如TPS7A系列。不过对于纯最小系统板AMS1117够用。5.4 实测数据与经验值我整理了几组自己实测的数据供参考无磁珠、VDDA直连VDDADC采样跳动±12到±20 LSB加磁珠、只有100nF跳动±5到±8 LSB加磁珠、100nF1uF10nF跳动±2到±3 LSB加磁珠、三层电容、VSSA单点接地跳动±1到±2 LSB这个改善趋势说明每加一层措施都有收益但收益递减。对于大多数应用三层电容加磁珠已经足够。如果做到±1 LSB基本是PCB布局和电容选型都到位了。另外环境温度也有影响。夏天实验室温度30度以上时ADC跳动会比冬天大1到2个LSB这是芯片内部漏电流随温度变化导致的属于正常现象。6. 从最小系统到实际项目的扩展思路最小系统板的供电设计是基础实际项目里还会遇到更多情况。比如板子上有电机驱动时电机换向产生的噪声会通过电源线传导到MCU这时候光靠磁珠和电容不够需要在电源入口加TVS和共模电感。再比如用开关电源而不是LDO时开关频率的纹波会直接进入VDDA需要额外的LC滤波。我个人的做法是不管什么项目VDDA的隔离和去耦都按最高标准做因为这部分成本很低一颗磁珠加三个电容不到一毛钱但省下来的调试时间是以天计算的。PCB面积紧张的时候可以省掉10nF但100nF和1uF不能省磁珠不能省。还有一点如果板子要过EMC认证VDDA的处理方式会直接影响辐射发射测试结果。磁珠和电容构成的滤波网络能衰减高频噪声减少通过电源线辐射出去的干扰。这时候磁珠的选型要结合认证标准来定不能随便拿一颗就用。最后分享一个我常用的检查方法板子焊好之后先不焊MCU给3.3V和VDDA分别加直流电压用频谱分析仪或者带FFT功能的示波器看噪声频谱。如果VDDA的噪声在几十MHz处有明显峰值说明隔离或去耦有问题这时候改板还来得及。等焊上MCU再发现就只能飞线补救了。
返回列表