
1. 为什么我建议每个硬件工程师都完整走一遍从零画板的流程很多人第一次接触PCB设计都是从抄开始的——抄别人的原理图、抄别人的布局、抄别人的走线。抄本身不丢人但如果你从来没有从零完整走过一遍建工程、画原理图、导网表、布局、布线、铺铜、出Gerber的全流程那你永远只能停留在改板的水平遇到一个全新的项目就会卡壳。我自己带过不少新人发现一个规律凡是完整独立画过至少一块板子的人后面上手新项目都很快凡是只会改别人板子的人遇到新需求就手足无措。这篇内容就是写给那些想真正入门PCB设计的朋友。工具我选Altium Designer 24以下简称AD24原因很简单它在中小型硬件团队里占有率极高界面逻辑清晰对新手友好而且从原理图到PCB再到Gerber输出是一条龙闭环。主控芯片我用STM32系列因为STM32的生态太成熟了资料多、封装库全、踩坑的人多遇到问题一搜就有答案。整块板子我会做成一个最小系统板——包含STM32主控、电源、晶振、复位、下载接口和几个LED麻雀虽小五脏俱全画完这一块你就掌握了PCB设计的全部核心流程。你可能会问现在不是有嘉立创EDA这种在线工具吗为什么还要学AD我的看法是嘉立创EDA适合快速打样和小项目上手确实快但AD在复杂项目、多层板、团队协作、库管理上的优势是碾压级的。而且很多公司的车规级EDA flow、工业级项目都是基于AD或Allegro这类工具。学会AD你的职业天花板会高很多。当然如果你只是想画个简单的两层板玩玩嘉立创EDA完全够用这个后面我会对比着讲。这篇文章我会把每一步都拆开讲透包括为什么这么选、参数怎么算、哪里容易踩坑。你跟着走一遍最后能拿到一块可以直接发给板厂打样的板子以及完整的Gerber文件。工程文件的结构我也会说明方便你自己复现。2. 开工前的整体设计与思路拆解2.1 先想清楚这块板子要干什么动手之前先明确需求。我见过太多新手一上来就打开软件开始画画到一半发现电源方案没定、接口没想清楚返工重来。所以第一步是写一份设计需求清单哪怕只有几行字。这块STM32最小系统板的需求我列一下主控STM32F103C8T6LQFP48封装这是最经典的入门型号资料多、价格便宜、货源稳。供电USB 5V输入通过LDO降到3.3V给MCU供电。为什么用LDO不用DC-DC因为这块板子电流小MCU满载也就几十毫安LDO电路简单、纹波小、不需要电感对新手最友好。如果以后你要做电机驱动或者大电流项目那必须上DC-DC这是后话。时钟8MHz无源晶振HSE 32.768kHz晶振LSE可选。HSE是必须的LSE做RTC才需要。复位一个复位按键RC复位电路。下载调试SWD接口4针VCC、GND、SWDIO、SWCLK比JTAG省引脚。指示电源指示灯一个用户LED接在PC13方便跑点灯程序。启动模式BOOT0和BOOT1跳线或者下拉电阻。把这些列清楚后面画原理图就是填空不会漏东西。2.2 工具链和工程结构规划AD24的工程结构是这样的一个Project工程下面挂多个Document文档包括原理图.SchDoc、PCB.PcbDoc、原理图库.SchLib、PCB库.PcbLib还有输出配置文件.OutJob。我强烈建议你从一开始就养成规范建工程的习惯不要把所有东西堆在一个文件夹里。我的目录结构是这样的STM32_MinBoard/ ├── Project/ │ └── STM32_MinBoard.PrjPcb ├── Schematic/ │ ├── STM32_MinBoard.SchDoc │ └── Power.SchDoc ├── PCB/ │ └── STM32_MinBoard.PcbDoc ├── Library/ │ ├── MySchLib.SchLib │ └── MyPcbLib.PcbLib ├── Output/ │ ├── Gerber/ │ └── BOM/ └── Doc/ └── 设计说明.md为什么要分这么多文件夹因为项目一大文件几百个不分目录你根本找不到。而且AD的工程文件里记录的是相对路径只要你整个文件夹移动工程不会丢文件。这一点很多人不知道经常出现换了台电脑工程打不开的情况就是因为路径乱了。2.3 关于元器件库的选型思路新手最容易卡在找不到元件这一步。AD自带库很有限实际项目里我们一般有三种来源自己画库最靠谱但费时间。核心器件比如STM32建议自己画因为你要控制引脚定义和封装。用厂商提供的库比如ST官方会提供STM32的AD库但版本可能很老需要自己改。用第三方库平台像立创商城、Samacsys、Ultra Librarian这些可以下载到现成的原理图符号和PCB封装。但要注意第三方库质量参差不齐一定要核对引脚和封装尺寸。我的建议是核心芯片自己画阻容感用现成库。STM32的LQFP48封装引脚间距0.5mm画错一个引脚整块板就废了所以必须对着Datasheet自己画一遍画的过程也是熟悉芯片的过程。3. 核心细节解析与实操要点3.1 原理图绘制从建库到连线先说建库。打开AD24新建一个SchLib然后画STM32F103C8T6的符号。这里有个技巧不要按引脚顺序排列要按功能分组。比如把电源引脚VDD、VSS放一起把晶振引脚PD0、PD1放一起把SWD引脚PA13、PA14放一起。这样画原理图的时候连线清爽不容易出错。画符号的时候引脚名称和引脚号都要填对。引脚号是给PCB封装用的引脚名是给人看的。我见过有人引脚号填错结果PCB里网络全乱套查了半天才发现是符号画错了。画完符号接着画PCB封装。LQFP48的封装参数本体7x7mm引脚间距0.5mm引脚宽度0.3mm引脚长度0.6mm。这些参数在Datasheet的Mechanical Drawing那一页都有。焊盘尺寸我一般这样算引脚宽度0.3mm焊盘宽度取0.55mm留0.25mm余量焊盘长度取1.5mm比引脚长0.9mm方便焊接和检查。这些余量不是随便定的是考虑到PCB加工公差和贴片精度。注意焊盘间距0.5mm属于细间距如果你的板厂工艺能力一般比如最小线宽/间距只能做到6mil那走线要特别小心尽量从焊盘中间引出不要从焊盘侧面走。原理图连线的时候我习惯用**网络标签Net Label**而不是直接拉线。为什么因为直接拉线会让图纸很乱尤其是电源和地到处都是线。用网络标签同名即同网络图纸干净改起来也方便。比如所有VDD都标VDD_3V3所有GND都标GNDAD会自动把它们连起来。电源部分我用AMS1117-3.3这是最经典的LDO。输入5V输出3.3V最大电流1A实际用的时候留一半余量500mA以内比较稳。输入输出各加一个10uF和一个0.1uF电容大电容滤低频小电容滤高频这是标准做法。为什么要两个因为不同容值的电容对不同频率的噪声阻抗不同并联起来才能覆盖宽频段。3.2 网表导入与封装匹配检查原理图画完下一步是**Compile编译**工程检查有没有错误。AD会检查重复的位号、未连接的引脚、单端网络等。编译通过后就可以导入PCB了。导入之前一定要做一件事核对每个元件的封装。在原理图里双击元件看Footprint那一栏填的对不对。我踩过的坑有一次画了个电阻封装填的是0805结果实际买的是0603板子回来焊不上只能飞线。所以封装和实物必须一一对应。导入PCB的操作用Design - Update PCB Document会弹出一个工程变更订单ECO列出所有要添加的元件和网络。点Execute Changes元件就出现在PCB编辑区了。这时候所有元件是堆在一起的需要你手动布局。3.3 布局决定板子成败的关键一步布局比布线重要得多。布局合理布线就是顺水推舟布局糟糕布线怎么走都别扭。我的布局原则是先大后小先把STM32、LDO、晶振这些大件摆好再摆阻容。按功能分区电源区、MCU区、接口区、指示区各占一块不要混在一起。晶振靠近MCU晶振到MCU的走线越短越好最好小于10mm而且晶振下面不要走其他信号线。去耦电容紧贴电源引脚每个VDD引脚旁边放一个0.1uF电容距离越近越好最好在同一面。接口靠边USB、SWD接口放在板子边缘方便插拔。板子尺寸我定的是50x40mm两层板。为什么是两层不是四层因为这块板子信号速率不高STM32F103最高72MHz但实际跑起来大部分信号也就几MHz到几十MHz两层板完全够用而且打样便宜。如果是高速信号比如DDR、USB高速、以太网那必须四层以上因为需要完整的参考平面来控制阻抗。布局的时候我习惯把板子边框先画好用Keep-Out Layer画一个50x40mm的矩形然后所有元件都放在这个框内。Keep-Out Layer是禁止布线层板厂会按这个框来切割板子。3.4 布线规则设置别急着走线很多人布局完就开始走线这是大忌。走线之前必须先设置设计规则Design Rules。AD24的规则在Design - Rules里常用的几个线宽Width默认信号线6mil0.15mm电源线20mil0.5mm地线可以更宽。为什么电源线要粗因为电流大线细了会发热甚至烧断。20mil大概能过1A电流留了余量。间距Clearance默认6mil。这是最小安全间距板厂能做到6mil的话成本比较低。如果做到4mil价格会贵不少。过孔Via外径0.6mm内径0.3mm。这是最常用的过孔尺寸板厂都能做。铺铜连接Polygon Connect焊盘和铺铜的连接方式我一般选Relief Connect十字连接这样焊接的时候散热慢一点好焊。如果选Direct Connect全连接散热太快手工焊很难焊上。这些规则不是拍脑袋定的是根据板厂工艺能力和电气需求综合定的。比如线宽你可以用在线阻抗计算器算一下但一般低速信号不用太纠结按经验值来就行。4. 实操过程与核心环节实现4.1 手工布线的顺序和技巧规则设好开始布线。我的布线顺序是电源 - 地 - 晶振 - 高速信号 - 普通信号。电源线先走因为电源线最粗占空间最大先走完电源剩下的空间再走信号线。地线我一般不单独走而是最后铺铜让铺铜来充当大地。但晶振的地和MCU的地要单独处理后面讲。晶振走线要特别注意尽量短、尽量直、不要打过孔、下面不要走其他线。晶振是敏感信号走线长了容易引入噪声导致MCU起振困难或者时钟不稳。我一般把晶振放在MCU背面如果板子双面贴或者紧挨着MCU的晶振引脚。SWD接口的SWCLK和SWDIO走线也要注意虽然速率不高但最好等长避免时序问题。不过对于STM32F103这种低速调试接口其实要求没那么严随便走也能用但养成好习惯没坏处。走线的时候AD24有个很好用的功能叫Interactive Routing交互式布线快捷键PT。走线时按Tab可以改线宽按数字键2可以打过孔换层。我习惯用推挤布线模式Push and Shove这样走线的时候会自动推开已有的线避免冲突。实操心得走线不要追求横平竖直45度角或者圆弧都可以。但不要走锐角小于90度因为锐角在蚀刻的时候容易残留导致短路。也不要走直角直角在高频下会有阻抗突变。4.2 铺铜与接地处理走完线最后一步是铺铜。铺铜有两个作用一是提供低阻抗的地回路二是散热。AD24里用Place - Polygon Pour选择GND网络画一个覆盖整个板子的多边形然后Rebuild。铺铜的时候有几个参数要注意Remove Dead Copper选上这样孤立的铜皮会被自动去掉避免形成天线。Pour Over Same Net Polygons选上这样同网络的铺铜会连在一起。Grid Size铺铜的网格大小一般设0.5mm太小了计算慢太大了铜皮不连续。关于接地网上有个热词叫星型接地我解释一下。星型接地是指所有地线都从一个点星点引出避免地电流互相干扰。对于这块小板子其实用铺铜接地就够了因为地平面本身就是最低阻抗的回路。但如果是模拟数字混合系统那就要考虑单点接地或者分割地平面。这块板子没有模拟部分所以不用纠结。铺完铜记得做一次DRCDesign Rule Check检查有没有违反规则的地方。DRC会报出间距不够、线宽不够、未连接的网络等问题。我一般会反复DRC直到零错误零警告才敢出Gerber。4.3 丝印调整与装配图输出DRC通过后调整丝印。丝印是印在板子上的白色文字用来标识元件位号、极性、接口定义。丝印要清晰、不重叠、不被元件挡住。我一般把位号放在元件旁边字体大小1mm线宽0.15mm。调整完丝印可以输出装配图Assembly Drawing方便焊接的时候对照。AD24里用File - Smart PDF或者File - Fabrication Outputs - Assembly Outputs来输出。4.4 Gerber文件导出最容易出错的环节Gerber是板厂能看懂的文件格式相当于PCB的PDF。AD24导出Gerber有两种方式一种是手动一个个层导出另一种是用OutJob文件批量导出。我强烈推荐用OutJob因为手动导出容易漏层而且每次都要重复操作效率低。OutJob的配置步骤新建一个.OutJob文件添加到工程里。在Fabrication Outputs里添加Gerber Files。在Layers标签里选择要导出的层Top Layer、Bottom Layer、Top Solder、Bottom Solder、Top Overlay、Bottom Overlay、Keep-Out Layer、Mechanical Layer板框。在Drill Drawing里添加钻孔文件NC Drill Files。在General里设置单位英寸或毫米、格式2:4或2:5、零抑制Leading/Trailing Zeros Suppressed。这里有个坑单位和格式一定要和板厂确认。大部分板厂默认是毫米、2:4格式但有些板厂要求英寸。如果搞错了板子尺寸会差25.4倍直接报废。我一般导出前会先问板厂的工程对接人确认他们的要求。导出后用Altium Designer Viewer或者免费的Gerber查看器比如KiCad的Gerber Viewer、在线Gerber查看器打开检查一遍。重点看板框对不对、层有没有漏、钻孔位置对不对、丝印有没有压焊盘。注意Gerber文件里不要包含任何中文因为很多板厂的CAM软件对中文支持不好会乱码。丝印上的中文要么改成英文要么用图形的方式画出来。4.5 BOM表和坐标文件的输出除了Gerber还要输出BOM表物料清单和坐标文件Pick and Place。BOM表用Reports - Bill of Materials可以导出Excel格式包含位号、型号、封装、数量。坐标文件用File - Fabrication Outputs - Generates Pick and Place Files包含每个元件的X/Y坐标和旋转角度贴片厂会用这个文件来编程。BOM表里我一般会加一列备注写清楚哪些元件可以不焊比如LSE晶振、哪些元件有方向比如二极管、电解电容。这样焊接的时候不会搞错。5. 常见问题与排查技巧实录5.1 原理图编译报错怎么办新手最常遇到的编译错误有几种错误类型原因解决方法Duplicate Component Designators位号重复用Tools - Annotate Schematics重新编号Unconnected Pin引脚未连接检查是否漏连或者加No ERC标记Floating Net Label网络标签悬空检查标签是否贴在导线上Component has no Footprint元件没填封装双击元件在Footprint栏填上我遇到最多的是Unconnected Pin尤其是电源引脚。STM32有多个VDD和VSS引脚画符号的时候如果只画了一个就会报错。解决办法是在符号里把所有电源引脚都画出来或者用Hidden Pin隐藏多余的引脚但不推荐容易漏连。5.2 PCB导入后元件不见了有时候导入PCB后发现有些元件没出现。原因通常是原理图里元件的封装名和PCB库里的封装名不一致。AD是按封装名来匹配的名字对不上就找不到。解决办法是检查原理图里的Footprint字段确保和PCB库里的封装名完全一致大小写敏感。还有一种情况是元件被放到了板框外面缩小视图就能看到。AD导入元件时默认放在板框右下角如果板框很小元件就跑到外面去了。5.3 DRC报间距错误但看起来没问题DRC报间距错误但你目测觉得没问题这种情况通常是规则设置太严或者焊盘间距本身就很近。比如LQFP48的焊盘间距0.5mm焊盘宽度0.55mm那焊盘之间的间隙只有-0.05mm负数意味着重叠这时候DRC肯定会报错。解决办法是给这个封装单独设一个间距规则或者把焊盘的宽度改小一点。还有一种情况是铺铜和焊盘的间距。铺铜默认间距是0.5mm如果焊盘密集铺铜进不去就会报错。这时候可以把铺铜间距改小到0.3mm或者手动调整铺铜形状。5.4 Gerber导出后板厂说文件有问题板厂反馈Gerber有问题常见的原因缺少板框板框要画在Keep-Out Layer或者Mechanical Layer而且必须是闭合的。如果板框不闭合板厂不知道怎么切割。钻孔文件缺失Gerber只包含铜层和丝印钻孔要单独输出NC Drill文件。有些板厂会帮你生成但最好自己输出。层命名不规范板厂一般要求层名是标准的比如Top Layer、Bottom Layer、Top Solder。如果你自定义了层名板厂可能识别不了。单位不一致前面说过单位和格式要和板厂确认。我一般导出Gerber后会自己先用Gerber查看器打开确认没问题再发给板厂。这样能避免来回沟通的时间成本。5.5 焊接时发现焊盘太小或太大焊盘尺寸不对通常是封装画错了。LQFP48的焊盘我前面说宽度0.55mm、长度1.5mm这是经过验证的尺寸。如果你画成0.3mm宽那焊盘比引脚还窄根本焊不上。如果画成1mm宽那相邻焊盘就短路了。阻容的焊盘也有讲究。0805封装的焊盘标准尺寸是1.0mm宽、1.3mm长间距1.0mm。如果你画成0603的尺寸电阻放上去会悬空。所以画封装的时候一定要对着Datasheet或者实物量一遍。避坑技巧画完封装后打印一张1:1的图纸把实物元件放上去比对一下。这个方法虽然土但非常有效能发现90%的封装错误。6. 工程文件结构与复现指南6.1 完整工程文件说明我最终交付的工程文件包含以下内容原理图STM32_MinBoard.SchDoc包含MCU、电源、晶振、复位、SWD、LED等全部电路。PCBSTM32_MinBoard.PcbDoc两层板50x40mm已完成布局布线和铺铜。原理图库MySchLib.SchLib包含STM32F103C8T6、AMS1117-3.3、晶振、按键、LED等符号。PCB库MyPcbLib.PcbLib包含LQFP48、SOT-223、0805、0603、晶振、按键等封装。OutJob文件Gerber_Output.OutJob一键导出Gerber、钻孔、BOM、坐标文件。Gerber文件Output/Gerber/目录下包含所有层的Gerber和钻孔文件。BOM表Output/BOM/目录下Excel格式包含位号、型号、封装、数量、备注。设计说明Doc/设计说明.md记录设计需求、关键参数、注意事项。6.2 如何复现这块板子如果你想完全复现按这个顺序来安装AD24新建工程按我上面的目录结构建文件夹。画原理图库和PCB库或者直接用我提供的库文件。画原理图编译检查确保零错误。导入PCB布局设置规则布线铺铜。DRC检查调整丝印输出Gerber和BOM。用Gerber查看器检查发给板厂打样。板子回来后对照BOM和装配图焊接上电测试。如果你只是想学习流程可以跳过画库的步骤直接用现成的库。但如果你想真正掌握我建议你至少把STM32的符号和封装自己画一遍这个过程会让你对芯片的理解深很多。6.3 后续可以怎么扩展这块最小系统板画完你可以在此基础上扩展加USB转串口用CH340或者CP2102方便和电脑通信。加OLED接口I2C接口的0.96寸OLED做显示。加传感器比如DHT11温湿度、MPU6050陀螺仪练手I2C和SPI。改四层板把电源和地单独做一层体验一下多层板的设计流程。加无线模块比如ESP8266或者NRF24L01做物联网项目。每扩展一个功能你都会遇到新的问题解决这些问题的过程就是成长。我自己的经验是画十块简单的板子不如认真画一块复杂的板子。因为复杂板子会逼着你学新东西比如阻抗匹配、差分走线、电源完整性。7. 我踩过的坑和给你的几句实在话最后分享几个我实际踩过的坑都是血泪教训。第一个坑晶振不起振。有一次画板子晶振离MCU太远走线绕了一大圈结果板子回来MCU死活不工作。查了半天才发现是晶振没起振。后来把晶振挪到MCU旁边走线缩短到5mm以内问题解决。所以晶振的布局怎么强调都不为过。第二个坑电源纹波太大。有一次用LDO给模拟电路供电输出端只放了一个10uF电容结果纹波有几十毫伏ADC采样全是噪声。后来在输出端并联了一个0.1uF和一个1uF纹波降到几毫伏。所以去耦电容不是随便放的容值和位置都有讲究。第三个坑Gerber漏层。有一次手动导出Gerber忘了导出Bottom Solder层结果板子回来底部焊盘没有开窗元件焊不上。从那以后我全部用OutJob导出再也没漏过层。第四个坑封装画错。有一次画SOT-23封装把引脚顺序搞反了结果板子回来三极管焊上去方向是反的只能飞线。后来我养成了一个习惯画完封装打印1:1图纸拿实物比对。这些坑你只要认真走一遍流程大概率也会遇到。但没关系遇到问题解决问题这就是硬件工程师的日常。我个人的体会是PCB设计没有捷径就是多画、多看、多改。你看一百篇教程不如自己动手画一块板子。画完第一块你会发现第二块容易很多画完第十块你就能形成自己的设计套路了。如果你在复现的过程中遇到问题可以先检查这几个地方原理图编译有没有错误、封装有没有填对、规则有没有设好、DRC有没有通过、Gerber有没有漏层。这五个地方检查完90%的问题都能解决。剩下的10%就是经验积累了。