
做硬件这些年最绕不开的就是原理图与 PCB。不管是拿 STM32F103C8T6 画一块最小系统板还是摆弄 SW6206 这类移动电源快充方案原理图和 PCB 始终是硬件从想法变成实物的第一道门槛。这篇备忘是我自己长期踩坑后整理出来的内容包括从原理图规范化绘制、封装处理到 PCB 布局布线、工艺参数再到 AD、Allegro、Pads、嘉立创EDA 这些常用工具的问题排查非常适合刚入门的学生、初中级硬件工程师以及想自己动手做板子的电子爱好者参考。内容不求面面俱到只求每一节都是能落地的经验和教训。1. 原理图设计先把系统拆成模块再动手原理图不是把芯片引脚一根根连起来就完事。我见过太多新人拿到一个功能就开始堆元件结果画到一半发现自己都看不懂自己画的图。真正高效的做法是先把系统拆成功能模块每个模块负责一件事模块之间再通过接口连起来。1.1 先从“最小系统 外设”搭骨架以最常见的 STM32F103C8T6 为例一块能跑起来的最小系统板至少要有电源、时钟、复位、下载电路四样东西。控制 LED 亮灭的原理图其实不复杂PA 口的某个 GPIO 通过限流电阻接 LED 到地输出高电平就点亮输出低电平就熄灭。电阻值根据 LED 工作电流选比如 5V 供电一般用 1k3.3V 供电用 330Ω 或 470Ω目的就是让电流不超过 LED 的额定值。老一代的 STC89C52RC 也是类似套路只是需要注意它的 IO 口在准双向模式下驱动能力有限控制 LED 时经常要采用灌电流方式也就是 LED 阳极接正电源阴极通过电阻接 IO 口IO 输出低电平点亮。很多教程喜欢用这种接法因为 51 端口的灌电流能力高于拉电流能力。做原理图之前先把这些最小系统单个模块画好并验证过后面堆功能时才不会乱。外设再接进来的时候比如 CH340 做 USB 转串口RS232 电平转换DHT11 温湿度传感器WS2812B 灯带等只需要保证模块之间的电平匹配和接口方向正确即可。1.2 常用驱动与信号调理电路别硬背要理解为什么TB6612 电机驱动模块很多同学一看引脚多就晕。其实它核心就是两个 H 桥用来控制电机正反转和转速。VM 接电机供电VCC 接逻辑电压PWMA/PWMB 接 PWM 信号AIN1/AIN2 和 BIN1/BIN2 控制方向STBY 要拉高才能工作。画这种电路时关键是留意逻辑电源和电机电源之间的滤波电容否则电机一启动容易把控制电路拉复位。H 桥驱动电路原理图里四个开关管组成的桥臂绝对不能上下同时导通否则直通短路烧管子。所以有经验的工程师会在原理图阶段就考虑驱动芯片的死区时间或者在栅极驱动电路里预留 RC 延时。电机是感性负载反向并联续流二极管是必须的不是可选。蜂鸣器电路更典型。有源蜂鸣器内部自带振荡源给它供电就会响但 IO 口驱动能力不够正常要加三极管放大。NPN 三极管基极串一个几 kΩ 电阻接 IO发射极接地集电极接蜂鸣器到电源。无源蜂鸣器则需要输出一定频率的方波才能发声电路结构相似但软件上要产生 PWM。无论有源无源只要蜂鸣器是电磁式的线圈两端都要反向并联一个二极管不然关断瞬间的反压尖峰可能击穿三极管。4-20mA 信号调理电路常见于工业传感器。保存电流信号的好处是长线传输不受电压压降影响而且断线时电流为 0可以当作故障信号。设计接收端时一般用一个精密电阻把电流变成电压再用运放调理到 ADC 的输入范围。比如 4-20mA 流过 100Ω 电阻得到 0.4-2V再通过运放做一个电平抬升和放大使其变成 0-3.3V 给 MCU。这里要注意采样电阻的温漂别用普通 5% 电阻要选高精度低温漂的金属膜或者线绕电阻。ITR9606 这类反射式光电传感器用来做接近检测或者寻迹小车非常合适。它内部是红外发射管加光电晶体管原理图上发射管要串限流电阻接收管的上拉电阻和输出形式需根据后端电路选择可以输出模拟量也可以用比较器转数字量拿到手册先确认其输出类型再接线。1.3 原理图要画得像“说明书”而不是给自己挖坑原理图是给工程师看的“说明书”画得清晰比画得快重要。在 AD 中做分区域绘制比如电源区、MCU 区、接口区、驱动区各自放一页或者在同一 Sheet 内用不同标题框区分区块这种习惯能让你三个月后回看时依然秒懂。AD21 调整图纸大小很简单在 Properties 面板里修改图纸尺寸即可或者用 Design - Sheet 修改。图纸不够大导致元件挤在一起反过来又会导致导出 PDF 时出问题。关于原理图导出 PDF 只有部分区域这是 AD 用户经常遇到的坑。问题多半出在打印设置上PDF 打印机只打印了当前选中的区域或者缩放方式选择了“As Displayed”。解决办法是在打印预览中把页面范围选成“All Sheets”缩放方式选“Fit On Sheet”再确认一下纸张大小多试一次就能整图输出。AD24 的 Cross Reference 功能也值得用起来。它能自动生成器件的交叉引用表告诉你某个器件分布在原理图的哪一页、哪个位置尤其适合多页设计的项目。布局时按区域划分加上 Cross Reference焊板子的同事来回翻图翻到骂人的概率会小很多。还有个小习惯在原理图中拖动元件时不要担心连着的导线会断开。AD 默认移动元件时导线会自动保持连接如果发现一动元件连线就断多半是勾选了“Drag”而非“Move”或者快捷键没设置对。可以用快捷键 M 配合移动选项操作也可以在 Preferences 的 Schematic - Graphical Editing 里调整“Always Drag”选项。2. 原厂方案与参考设计别人的板子怎么“榨干”价值现在的芯片越来越复杂很多新项目不是从零开始画而是站在原厂参考设计肩膀上做二次修改。手头有全套原厂方案资料是件很幸运的事但要用好这些资料也得讲究方法。2.1 下载原厂方案资料时要先验证完整性以前为了做快充移动电源我找过 SW6206 的原厂方案解压后里面有原理图、PCB、寄存器列表、BOM 和芯片手册整整一套。这类大厂方案一般都很完整但下载完必须第一时间做三件事一是检查原理图软件版本是否可以打开很多原厂用 PADS 或者 Cadence 低版本画图你手上装的 AD 高版本可能导入不了需要装对应软件或者找人转格式二是核对 BOM 中的料号是不是当前市场上能买到的尤其是磁性元件、MOS 管这类关键物料原厂选型可能在你们供应商目录里就没有三是确认寄存器列表是否和芯片版本匹配特别是第三方工具量产的芯片固件版本不同寄存器地址可能有差异。同样9017R 这类充电芯片的方案也一样。拿到原理图先看它外围的电阻电容很多电源芯片的输出电压是由电阻分压决定的原厂给的默认值不一定适合你的电池电压要会根据手册里的公式重新计算。2.2 从参考设计反推原理图的可取之处DDR4 原理图这类高速接口电路直接抄可能出问题但你可以学习它的设计思路。比如 DQ 和 DQS 差分信号的分组走线VREF 参考电压的滤波电容位置VTT 端接电源的处理都是经过厂商验证过的。反推原理图时我习惯先在纸上画出信号流向再对照 PCB 看关键元件摆放比如 DDR4 的地址线为什么要加终端电阻为什么 VTT 电源要靠近颗粒端这些细节在数据手册里往往只是一句话但在参考设计里能看得很清楚。反激式开关电源的 PCB 也是一样高压侧和低压侧的间距变压器底下要不要开槽光耦隔离的距离RCD 吸收回路的环路面积原厂布局都会把这些关键点体现出来。你照着画一遍等于把别人的经验过了一遍手。2.3 参考设计不能盲抄必须结合自己的成本、交期与工艺原厂方案往往用的是性能最好的料但你的产品可能要考虑成本。比如原厂 BOM 里用了钽电容你可以评估换用低 ESR 的 MLCC 是否可行原厂板子为了高频性能用了 Rogers 板材咱们普通产品用 FR4 就够了。但是电源类芯片的布局布线不建议随意改关键电流环路的走线一旦拉长可能导致纹波超标甚至芯片异常。改板前最好先做原理仿真或者参考原厂设计指南里的 Layout 建议不要只看 PCB。抄参考设计还有一个被忽略的地方丝印和测试点。原厂 PCB 上通常会预留很多测试点、调试电阻位批量生产时不一定用上但样机调试阶段非常方便。有条件的话把这些保留在自研板卡里调不通的时候就知道有多香了。3. 封装与库管理管脚多、封装错后患无穷原理图画得再花哨封装不对也是白搭。封装出问题轻则丝印对不齐重则器件焊不上去整个电路板报废。所以每次画新板子我在封装上花的时间从来不少于原理图。3.1 管脚数量很多的器件原理图封装怎么拆 partCadence 系列工具OrCAD Allegro在遇到大规模 IC 时一个元件的管脚可能上百个比如 MCU、FPGA、DDR 颗粒。如果在一个原理图符号里把所有引脚都画出来整张图纸密密麻麻没法看。封装拆分就很有必要了比如把电源引脚单独放到一个 Power Part 里其他功能引脚按端口类型分成多个 Part像“Part A 放左侧接口”、“Part B 放右侧接口”。拆 Part 有几个硬性要求一是每个 Part 里的 Pin Number 必须和 PCB 封装一一对应不能重复也不能漏否则生成网表就会报错二是管脚电气类型要设准确电源脚设 Power输入脚设 Input输出脚设 Output上拉下拉脚设 Passive不然后面仿真或 DRC 会出一堆莫名其妙的问题三是多个 Part 必须共用同一个 PCB Footprint 属性否则导入 Allegro 时每个 Part 去找自己的封装肯定会失败。还需要注意在 Capture 里拆完 Part 后原理图中放置元件时会弹出选择用哪个 Part很多人嫌麻烦全部放同一个 Part导致引脚缺失DRC 时不报错但 PCB 封装上网络连不上。放置时务必把每个 Part 依次放出来且不要遗漏。3.2 从原理图封装到 PCB 封装的导入路径在 Cadence 中原理图元件的 PCB Footprint 属性里填写一个名字比如“LQFP48”生成网表后 Allegro 导入网表时就会去封装库路径中查找名为 LQFP48 的封装。找不到就会报错。所以封装库的路径设置很关键。很多工程双击库文件夹需要在 Setup - User Preferences - Design Paths 下将封装库目录指向 psmpath、padpath 等。AD 中相对简单一点原理图库元件可以直接绑定 PCB 封装编译集成库后使用。但也要注意如果原理图换过封装名PCB 更新时容易找不到封装。嘉立创 EDA 则是在线封装库输入封装名就能搜到很多常用器件甚至封装和技术手册直接关联对新手非常友好。Allegro 怎么导入原元库这个问题很多新手问。实际上就是设置库路径后在 Place - Manually 弹出的窗口中选中元件如果封装库路径正确就能看到封装预览并放置。如果放置后找不到封装多检查库路径是否配置了工程目录。3.3 封装命名、器件位号和显示信息规范封装命名一定要有规律。我习惯用“类型_尺寸_间距_极性”的方式比如 “R_0603”、“C_0805”、“LQFP48_0.5”、“SOT23-5”。这样在 PCB 阶段看到名字就知道大概。千万不要出现“封装1”、“封装2”这种名字过两周你自己都不记得哪个是哪个。在 PCB 上显示元器件型号和名称AD 里可以在 Properties 面板中选择元器件勾选 Designator 和 Comment 的显示属性。批量修改时可以按 Shift 选中多个元件后在 Properties 中统一调整字体大小和可见性。不过要注意丝印不能压在焊盘上否则贴片时会造成锡珠还影响焊接质量。器件位号也要规范位号原则上不能改得乱七八糟。插接件统一用 J电阻用 R电容用 C芯片用 U 或者 IC。位号乱会直接导致 BOM 整理困难和焊接贴片时找不到位置这种低级问题在评审时会被骂的。4. PCB Layout布局决定成败布线见真功夫PCB Layout 是整个硬件设计里最能把水经验和理论知识拉开差距的环节。同样一张原理图不同人画出来的板子性能和可制造性天差地别。4.1 布局布线思路先模块后连接再细节拿到网表不要急着连线先布局。布局原则我总结为五句话先放主控和核心器件再放晶振、去耦电容等关键“配角”然后按功能分区放接口和外设最后逐步微调保证信号流向顺畅。晶振要离 MCU 时钟引脚尽可能近走线尽量短且包地晶体下方不要走其他信号线。去耦电容也要紧挨芯片电源脚最好是 100nF 的电容与芯片 VCC-VSS 引脚同层且距离小于 3 毫米电源进来的大电容放模块入口。电源芯片中间的开关节点电感回路面积要尽可能小反馈线从输出端单独拉回不要靠近电感和二极管。这些都是布局阶段就要定下来的事不要等布线时再救。电气分区也是布局的重要内容。数字电路、模拟电路、电源电路、高频信号区域尽量分开避免互相干扰。高低压隔离 PCB 上低压侧和高压侧之间必须有清晰的隔离带隔离带内不能铺铜也不能走线很多时候还要在 PCB 上开槽切断泄漏路径。4.2 线宽、电流、层叠与间距的关键参数PCB 走线线宽和电流之间的关系是每个硬件工程师都要会查的表。但网上流传的对照表很多都不统一原因是实际允许电流跟铜厚、温升、散热条件都有关系。这里给一个在 1oz 铜厚、允许温升 10°C 条件下的工程经验值线宽对应截面积建议最大电流0.2mm8mil约 0.008 mm²约 0.5A0.5mm20mil约 0.016 mm²约 1A1.0mm40mil约 0.035 mm²约 2A2.0mm80mil约 0.070 mm²约 4A这是直流情况下的保守值实际高压交流或者频率很高时要额外考虑集肤效应和损耗。不要以为 1mm 线宽能走 2A就真的贴着极限用电源走线建议预留 1.5 倍以上余量地线条件允许干脆铺铜处理。层叠设计也要提前规划。2 层板常用板厚 1.6mm顶层走信号和电源底层走地适合低速控制板。4 层板常用 Top - GND - Power - Bottom 的层叠1.6mm 板厚下建议 Top 层到 GND 层距离尽量靠近电源层和地层紧耦合可以有效降低电源阻抗。高速板子比如 DDR4层叠厚度和阻抗计算会更严格不能只靠感觉要用阻抗计算软件搬出参数再调。走线要求方面避免直角走线最好用 135° 转角或者圆弧同一网络尽量在同一层走线过孔少一点差分信号线对要做到间距均匀、长度匹配时钟等敏感信号要包地并远离电源开关节点。走线间距至少保持 3mil 是工艺极限但工程上建议 6mil 以上板厂做起来良率高很多成本也不会涨。4.3 电源与传感器电路的专项布局细节反激式开关电源的 PCB 设计要点首先是把功率环路面积降到最小。具体来说输入电容正极到变压器原边一端、开关管漏极、吸收网络、再回到输入电容负极这条回路的面积越小漏感和辐射就越小。次级整流二极管的环路也同样处理。光耦和反馈运放要放在次级输出端周围走线远离原边大电流区域。高低压隔离布局时安规距离不是走线间距说了算而是爬电距离和电气间隙。AC 220V 侧的爬电距离通常要求 6.3mm 甚至更高具体根据污染等级和材料组别查表。板厂在做这类板子时也会注意但咱们自己画板时理应先画一条 Keepout 隔离带规则里设置死区这样高压线不小心走过去就会被 DRC 拦住。DHT11、WS2812B 这类单总线器件主要注意供电纯净和信号上拉。DHT11 的数据线建议就近加 4.7kΩ 上拉到 3.3V如果 MCU 是 5V 注意电平匹配。WS2812B 级联画多颗灯时电源走线要按总电流算灯多了中间位置要补电信号线要加 300Ω 到 500Ω 的串阻不然长距离级联数据容易乱码。5. 常用EDA工具的实操细节与疑难排查再熟练的工程师也躲不过 EDA 工具抽风。这一部分我整理了我们平时遇到频率最高的工具问题每个都是真实调试记录。5.1 Altium DesignerAD系列高频问题AD 导入 Gerber 转 PCB。有的客户只发来 Gerber 文件没有源工程。AD 中可以连 File - Import - Gerber把各个层文件导进来然后再利用层设置和 DXF 转成 PCB。但要注意Gerber 转出来的只是一堆图形对象没有网表和器件属性不能当正常 PCB 文件编辑。如果你需要改板建议用手上的 Gerber 加原理图重新生成 PCB而不是试图把 Gerber 逆向成可编辑工程。AD20/AD21 导出 PDF 原理图只有部分区域。这个问题前面说过多半是打印设置问题。按 CtrlP 进入打印设置选择目标打印机为 PDF然后在 Advanced 或 Schematic Print 设置中把 Print Scope 改为 All SheetsScale 改为 Fit On Sheet再按住左下角 Paper 尺寸选大一点基本能解决。千万不要用屏幕截图功能代替 PDF 导出。AD 中 PCB 器件不能选中。最常见原因是器件被 Locked。选中其他器件按 CtrlA 选择全部如果锁定器件还是选不中就在 Properties 面板中取消 Locked 勾选或者在 PCB Filter 面板中用 IsComponent 过滤再解锁。另一个可能是 Filter 面板被过滤成了“Nothing”全部对象都无法选中重置 Filter 即可。AD 如何在 PCB 中显示元器件型号和名称。想同时显示位号和 Value先框选元器件在 Properties 面板中找到 Designator 和 Comment分别打开 Show Name/Show Value 的开关再把字体调小一点防止丝印重叠。如果只要位号不要型号就在 Comment 的显示开关处取消勾选。AD 原理图移元件断开连接。移动元件的时候编辑器默认会自动延长导线。如果你用的是 CtrlC/V 复制元件再移动连接可能会断。正确做法是按 M 键选择 Move然后拖动元件或者按住元件直接拖动让导线跟着走。如果发现某根导线接触不良可以放大看引脚端是否正好落在导线的捕捉点上。AD24 怎么输出 PCB 文件。需要区分是输出工程文件还是加工文件。输出 Gerber 加工文件建议用 File - Fabrication Outputs - Gerber Files在里面选择需要的层、钻孔层设置格点和精度点击 Generate 即可。输出光绘后还要生成钻孔文件 NC Drill一起打包给板厂。输出原工程文件则直接另存为 .PcbDoc 即可。5.2 Cadence Allegro 常见问题Allegro 17.2 打开 brd 文件时没有弹出 Allegro PCB Designer Product Choice。常见原因是文件关联中默认用了某个直接模式或者许可证配置不对。你可以按住 Shift 右键选择“打开方式”手动指定 Allegro PCB Designer 的可执行文件或者在启动菜单中找到 “Allegro PCB Designer” 后用 File - Open 打开 brd而不是直接双击文件。有时还需要在 License Manager 中切换到正确的产品特性。Allegro PCB Design 中如何确定查看距离和长度。用菜单 Measure 命令最方便。启动后可以测量两点之间的距离、坐标差和角度。如果想知道一条走线的总长度可以用 Show Element 选中该走线它会显示 line length。测量时注意单位设置Allegro 默认可能是 mil需要在 Setup - Design Parameters 中切换单位到 mm。Allegro 中螺丝孔如何制作。螺丝孔本质上是一个金属或非金属化安装孔。简单做法是在 Board Geometry 或 Mechanical 层的适当位置放一个圆形外形然后在 Manufacturing 层标注钻孔尺寸。更规范的做法是做一个 Drill Symbol 和 Route Keepout放在钻孔层上。如果螺丝孔需要接地就在外围加一圈铜皮焊盘并打一圈过孔否则普通安装孔开 Non-Plated 即可注意板厂文件里钻孔文件要包含这个孔。Cadence 封装导入 PCB 之前建议先用 Library Loader 检查封装库路径。在 Allegro 中选择 Setup - User Preferences - Design Paths把 padpath 和 psmpath 都指向你的库目录再导入网表。如果还报没有封装可以用 Tools - Database check 修复一下板卡数据库有时候是上次崩溃留下的残留。5.3 PADS、OrCAD 与嘉立创EDAPADS 的 PCB 文件提示报错自动关闭。基本都是文件数据库损坏或者库路径问题。先检查是否安装了对应版本补丁再尝试用 PADS 的 File - Troubleshooting 工具修复。有时候用管理员模式打开能暂时绕过权限限制但长期来看要把库路径配置到项目目录下避免每次打开都访问不存在的位置。平时记得多备份PADS 文件自动关闭遇到一次就够想哭。OrCAD 导出 PDF 原理图。不要用默认打印而是文件菜单下选 Print打印机选择 Adobe PDF 或系统 PDF 虚拟打印机然后在 Print Setup 中把打印范围改成“All Sheets”缩放比例改为“1:1”或“Fit to Page”。如果你装了 OrCAD Capture 的 PDF 导出插件可以直接用 Export PDF 功能设置页边距后输出效果更稳定。嘉立创EDA 画 PCB 教程简版。第一步从原理图设计开始添加器件、连接导线、检查电气规则然后生成网表切换到 PCB 编辑器。第二步设置板框用 Drawing 层的快捷键或者菜单里画矩形板框固定尺寸。第三步导入网表后按 F9 更新 PCB接着按模块摆放器件布线时用 B 键自动布线也行但电源和地线最好手动处理最后运行 DRC 修改错误出 Gerber 下单。我个人的体会是嘉立创EDA 的封装库非常全但用之前还是要对照实物核对一遍封装尺寸特别是 USB座、按键、排针这种结构件省得板子打回来器件插不进去。6. 经验备忘每次投板前的最后检查我想再补充几个自己画板多年总结出来的检查项。每次投板前按这个清单过一遍能规避掉大多数低级失误。第一封装和原理图的对应关系。用 3D 视图把 PCB 翻一遍对照实物尺寸仔细看看尤其是连接器、晶振、电池座这类立体器件。第二检查丝印极性电解电容、二极管、LED、电感极性方向都要和 PCB 库一致。第三看电源输入输出的电容值是否足够有些模块的电容静电容量写错会导致上电后纹波大。第四检查测试点是否足够方便将来量产和调试。第五看螺丝孔周围是否有走线避免压着线。最后Gerber 文件生成后一定要用 Gerber 查看器打开再核对一遍而不是直接发给板厂。这些检查看起来繁琐但比收到板子后发现问题再补要便宜太多。原理图与 PCB 绘制这件事没有一蹴而就的捷径就是靠一次一次认真盯细节堆出来的。希望这篇备忘能帮大家少走一些弯路把更多时间留给真正有趣的事情比如调板子以外的那部分生活。