做硬件这些年,最绕不开的就是原理图与 PCB。不管是拿 STM32F103C8T6 画一块最小系统板,还是摆弄 SW6206 这类移动电源快充方案,原理图和 PCB 始终是硬件从想法变成实物的第一道门槛。这篇备忘是我自己长期踩坑后整理出来的,内容包括从原理图规范化绘制、封装处理,到 PCB 布局布线、工艺参数,再到 AD、Allegro、Pads、嘉立创EDA 这些常用工具的问题排查,非常适合刚入门的学生、初中级硬件工程师,以及想自己动手做板子的电子爱好者参考。内容不求面面俱到,只求每一节都是能落地的经验和教训。
1. 原理图设计:先把系统拆成模块再动手
原理图不是把芯片引脚一根根连起来就完事。我见过太多新人拿到一个功能就开始堆元件,结果画到一半发现自己都看不懂自己画的图。真正高效的做法是先把系统拆成功能模块,每个模块负责一件事,模块之间再通过接口连起来。
1.1 先从“最小系统 + 外设”搭骨架
以最常见的 STM32F103C8T6 为例,一块能跑起来的最小系统板,至少要有电源、时钟、复位、下载电路四样东西。控制 LED 亮灭的原理图其实不复杂:PA 口的某个 GPIO 通过限流电阻接 LED 到地,输出高电平就点亮,输出低电平就熄灭。电阻值根据 LED 工作电流选,比如 5V 供电一般用 1k,3.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 管脚数量很多的器件,原理图封装怎么拆 part
Cadence 系列工具(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.2mm(8mil) | 约 0.008 mm² | 约 0.5A |
| 0.5mm(20mil) | 约 0.016 mm² | 约 1A |
| 1.0mm(40mil) | 约 0.035 mm² | 约 2A |
| 2.0mm(80mil) | 约 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 Designer(AD)系列高频问题
AD 导入 Gerber 转 PCB。有的客户只发来 Gerber 文件,没有源工程。AD 中可以连 File - Import - Gerber,把各个层文件导进来,然后再利用层设置和 DXF 转成 PCB。但要注意,Gerber 转出来的只是一堆图形对象,没有网表和器件属性,不能当正常 PCB 文件编辑。如果你需要改板,建议用手上的 Gerber 加原理图,重新生成 PCB,而不是试图把 Gerber 逆向成可编辑工程。
AD20/AD21 导出 PDF 原理图只有部分区域。这个问题前面说过,多半是打印设置问题。按 Ctrl+P 进入打印设置,选择目标打印机为 PDF,然后在 Advanced 或 Schematic Print 设置中,把 Print Scope 改为 All Sheets,Scale 改为 Fit On Sheet,再按住左下角 Paper 尺寸选大一点,基本能解决。千万不要用屏幕截图功能代替 PDF 导出。
AD 中 PCB 器件不能选中。最常见原因是器件被 Locked。选中其他器件,按 Ctrl+A 选择全部,如果锁定器件还是选不中,就在 Properties 面板中取消 Locked 勾选,或者在 PCB Filter 面板中用 IsComponent 过滤再解锁。另一个可能是 Filter 面板被过滤成了“Nothing”,全部对象都无法选中,重置 Filter 即可。
AD 如何在 PCB 中显示元器件型号和名称。想同时显示位号和 Value,先框选元器件,在 Properties 面板中找到 Designator 和 Comment,分别打开 Show Name/Show Value 的开关,再把字体调小一点防止丝印重叠。如果只要位号不要型号,就在 Comment 的显示开关处取消勾选。
AD 原理图移元件断开连接。移动元件的时候,编辑器默认会自动延长导线。如果你用的是 Ctrl+C/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 与嘉立创EDA
PADS 的 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 绘制这件事,没有一蹴而就的捷径,就是靠一次一次认真盯细节堆出来的。希望这篇备忘能帮大家少走一些弯路,把更多时间留给真正有趣的事情,比如调板子以外的那部分生活。