ARTICLE DETAIL

资讯详情

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

原理图分析实战:从电源树到信号流,建立硬件调试方法论

原理图分析实战:从电源树到信号流,建立硬件调试方法论 拿到一块陌生板子或者一份别人画好的图纸第一反应往往不是兴奋而是头皮发麻。密密麻麻的元件标号、纵横交错的连线、各种看不懂的英文注释这玩意儿怎么看很多刚入行的硬件工程师甚至做了两三年的嵌入式开发看原理图还停留在“照着芯片手册的参考电路抄”的阶段。一旦电路工作不正常除了换芯片、重新烧程序就不知道还能从哪里下手。原理图分析能力才是硬件调试真正的分水岭。它不是让你背下每个芯片的引脚功能而是教你建立一套自己的分析方法论从整体架构到局部细节从电源网络到信号流向从静态检查到动态时序每一步该怎么看、重点看什么、容易漏掉什么都有一套固定的章法。这篇文章我把这些年看原理图、调硬件电路的经验全部整理出来从思路到工具从实例到避坑一次性讲透。1. 原理图分析的整体思路先框架后细节先电源后信号分析任何一张原理图最忌讳的就是拿起图纸从左上角第一个元件开始挨个往下看。那样看完一遍脑子里还是一团浆糊根本建立不起整体概念。正确的打开方式是“先框架后细节先电源后信号”分四步走。1.1 第一步找核心器件画功能框图拿到原理图先不要急着看连线。先快速扫一遍全部元件标号找出板子上的核心器件——主控芯片、电源管理芯片、通信芯片、存储芯片、传感器等。通常这些芯片的封装最大、引脚最多在图纸上的位置也最显眼。找到核心器件后在草稿纸上画一个简单的功能框图。以最常见的单片机系统为例主控MCU放在中间旁边画上电源电路、晶振时钟电路、复位电路、下载调试接口以及各种外设接口电路用箭头标出它们和主控之间的连接关系。这张框图不需要很精致能表达清楚就行它的作用相当于一张地图让你在深入细节之前先在脑海里建立起一个整体架构。我在实际分析板卡时通常会先看BOM表达式的物料数量。如果一块板子上有六七十个元件但核心芯片就四五颗那么其他的无非就是电阻电容、连接器、保护器件围绕这几颗核心芯片做文章就够了。这个思路在分析任何硬件都适用不管是STC单片机的小板子还是RK3588这种核心板加底板的复杂系统。1.2 第二步理清电源树从源头到负载电源是整个系统的命脉芯片和电路能不能正常工作首先取决于供电是否正确。所以框架搭建好之后第二步就是梳理电源网络。从电源入口开始找到板子的供电来源。有的板子是USB供电5V有的是DC-DC适配器供电12V、24V有的是锂电池直接供电3.7V。然后沿着电源路径往下走看经过哪些电源转换芯片输出几路电压每路电压分别供给哪些负载。把这些信息整理成一张电源树结构图。举个例子一块典型的STM32系统板USB 5V输入经过AMS1117-3.3稳压器输出3.3V给MCU主控、FLASH芯片、传感器供电5V直通给OLED显示屏、电机驱动等外设供电如果有锂电池可能还要经过充电管理芯片如TP4056和升压或降压电路这里有几个需要特别注意的检查点每一路电源的输入输出电容是否齐备、容值是否足够通常100nF10uF组合、反馈电阻的取值是否正确决定输出电压精度、芯片的使能引脚EN是否接对了电平。很多电源不工作的案例最后查下来都是EN引脚悬空或者接反。1.3 第三步追踪信号流向按功能模块逐个击破电源理清了接下来才是真正的信号分析。不要试图一次看懂所有信号而是按功能模块逐个来。比如先看时钟电路再看复位电路然后看下载调试接口最后看通信接口。每个模块的信号流向从源端到目的端一条一条追踪过去。以I2C通信为例主控的SCL、SDA引脚出来经过上拉电阻通常4.7kΩ或10kΩ接到VCC再到从设备芯片的SCL、SDA引脚。追踪的时候要看清这几个要素信号从哪个引脚出发、中间有没有经过缓冲器或电平转换芯片、最终到达哪个芯片的哪个引脚、上拉电阻是否齐全、有没有接错总线地址配置引脚。任何一个环节出了问题通信都会失败。分析信号的时候还有个很容易被忽略的地方——引脚复用。很多MCU的引脚是多功能的比如PA9既可以用作USART1_TX也可以用作TIM1_CH2。原理图上画的是哪种功能需要对照芯片手册的数据手册确认。特别是在分析别人设计的板子时不要想当然以为PA9就是串口发送引脚一定要顺着走线找到它实际连到了哪里。1.4 第四步检查关键外围核对器件参数框架、电源、信号这三个层面都梳理完之后最后一步是核对关键外围器件的参数是否合理。这里说的关键外围包括限流电阻、分压电阻、滤波电容、保护器件等。比如LED指示灯电路限流电阻怎么算红色LED的正向压降大约是1.8V到2.0V工作电流取5mA到10mA如果供电是3.3V那么限流电阻的取值就是(3.3V - 2V) / 10mA ≈ 130Ω到150Ω实际取220Ω或330Ω问题也不大。如果这个电阻取值明显不合理比如只有10Ω那就要怀疑是不是画错了。再比如ADC采样电路如果输入电压范围超过MCU的ADC参考电压就需要分压电阻网络。计算分压比的时候要核对阻值是否匹配还要注意分压电阻的精度和温漂是否满足设计要求。这些细节单看原理图不一定能发现问题但结合应用场景去分析就能找到不合理的地方。2. 工具选型与资料准备用什么看图看哪些资料原理图分析不是光靠一双眼睛就行的合适的工具和齐全的参考资料能让你事半功倍。2.1 主流EDA工具与看图软件怎么选原理图的文件格式五花八门不同EDA工具生成的工程文件互不兼容。所以第一步是确定文件格式然后选择合适的打开工具。**Altium DesignerAD**是市面上最通用的原理图工具很多公司和企业都在用后缀是.SchDoc。如果别人发给你的是AD格式的原理图直接用AD打开最方便。AD的功能很强大除了看图还能做PCB设计、仿真、BOM导出但正版授权费用不便宜硬件工程师的电脑上一般都会装。如果只是临时看一下图用AD Viewer也可以用这是一款免费的查看工具但只能看不能改。立创EDA是国产EDA工具里的后起之秀完全免费支持在线编辑和本地客户端现在很多开源项目和DIY爱好者都在用。文件后缀是.json也有专用的工程格式。它的优势是上手快、元件库全、还能直接联动立创商城的PCB打样和元器件采购非常适合个人开发者和小团队。我很多开源硬件的原理图都是直接发立创EDA的工程链接对方点开就能看不需要装额外的软件。KiCad是完全开源免费的EDA工具很多国外开源项目和高校都在用文件后缀是.kicad_sch和.kicad_pcb。KiCad 7之后的中文支持和符号库完善程度都好了很多如果不是跟商业项目有严格的文件格式要求KiCad其实是个很不错的选择。OrCAD / Cadence是工业级EDA工具大型通信企业、服务器厂商用得比较多文件格式是.dsn或.opj。如果是在大厂做硬件十有八九要用到OrCAD。这款工具的学习曲线比较陡峭但功能确实强大尤其是仿真方面。PDF格式是最省事的。很多公司发布原理图时会额外导出一份PDF版本方便没有安装EDA工具的人快速查看。PDF版的原理图虽然没有源文件方便不能直接跳转网络但用来浏览和做标注已经足够了。如果你只是要分析原理图的功能和逻辑PDF完全够用如果你需要修改或者参考布局布线那就必须用源文件。2.2 分析前必看的四份核心资料原理图分析不是凭空看图而是要结合资料综合判断。在动手分析之前尽量把下面这四份资料准备齐全。信号完整性与需求分析板子的功能需求文档、芯片选型说明、接口定义等。有了这些你才知道这块板子是干什么用的、每个接口应该接到哪里。我在分析一块陌生的板子时如果对方能提供一份产品规格书分析效率会提升一倍以上。规格书里会写明供电范围、通信接口定义、功能描述相当于给了你一张标准答案。核心器件的Datasheet主控芯片、电源芯片、通信芯片的数据手册。重点看引脚定义、电气特性、参考应用电路。这里有个小技巧厂商的Datasheet里通常会给出推荐的应用电路图拿着原理图的对应部分和参考电路对比看很容易发现别人设计里的异常。比如TI的电源芯片Datasheet里会把反馈电阻的取值计算公式、电感的选型表都列出来如果你发现原理图里的参数和计算公式对不上十有八九是抄错了或者改了参数没改计算。参考设计很多芯片厂商会提供官方参考设计Reference Design比如ST的NUCLEO开发板原理图、乐鑫的ESP32模组参考设计图、瑞萨的评估板原理图等。参考设计是经过官方验证过的具有很高的参考价值。分析原理图时把目标板子和参考设计的对应部分做对比能快速定位可疑点。PCB设计文档或实物照片如果条件允许最好把PCB版图或者实物板子的照片也拿过来对照分析。有时候原理图看着没问题但由于PCB布局布线的问题导致信号质量差或电源纹波大。对照PCB图或者实物图可以帮助你发现那些隐藏在版图层面上的隐患。3. 实战演示手把手拆解一张最小系统板的原理图理论知识讲再多不如上手练一次。这一节我挑一块典型的STM32最小系统板按照上面说的方法完整走一遍分析流程。这块板子虽然简单但是麻雀虽小五脏俱全电源、时钟、复位、下载、通信该有的模块都有非常适合用来演示。3.1 整体架构识别板子组成模块先快速看一遍图纸识别出板子包含以下几大块电源电路USB接口进来经过AMS1117-3.3稳压到3.3V主控芯片STM32F103C8T664引脚LQFP封装时钟电路8MHz晶振 两个20pF负载电容32.768kHz晶振RTC用复位电路上电自动复位RC电路 手动复位按键下载调试接口SWD四线接口SWDIO、SWCLK、GND、3.3V通信接口USART1串口、I2C接口、SPI接口状态指示两个LED指示灯一个电源指示一个用户控制启动配置BOOT0和BOOT1引脚通过跳线帽选择启动模式把这几个模块画成框图整个板子的架构就非常清晰了。接下来逐个模块深入分析。3.2 电源电路分析从USB到3.3V稳压电源电路是分析重点。看这一块时我习惯从输入到输出逐级检查。USB接口的VBUS5V进来后首先要经过一个自恢复保险丝PPTC用于过流保护然后是TVS管或ESD保护器件防止静电打坏后级电路。TVS管应该接在VBUS和GND之间方向要特别注意——单向TVS是有极性的接反了等于没接。5V经过一个0欧电阻或者磁珠后进入AMS1117-3.3的输入端。AM1117是低压差线性稳压器用在这里很合适因为5V降到3.3V的压差只有1.7V负载电流不大的情况下发热可以接受。检查它的电路连接输入端Vin接5V对地要有一个10uF的钽电容或者电解电容滤波靠近芯片输入引脚放置输出端Vout接3.3V对地要有一个10uF 100nF的组合电容用于滤除低频纹波和高频噪声输出端还要注意连接一个LED电源指示灯限流电阻1kΩ这一块的常见错误是输出电容接得离芯片太远导致稳压器自激振荡。线性稳压器内部有反馈回路输出电容本来是用来补偿稳定性的如果layout上电容离得太远寄生电感太大补偿效果就会大打折扣严重时会看到输出电压轻微跳动。现实中的板子如果出现这种问题示波器一看输出波形就有低频振荡很难查。AMS1117的功耗估算也要心里有数。输入5V输出3.3V压差1.7V如果整个板子的电流是100mA那么稳压器上的功耗就是1.7V × 0.1A 0.17W这种情况下SOT-223封装的散热没问题。但如果你给它的负载是500mA功耗就是0.85W芯片表面温度会超过60度这就不太合适了。很多硬件工程师分析原理图时不注意到这一点直到板子发热严重了才回头查电源设计。3.3 时钟电路分析晶振与负载电容的关系时钟电路是MCU的心脏检查的重点是晶振的负载电容是否匹配。以8MHz无源晶振为例STM32F103的OSC_IN和OSC_OUT引脚之间接晶振晶振两端各接一个电容到地形成皮尔斯振荡电路。这两个电容的作用是和晶振本身的负载电容要求匹配使得振荡频率准确。8MHz晶振的负载电容通常是18pF到20pF所以板子上用了两个20pF电容这没问题。计算如下 CL (C1 * C2) / (C1 C2) Cstray 其中Cstray是引脚和走线的寄生电容一般在2pF到5pF。代入C1 C2 20pF CL (20 × 20) / (20 20) 3 ≈ 10 3 13pF 咦算出来只有13pF和晶振要求的18~20pF不太匹配啊。这时候就需要注意如果频率偏了串口波特率就不准通信会时不时出错。实际的解决办法是换用18pF的电容或者把电容换到15pF这样算出来CL≈10.5pF更接近晶振的典型值。这个例子说明一个问题原理图分析不能只看元件接没接对还要对照芯片资料和晶振规格书验证参数是否匹配。抄参考设计不是不行但抄之前要想明白为什么这么取值。32.768kHz的RTC晶振也是类似道理通常是两个6pF到12.5pF的电容具体看晶振规格书的要求。这个晶振如果负载电容不匹配RTC走时会明显偏快或偏慢一天能差几十秒。3.4 复位电路分析上电时序与手动复位STM32的NRST引脚是低电平复位内部有上拉电阻所以外部电路只需要提供一个下拉到地的按键以及一个RC复位延时电路。典型接法是NRST引脚接一个100nF电容到地同时并联一个按键到地3.3V经过一个10kΩ电阻接到NRST上。上电瞬间电容还没充满电NRST被拉到低电平芯片保持复位状态随着电容充电NRST逐渐上升到高电平芯片开始正常运行这个过程产生的复位脉冲宽度由RC时间常数决定t R × C 10kΩ × 100nF 1ms。这个1ms的复位时间够不够用STM32的复位脉冲要求是最小1.5us所以1ms绰绰有余。但如果RC取太大比如10uF电容复位时间可能长达100ms上电后芯片启动就会明显延迟这对于某些有快速启动要求的应用场景来说是不能接受的。按下复位键时NRST被直接短接到地芯片立即复位松开后电容重新充电再次延时启动。这个复位电路的分析重点是确认RC取值合理并且按键的ESD防护是否到位——如果板子处于经常被人触摸的环境最好在按键旁边加一个TVS管或者ESD二极管。3.5 下载与串口电路分析SWD和USART这块小板子用的是SWD四线下载SWDIO、SWCLK、GND、3.3V。SWD接口没有接上拉下拉电阻这在STM32上是完全没有问题的因为芯片内部已经集成了上下拉配置外部不需要额外处理。不过有些工程师习惯在SWDIO上加一个10kΩ上拉电阻这种做法也没有坏处可以保证调试器连接时默认电平状态稳定。如果你的板子要在噪声环境中调试可以考虑加上。串口部分STM32的USART1_TXPA9和USART1_RXPA10直接连接到板载USB转串口芯片最常见的CH340G的RXD和TXD。这里注意交叉连接主控的TX要接CH340的RX主控的RX要接CH340的TX。这个交叉设计是串口通信的基础很多人第一次画板子就在这里栽过跟头。 CH340G用12MHz晶振这个晶振的作用是和USB的时钟同步做串口转换的。CH340G的供电是5V还是3.3V具体看板子设计但串口电平要和MCU匹配往往在3.3V供电。通信引脚上的TXD、RXD如果距离较长可以考虑加100Ω的串联电阻做阻抗匹配减少信号振铃但短距离通信不加也没问题。3.6 启动配置与状态指示电路分析BOOT0和BOOT1是STM32的启动模式配置引脚。BOOT0引脚通常接一个10kΩ下拉电阻到地默认从Flash启动。如果需要串口下载程序可以把BOOT0通过跳线帽接到3.3V然后复位后就会进入Bootloader模式。这个电路检查起来很简单确认BOOT0有下拉电阻不能悬空BOOT1引脚可以接外部电阻取决于是否要用到如果不使用可以悬空STM32的BOOT1内部有下拉。一般开发板上会把BOOT0做成跳线或者拨码开关方便切换启动模式。状态指示电路就是两个LED加限流电阻。3.3V经过1kΩ电阻接到LED阳极LED阴极接MCU的GPIO。MCU引脚输出低电平时LED亮输出高电平时LED灭。这个接法相比LED阳极直接接VCC、阴极经电阻接GPIO的接法优势是GPIO输出低电平时的驱动能力更强。LED限流电阻的计算(3.3 - 2.0) / 1k ≈ 1.3mA对于普通的贴片LED来说稍微偏暗但作为指示作用完全够用。如果觉得暗可以把电阻换成470Ω电流大约在2.8mA会亮不少。4. 常见问题与排查技巧原理图里的那些“坑”原理图分析做到位了板子调试时的问题就会少一大半。但即便如此一些经典的错误还是值得单独拿出来讲一讲因为它们在各种板子上反复出现。4.1 电源类问题不上电、发热、纹波大电源问题是硬件调试中出现频率最高的问题在分析原理图阶段就能排除掉大部分隐患。不上电检查电源芯片的EN引脚有没有正确接高电平输入输出电容是否齐备电感是否短路二极管方向是否正确。拿DC-DC降压来说很多新手会把续流二极管或同步整流的MOS管接反导致电路完全无法工作。发热分析电源芯片功耗。前面提到的LDO功耗计算以及DC-DC的效率换算都要做到心中有数。如果正常工况下芯片功耗已经超过封装散热能力板子迟早会出问题。比如SOT-23封装的LDO最大耗散功率大约0.3W到0.4W如果你算出来功耗是0.5W那就必须换更大封装的芯片或者改用DC-DC方案。纹波大输出电容容值不足、ESR过高或者反馈走线离电感太近导致干扰。原理图上能做的就是确认电容取值和类型合理比如DC-DC的输出电容通常需要低ESR的陶瓷电容而不是普通电解电容。4.2 信号类问题通信不稳定、读写失败、接口不通上拉电阻缺失或取值不当I2C、单总线、开漏输出类型的接口必须有上拉电阻。取值太大会导致上升沿缓慢通信速率上不去太小则功耗增加驱动能力不足。I2C标准模式100kHz用4.7kΩ上拉快速模式400kHz用2.2kΩ上拉这是一个比较通用的经验值。信号串扰和振铃如果通信线路上有较长的走线又没有串接阻抗匹配电阻高速信号就很容易产生振铃。经验做法是针对UART、SPI、I2C这类通信主控端和从设备端各串联22Ω到33Ω的电阻可以有效吸收反射波改善信号质量。原理图上如果完全找不到这些匹配电阻在长走线场景下就要注意了。电平不匹配3.3V的MCU外接5V的传感器或模块直接连接会损坏MCU引脚。原理图上应该有电平转换电路比如TXB0108电平转换芯片或者用MOS管搭建的双向电平转换电路。如果发现3.3V器件和5V器件直接相连这是一个非常危险的信号。逻辑极性搞反例如复位引脚的极性、使能引脚的极性、片选引脚的电平搞反一个就会导致器件无法工作。芯片手册上会有明确的时序图和电平说明分析原理图时务必对照确认。4.3 ESD与保护器件的使用问题工业级、车载级的板子ESD和过流保护基本是标配。但在消费级开发板上很多人会省略这些器件。省略可以理解但正确姿势是如果加了就要加对。ESD保护器件比如USBLC6-2SC6、PRTR5V0U2X要放在连接器接口处紧挨着连接器并且接地要短而粗。如果放在主控芯片旁边作用就大打折扣了因为ESD脉冲已经过了很长一段走线才会被打到保护器件上脉冲在走线上的寄生电感上会产生很高的尖峰电压照样可能损坏芯片。TVS管的方向也容易搞错。单向TVS是有极性的阳极接GND、阴极接信号线接反了不但不起保护作用反而会成为一个大电容影响信号质量。应用双向TVS的场景比如RS485的A、B线之间则不存在方向性问题。4.4 去耦电容放对位置比放够数量更重要很多原理图上芯片电源引脚旁边一堆100nF电容但在芯片内部这些电容如果layout时离电源引脚太远效果很差。分析原理图时看的不光是“有没有电容”还要在后期对照PCB的时候看“电容放在哪里”。经验法则每对电源供电引脚至少放一个100nF的陶瓷电容放置位置尽量靠近芯片引脚走线要短而粗。对于大电流负载比如MCU内核供电、DDR供电还需要一颗10uF或22uF的钽电容或陶瓷电容做低频储能。如果一个芯片有多个电源引脚不要只放一颗电容要分别给每一对引脚配。此外模拟电路部分ADC参考电压、运放电源的去耦要求比数字电路高得多往往需要π型滤波磁珠 电容 电容。如果原理图上模拟电源引脚只有一颗100nF这个设计在低精度应用里也许没问题但要求高精度的ADC采样应用里就很可能不达标。5. 分析原理图的进阶心法把“看图”变成“读图”最后聊点更进阶的东西。原理图分析熟练到一定程度后你会发现看一张图的效率差异不在眼睛而在脑子。你需要建立一套属于自己的“经验反射”看到某类电路结构立刻能联想到典型问题和对应风险。5.1 模块化思维从原理图抽象出功能单元高手看图不会停留在“这里一个电阻、那里一个电容”的层面而是直接把电路抽象成功能模块。看到“运放 电阻网络 电容反馈”就是一个放大电路看到“MOS管 电感 二极管 反馈电阻”就是一个Buck电路看到“晶体 两个电容”就是一个振荡器模块。养成模块化思维后你的分析速度和准确度都会上一个台阶。遇到不认识的电路模块先看它连接的核心芯片是什么再查对应功能框图就很容易判断出它在整个系统中的角色。5.2 带着问题看图预判故障场景分析原理图最好的方式是带着具体问题去看。比如“这个板子为什么上电后LED不亮”那么你的关注点就会集中在LED驱动电路、GPIO配置和电源通路上再比如“为什么串口收不到数据”那就要重点检查TXD、RXD是否交叉、电平是否匹配、波特率是否配置正确。在项目评审阶段高水平的硬件工程师会在原理图上实施“故障预演”针对每个核心芯片的外围电路假设某个器件失效或者参数偏移推演系统会有什么表现。这种能力不是天生的而是在大量失败案例中总结出来的。5.3 把原理图分析成果文档化看这张图不能只记在脑子里一定要动笔。我处理过的每个项目都有一份“原理图分析记录”里面包含功能框图、电源树、信号连接表、器件参数核对清单、可疑点备忘。这份记录不仅是自己的思考痕迹也是后期调试时的总索引。具体做法是把原理图按模块截图粘贴到文档里旁边用文字标注每个模块的输入、输出、关键参数、作用和风险点。信号连接表则记录核心芯片的每个引脚接了什么、为什么这么接。这样你过两个星期再回来调试这块板子不用重新从头看图翻出分析记录就能快速恢复记忆。5.4 与PCB布局配合看原理图原理图分析的终点必然是PCB版图。有些原理图上看着完全正常的电路放到PCB版图里一对照就能发现大问题去耦电容离引脚太远、电源走线太细、晶振摆在板边、高速信号跨越了分割的地平面。所以只要条件允许一定要把原理图分析和PCB布局检查结合起来。我个人经验是分析原理图时把每一路关键信号、每一路电源都命名为清晰的网络名并且在PCB中打开“网络高亮”功能快速扫一遍关键网络的走线路径。花半小时做这个澄清工作可能省下后来调试时的三天时间。原理图分析说穿了就是“观察、理解、验证、总结”四个动作的循环。观察看结构理解看原理验证看参数总结看经验。每次分析完一块板子把那些踩过的坑、发现的问题、验证过的经验记录下来时间长了你的硬件调试水平自然会有一个质变。
返回列表