没想到放个假回来,后台一堆私信问嵌入式硬件开发到底该怎么入门。很多人手里已经握着单片机开发板,代码也能跑,但一提到“原理图怎么画”、“PCB怎么做”,就完全没概念了。这很正常,软件和硬件虽然都在嵌入式这条船上,但思维方式差别很大。写代码你面对的是逻辑,错了改一行就行;画板子你面对的是物理世界,一个封装选错、一个网络没连上,板子打回来就是废铜烂铁加一点零花钱的教训。
所以这篇我把整套流程串一下:从你脑子里有一个功能需求开始,到用EDA工具把原理图画出来,再到PCB layout布线,最后把Gerber文件交给板厂把板子造出来。整个过程里有大量“没人明说但你必须知道”的潜规则,我尽量都抖出来。
1. 从需求到原理图:硬件设计的前半程
1.1 需求梳理与整体方案选型
很多人一上来就开画,这是硬件设计里最忌讳的事。你连这板子要干什么、用什么主控、供电从哪来都没想清楚,画出来的原理图多半要返工。我自己的习惯是,接到一个项目先写一页纸的需求文档,不需要规范,自己看得懂就行,但要把几个关键问题回答清楚。
第一个问题是主控选什么。这个决定了你后面整个电路的设计思路。比如你是要做一个简单的传感器采集,那STM32F103C8T6这种入门级MCU完全够用,还便宜,淘宝几块钱一片;如果你要做图像识别或者跑个轻量级AI模型,那可能得上带DSP或者NPU的芯片了。选主控要看几个硬指标:引脚数够不够、Flash和RAM够不够跑你的代码、外设接口(UART、I2C、SPI、ADC、PWM)够不够用、工作电压是多少。这些参数直接决定电源电路怎么设计、晶振怎么接、复位电路怎么做。
第二个问题是供电方案。这是新手最容易翻车的地方。主控需要3.3V,传感器可能要5V,电机驱动可能要12V甚至24V,这些电压从哪来?是用电池还是USB还是外部电源适配器?如果是锂电池供电,你要考虑充电管理电路;如果是USB供电,你只需要一个LDO或者DC-DC把5V降到3.3V。不同方案的电路复杂度天差地别,成本也差很多。
第三个问题是接口和通信方式。你这个板子需不需要对外通信?是走串口、SPI、I2C还是CAN?需不需要WiFi或者蓝牙模块?这些决定了你原理图上要预留哪些接口电路。很多人设计时没留够,后面调试的时候飞线飞得跟蜘蛛网一样,所以这个一定要提早想清楚。
1.2 原理图库与元器件选型的门道
方案定下来之后,就可以开始画原理图了。目前主流工具就三个:Altium Designer(AD)、嘉立创EDA、Cadence OrCAD。AD功能全,但正版授权贵得离谱,个人用基本是学习版;嘉立创EDA是国产的,免费、元件库丰富,而且和嘉立创打板无缝衔接,非常适合新手和中小项目;Cadence性能强大但学习曲线陡峭,一般是大型企业或者复杂板卡在用。我个人的建议是,新手起步用嘉立创EDA,熟练之后再学AD完全来得及,画图的底层逻辑是一样的。
画原理图的第一步不是连线,而是建库。虽然EDA软件都自带元件库,但你会发现实际项目里总有那么几个器件库里找不到,比如刚出的传感器、冷门的接口件。这时候就需要自己画原理图符号和封装。
原理图符号相对简单,就是一个逻辑表示,把引脚画出来、标好引脚编号和名称就差不多了。重点说一下封装。封装是元件的物理尺寸模型,包含了焊盘的位置、大小、间距,这是直接对应到PCB上的。封装画错是灾难性的,你原理图连接得再好,封装引脚间距差0.1mm,焊接的时候就对不上,板子直接废了。
我自己封装库维护有个习惯:每选一个新器件,先去下载官方的封装库或者数据手册里的推荐封装图,照着画,画完再对着实物用卡尺量一遍关键尺寸。这个习惯救过我很多次。另外提醒一下,0402电阻和0603电阻的封装差很多,选型的时候一定要确认你买到的料和你画的封装是同一个规格。
1.3 从框图到原理图:连线与DRC检查
库准备好了,就开始画原理图了。但千万别直接想到哪连到哪。标准的做法是先画一个系统框图:主控放中间,电源电路放一边,传感器电路放另一边,通信接口放第三个区域,这样原理图看起来会非常清爽。
连线阶段有几个反直觉的经验。第一,尽量用网络标签(Net Label)而不是把线拉得很长去连接。比如3.3V电源网络,你在每个需要供电的地方放一个“3.3V”的标签,而不需要从电源模块拉一根很长的线过去。这样原理图看起来干净,改起来也方便。第二,同一个网络必须用完全相同的名字,包括大小写都最好一致,因为有些EDA工具是区分大小写的。第三,不要隐藏悬空引脚,尤其是IC的电源引脚和接地引脚,漏接一个,板子打回来就是一颗不工作的芯片。
原理图画完,一定要做电气规则检查(ERC)。这个检查会帮你找出一些基础错误,比如输出引脚接到输出引脚、悬空的输入引脚、未连接的电源引脚等。很多新手画完原理图就直接导网表去做PCB,结果板子画到一半发现问题又改回原理图,来回折腾浪费大量时间。先花五分钟把ERC跑一遍,是成本最低的纠错手段。
2. PCB Layout:从“能通电”到“能稳定工作”
2.1 叠层设计与规则设置
原理图完成并且确认无误之后,就会生成网表,进入PCB设计阶段。很多人觉得PCB就是从原理图一键导入然后拉线,这就把问题想简单了。布局布线的好坏,直接决定了你的产品是稳定运行还是偶发死机。
首先说叠层。双层板是最常用的,顶部走信号,底部走地平面,成本低,适合大多数中低速设计。如果你的电路中有较多的BGA封装器件、高速信号或者对电磁兼容有严格要求,那就得上四层板了:顶层信号、内层地、内层电源、底层信号。四层板的好处是有一个完整的地平面,信号回流路径短,电源和地之间的回路面积小,电磁辐射也会小很多。
在开始布线之前,你需要在EDA里设置好设计规则:线宽、线距、过孔大小、焊盘到导线的距离等。这些规则是给布线工具和DRC检查用的。具体数值怎么定?我一般参考板厂的工艺能力和自己电路的电流需求来定。比如常规信号的线宽设0.2mm,电源线根据电流大小加宽,1A电流建议至少0.5mm甚至1mm的线宽;线距按6mil(约0.15mm)起步;过孔外径0.6mm内径0.3mm,这个规格嘉立创打样完全支持,不额外加钱。
关于线宽有个经验公式可以记一下:在1盎司铜厚(35微米)的条件下,1mm线宽大约能承受1A的电流。但这个值留有余量,实际设计时建议至少留20%-30%的余量,也就是跑1A电流的线,用1.2mm以上比较稳妥。
2.2 布局先行的实操思路
布线之前先布局。布局是整个PCB设计中最考功夫的环节,一个好的布局能让布线顺利很多,一个差的布局会让你后面疯狂飞线。
我的布局习惯是按照功能模块分区。先把接口件(排针、USB座、电源座)放在板子边缘,方便插拔;MCU放在板子中心或者稍微偏上一点的位置,因为它要和几乎所有模块相连;晶振要尽可能地靠近MCU的OSC引脚,且周围不要走其他信号线,这是为了保证时钟信号的稳定;电源电路集中放在电源输入的附近;每个芯片的退耦电容(0.1uF那种)必须紧挨着该芯片的电源引脚,距离最好不要超过3mm。
很多人忽略的一个点是“信号流向”。布置器件时要顺着信号流的走向摆:输入接口 → 前级电路 → MCU → 输出驱动 → 输出接口,这条链路上的元件依次排列,这样布线自然会顺畅很多。我见过不少新手把元件摆得乱七八糟,然后线绕来绕去,最后绕出一堆过孔和长走线,既难看又影响性能。
布局完成之后可以先隐藏飞线,用眼睛目视检查一遍:电源走向合不合理,模块之间有没有交叉,关键的敏感信号有没有被干扰源包围。这个时候调整布局的成本最低,等布线布到一半再挪元件,那才是痛苦。
2.3 布线、电源与地平面的处理
布局好了就开始布线了。布线有几个优先级,我一般是这样定的:电源和地 → 关键敏感信号 → 普通信号 → 剩下随便走。
电源和地要优先走,因为它们要供电给整块板子,线要粗、路径要短。地网络优先用平面铺铜的方式处理,而不是走一根细线。双层板的话,底层铺一块完整的地铜皮,顶层有空余的地方也尽量铺地,然后用过孔把上下两层的地连起来,这样会形成一个近似的地平面,对信号回流和电磁兼容都有好处。
关于过孔的使用,有一个建议:在MCU底下的地焊盘上多打几个过孔连接到地层,这样能有效降低回路阻抗,对于EMI和散热都有帮助。我自己画STM32的板子时,一般会在GND焊盘旁边放4到6个0.3mm/0.6mm的过孔,实测对ADC采样稳定性有肉眼可见的提升。
对于晶振、模拟信号、差分信号这些敏感线,尽量走短、走直、少打过孔。如果你画的板子上有模拟地和数字地,布局的时候就要提前做好区域隔离,然后在某个单点位置(通常在ADC的参考地引脚附近)把两个地平面桥接起来。这个“单点接地”的概念很重要,你去搜很多ADC芯片的数据手册,上面都会强调这一点。
另外一个容易被忽略的地方是“回头线”。两条平行走线如果离得很近,会产生串扰,所以信号线之间要留出足够的间距。如果你的板子密度不高,线距可以放宽到0.3mm,这对信号完整性更友好。
3. 制造文件输出与PCB打样
3.1 Gerber文件与钻孔文件
PCB画完之后,离“造出板子”还差最后一步:生成制造文件。行业标准的制造文件是Gerber文件,它描述了每一层的图形——铜层、阻焊层、丝印层、助焊层等。再配合钻孔文件,板厂就能根据这些文件把PCB造出来。
不同的EDA工具导出Gerber的步骤不一样,但核心要点是一致的。第一,确保你需要导出的层都勾选了,顶层铜箔、底层铜箔、顶层阻焊、底层阻焊、顶层丝印、底层丝印、板框层,一个都不能少。第二,注意阻焊层的“负片”逻辑,阻焊层是开窗的,导出的数据里你需要确认焊盘位置是有开窗的。第三,钻孔文件格式一般用Excellon格式,单位要统一是毫米还是英寸,别搞混了。
导出完之后,强烈建议用Gerber查看器把文件加载来看一遍。很多EDA工具自己就带Gerber预览,或者你可以用免费的GerbV打开。检查什么呢?重点看每一层的图形和你预期的是不是一致:丝印有没有乱掉、阻焊开窗位置对不对、电源平面有没有反了。这个检查只要几分钟,但能避免板厂电话打过来跟你说“文件打不开”或者“线上有几根断线”的尴尬。
3.2 工艺能力与制造参数确认
发去打样之前,还需要确认板厂的工艺能力是否覆盖你设计中的参数。不同板厂工艺能力有差异,但主流打样厂家里,嘉立创这类快速打样的工艺窗口大概是:
| 工艺项目 | 常规能力 | 注意点 |
|---|---|---|
| 最小线宽/线距 | 6mil(约0.15mm) | 低于这个值可能加钱或做不出来 |
| 最小钻孔孔径 | 0.3mm | 机械钻的极限,0.2mm需要激光钻 |
| 最小阻焊桥宽 | 4mil(约0.1mm) | 太密的PIN脚之间容易连油 |
| 板厚范围 | 0.4-2.0mm | 常用1.0mm和1.6mm |
| 表面工艺 | HASL、沉金、OSP | 成本从低到高,射频板建议沉金 |
参数确认前多算一步。比如你的BGA焊盘是0.25mm,那走线从焊盘中间出来的线宽最多只能做到小于焊盘直径,间距也要留够,这些细节在layout阶段就应该考虑进去。不要等到画完了发现线的间距低于板厂工艺极限,然后又要回去改布线。
还有一个细节是板子的外形。如果你直接在机械层里画了矩形板框,那没问题;如果你的板子是不规则形状,要在板框层用线条画出来,或者导一个DXF文件作为外形参考。另外,如果你要在板子上开槽、做半孔,需要额外标注说明,板厂默认是不处理的。
3.3 PCB制造的后续:贴片与焊接
板子制造完成寄到手上之后,硬件开发其实才走完一半,你还要把元件焊上去才能测试。焊接的方式有两种:手工焊和贴片机(SMT)。
如果你是手工焊,要注意几个细节。第一,先焊电源相关的元器件,然后上电测试主要电压点是否正常,确认没有短路再继续焊其他器件。第二,QFP或者LQFP封装的主控芯片,焊接时先在引脚上整齐地铺上一层锡,然后用拖焊的方式把锡拖匀,最后用助焊剂加吸锡带清理桥连。第三,0402这种小封装电容电阻,镊子一定要稳,当心手一抖就找不到元件了。
如果是走SMT,那就需要准备BOM表和坐标文件。BOM表是所有元件的清单,包含型号、封装、数量、位号;坐标文件则是每个元件在PCB上的X/Y坐标和旋转角度,这是贴片机贴装时用的数据。EDA工具一般都能自动导出坐标文件,但是BOM表需要你维护好元件的规格参数,尤其是阻值和容值,别把0.1uF的电容和1uF的写混了,我在这一点上吃过亏。
4. 硬件开发中常见的坑与排查技巧
4.1 原理图阶段的典型失误
原理图阶段最常见的失误,一个是封装修错。你原理图里用的器件是SOT-23封装,结果买回来的实际元器件是SOT-23-5,引脚数量和间距都不一样,根本焊不上去。另一个常见问题是电源网络命名不统一。有的人习惯叫3.3V,有的人叫VCC_3V3,混用的话这两个网络虽然电平一样,但在电气上并没有连接,导致部分电路根本没上电。
原理图检查我有个笨办法但很有效:用颜色标注法。在原理图里把不同的电源网络用不同颜色高亮出来,比如5V是红色、3.3V是橙色、GND是黑色,然后逐页检查,看有没有哪个芯片的电源引脚没有连上对应颜色的网络。这个方法我每次画完原理图都会做一遍,基本能杜绝漏连电源的问题。
另外一个容易被新手忽略的是去耦电容的数量。有时候一片芯片有多个VDD/VSS引脚对,每个电源引脚都需要一个0.1uF的去耦电容,不能只放一个了事。你可以在数据手册的“推荐连接图”或者“Layout Guidelines”里看到要求,通常都是“each VDD pin must have a 100nF decoupling capacitor”。
4.2 PCB阶段的典型失误
PCB阶段最常见的坑是“原件干涉”和“飞线遗漏”。原件干涉指的是两个元件在板子上放得太近,实际贴装或者焊接的时候会打架,尤其是插件的元器件,比如两个电解电容离得太近,电容壳子会撞在一起。这个可以通过在EDA里打开3D预览来解决,嘉立创EDA和AD都有3D模型功能,可以在投板前做一个简单的干涉检查。
飞线遗漏是我以前常犯的错误。布线布到后面,总有一两条线因为太远或者过孔位置不好而没布上,变成了“未布线”状态。很多人忽略了这个检查,直接投板,结果板子回来发现某一组信号是断的。解决的办法很简单:投板前跑一次PCB的DRC(设计规则检查),把“Unrouted”类别的错误清空,确保没有未连接的线段。
还有PVB板边过近的问题。有些走线离板边太近,只有0.1mm,板厂铣板的时候有一点偏差,这条线就被切断了。稳妥的做法是导线距离板边至少0.3mm到0.5mm,这个距离直接设为设计规则,让EDA帮你兜底。
4.3 打样回来后的排查方法
新板子到手,第一件事是不要急着焊芯片,先目视检查PCB加工有没有问题:焊盘有没有覆铜缺损、丝印有没有模糊不清、板子有没有翘曲。然后焊接电源部分的元件,上电测量主要电压节点的实际电压值和纹波。
如果发现电压不对,下一步是断电后用万用表的通断档检查VCC到GND之间有没有短路或者低阻。很多情况下,焊接短路是元件的焊桥连锡导致的,用放大镜加助焊剂处理一下就能解决。如果是设计上的短路,比如电源层和地层在过孔位置有残留的铜,那就比较麻烦,需要用飞线割线的方式做临时的方案。
我最头疼的一类问题是“上电但不工作”。这时候排查的思路是:先确认电源正常,再确认复位信号正常(MCU复位引脚应该有一个从低到高的跳变),再确认时钟正常(用示波器看晶振引脚有没有波形),最后确认烧录通道正常。按照这个顺序逐级排查,大部分问题都能定位到具体环节。很多新手一上来就怀疑代码的问题,但相当多的情况是硬件电路某个引脚没拉对电平导致程序根本没跑起来。
写在最后的经验
回看整个流程——需求分析、方案选型、原理图设计、PCB布局布线、导出制造文件、打样焊接调试——每一步之间都有很强的依赖关系。你在前面偷了一个懒,后面就要花更大力气去填坑。合理分配时间的话,原理图占三成,布局布线占四成,文件输出和检查占两成,剩下的一成留给打样回来后的调试和预案。
我个人觉得对新手来说,最有意义的一件事是不要怕“画废板子”。我画了这么多年,一样会有失误,一次跑不通就再画一版。重要的是每一次失败都能总结出一个具体的教训,并且把它折算成设计规则或者检查清单,下次不再犯。硬件开发的成长速度,某种意义上就取决于你每条“踩过的坑”有没有沉淀成“后续的流程”。
希望这篇把嵌入式硬件开发从原理图到PCB制造的流程讲清楚了。如果有具体环节写得不够明白,欢迎交流,我在后续的文章里可以展开讲讲某个单独的部分,比如电源电路的设计细节、MCU最小系统的常见陷阱,或者SMT打样的实际对接流程。