做嵌入式开发的人,很多是从写代码起步的。点灯、串口、传感器,玩得很顺,但到了真正要把电路画出来、把板子做出来的时候,才发现“软件”和“硬件”中间隔着一整条流水线。我这里的嵌入式硬件开发流程,就是从你确定需求的当天,到PCB打样回来、板子能跑起来之间发生的所有事:原理图怎么画、封装怎么建、PCB怎么布局、制造文件怎么导、板厂怎么沟通、样板怎么调试。这篇文章适合两类人:一类是准备从软件切硬件的嵌入式工程师,另一类是从零开始做第一个项目的学生或创客。我会按照自己实际做项目的顺序写,里面会穿插具体芯片和电路案例,也有踩坑记录。
1. 硬件开发流程全景:从需求到板子,中间到底要过几道关
1.1 一条完整的链路,远比“画原理图”复杂
当你说“嵌入式硬件开发”的时候,很多人脑子里蹦出来的画面是打开电路设计软件画原理图。其实画原理图只是整个流程里最容易被看见的一个环节。一个完整项目从需求到板子能稳定跑起来,大致要经历这些步骤:
- 需求确认和技术预研:想清楚接口、尺寸、功耗、成本、环境温度、通讯方式。
- 器件选型和物料确认:主控选什么,电源芯片选什么,传感器用哪个型号,封装是否容易买。
- 原理图设计:把选好的器件按电气关系连起来,做完电气规则检查。
- 封装库设计:给每个器件建立或确认对应的PCB封装,这是很多新板子废掉的根源。
- PCB布局布线:先规划板框和分区,再依次处理地、电源、信号线,跑设计规则检查。
- 制造文件输出:生成Gerber、钻孔文件、BOM、坐标文件、装配图。
- 板厂打样:跟工厂确认工艺参数、叠层、表面处理、交期。
- 焊接与调试:样板回来先查短路和电源,再下载固件,逐步验证功能。
- 改版与验证:根据调试结果修正原理图或布局,重新出图,再做一轮验证。
- 小批量试产:验证可制造性和装配一致性,然后才进入量产。
这条链路里,第2步和第4步最容易被新手忽略,但它们恰恰是返工成本最高的地方。选型时没注意封装,后期可能发现芯片根本买不到现货,或者供货周期长到项目直接延期。
1.2 硬件设计和固件开发其实是并行推进的
另一个容易被忽略的事实是:硬件开发不是“画完板子扔给软件工程师”就结束的。在主控、调试接口、外设电路确定之后,固件开发通常就已经可以基于最小系统板先启动了。硬件板卡回来之后,只要调试口正常,就能立刻烧入引导程序继续验证,节省大量等待时间。
我实际做项目时,经常在原理图冻结之后就把可用的外设配置表、寄存器地址列表整理给软件同事;板子在工厂生产的两周里,软件已经把驱动框架写完。这样板子一回来就直接进入联调,而不是等硬件开发完才开始写代码。嵌入式硬件开发的节奏,很大程度上取决于这种“软硬件并行”的安排。
2. 原理图设计:把引脚连上只是及格线
2.1 工具选型,先看项目复杂度和生态
原理图设计工具的选择,直接影响后面的效率。目前主流的有Altium Designer、嘉立创EDA、Cadence系列,还有开源的KiCad。
| 工具 | 主要使用场景 | 上手难度 | 生态特点 |
|---|---|---|---|
| Altium Designer | 中小公司、偏消费/工控硬件 | 中等 | 资料最多,中文教程丰富,封装库共享多 |
| 嘉立创EDA | 学生、创客、快速打样 | 低 | 与嘉立创打样深度联动,元件库可直接调入 |
| Cadence OrCAD/Allegro | 高速板、大型PCB | 高 | 做强信号完整性分析和复杂叠层很专业 |
| KiCad | 开源爱好者、预算有限团队 | 中等 | 免费,社区库跨平台,近年更新很快 |
很多人问选哪个最好。我的回答是:如果只是做STM32最小系统加几个传感器,嘉立创EDA完全够用,出Gerber也方便;如果在公司里做产品,AD或Cadence更常见,因为团队协作和规范流程更成熟。工具只是载体,真正值钱的是你设计电路时的判断力,而不是软件操作快捷键。
网上有一个高频搜索是“AD原理图修改元件引脚位置”,这是典型的初学操作问题。其实Altium Designer修改引脚属于符号编辑的基础功能,会花时间卡在这儿,说明对元件的逻辑封装(逻辑symbol)还没有形成概念,这时候把常用快捷键和库编辑流程过一遍,比反复搜索更重要。
2.2 最小系统电路:STM32F103C8T6的完整拆解
以STM32F103C8T6为例,一块能跑起来的最小系统板至少要包含电源电路、晶振时钟电路、复位电路、启动模式配置和调试接口,缺一个都可能出现奇怪的现象。
电源电路:STM32F103C8T6工作电压是2.0~3.6V,最常用的方案是5V输入经过低压差稳压器(如AMS1117-3.3)转成3.3V。数据手册和开发板通常建议在输入输出端各加一个10μF钽电容或者陶瓷电容去耦,靠近芯片电源引脚附近再加100nF高频去耦电容。不要小看这些小电容,它们负责滤掉开关噪声和电源走线引入的高频干扰,没有它们芯片可能工作不稳定。
晶振电路:主晶振一般用8MHz无源石英晶振,配上两个负载电容。负载电容的取值要根据晶振本身的负载电容参数计算,典型值在18pF到22pF之间。如果选大了,起振慢;选小了,频率可能偏。RTC部分如果要用到低功耗时钟,需要额外接32768Hz晶振,同样需要两个6~12pF电容。
复位电路:STM32的NRST引脚是低电平有效复位,所以常用一个10kΩ电阻上拉到3.3V,再接一个100nF电容到地,形成上电复位延迟。STM32内部已经有复位电路,外部电容只是增强抗干扰性。如果电容选到1μF甚至更大,会导致上电后复位信号释放过慢,程序迟迟不运行,这是一个很容易被忽略的坑。
启动配置:BOOT0和BOOT1引脚通过10kΩ电阻下拉到地,让芯片从主Flash启动。如果BOOT0接高,芯片会进入系统存储器模式,你烧录的程序不会正常从用户Flash运行,表现就是“明明烧录成功了,板子没反应”。
调试接口:用ST-Link调试时,最少只需要SWDIO、SWCLK和GND三条线,再加上NRST更可靠。SWD调试比JTAG占用的引脚少,是目前嵌入式调试的主流方式。原理图上不要把SWDIO和SWCLK复用为普通GPIO,否则调试接口和功能引脚冲突时会非常痛苦。
2.3 外围电路的通用设计逻辑:DHT11、H桥、AD7606
嵌入式项目里常见的外设电路,其实都遵循几个共同原则:电平匹配、去耦滤波、电流能力、电磁兼容。看几个高频例子。
DHT11温湿度传感器是单总线协议,数据线需要接一个上拉电阻。很多人直接在引脚画个上拉就完事,其实上拉阻值要根据总线长度和负载电容来选,典型4.7kΩ到10kΩ。线太长时上拉太小会导致低电平无法被正确识别,上拉太大则上升沿太慢。如果只是开发板上的短距离连接,10kΩ没问题;如果是几米长的线,建议用4.7kΩ甚至加缓冲器。
H桥驱动电路电机正反转,网上能找到很多用三极管或MOS管搭的H桥。但直接用分立器件搭容易忽略死区问题——上下桥臂同时导通会造成直通短路。所以我的建议是:如果不是为了教学,尽量用集成电机驱动芯片(例如DRV8873、IR2104驱动半桥再加逻辑控制),芯片内部已经处理了防直通、限流和过热保护。如果坚持自己搭,至少要在栅极驱动电路上加下拉电阻,并预留死区控制逻辑。
AD7606是一款16位8通道同步采样ADC,数据手册里的模拟输入前端通常需要加RC滤波和过压保护电路。关键是模拟地AGND和数字地DGND要分开处理,最后在某个单点汇合,否则ADC采样结果会带有明显的数字噪声。这块内容也是不少人做数据采集板时容易踩坑的地方。
2.4 原理图画完之后:我常用的检查清单
原理图画完并不代表结束,电气规则检查只是第一步,真正有效的检查需要自己再人工过一遍。
- 电源树梳理:从输入电到每一路输出电压,画出全板电压关系,确认每个电源域的电容容量、极性、耐压是否足够。
- 引脚扫描:对照主控数据手册,把默认复用功能、ADC输入阻抗、最大灌电流逐项核对,尤其是引脚是否被意外分配到不支持的复用功能。
- 极性器件复查:电解电容、二极管、LED灯、电池座这些有方向的器件,逐一检查符号方向是否符合实际安装要求。
- 网络标号审查:同名网络标号是否有“A”和“a”这种看不清的差异,是否出现意外融合。
- 位号参数可读性:位号、容值、耐压值标注清楚,方便后续焊接和采购。一批板子到手发现所有电容都长得一样,位号又不清晰,贴片的时候只能一个个测,效率极低。
3. 从原理图到PCB的桥梁:网表、封装与库管理
3.1 封装错误是最昂贵的返工
我一直强调,封装问题比原理图逻辑错误更致命。原理图逻辑错误顶多是功能不对,改一行网络连接还能重新出图;封装错误会导致焊盘对不上器件引脚,PCB实物几乎直接报废。
STM32F103C8T6这种LQFP48封装,引脚间距只有0.5mm,焊盘宽度、长度、热焊盘尺寸都必须严格对照数据手册。如果从网上下载了一个“看起来差不多”的封装,很可能没有热焊盘或者引脚编号方向不对,板子做出来根本贴不上芯片。AMS1117这种稳压芯片,系统里同样叫AMS1117,有SOT-223和TO-252两种封装,引脚定义不同。选型时看到“同型号”三个字就高兴得太早,结果焊盘和实际器件对不上真的非常常见。
3.2 网表同步:必须养成“从原理图改起”的习惯
Altium Designer里叫Update PCB Document,嘉立创EDA里叫“更新PCB”,Cadence里是先产生网表再导入。无论哪个流程,核心都一样:PCB上的连接关系以原理图为准,不允许直接在PCB里加飞线或改网络。
有经验之后你会明白,这个限制其实是在保护你。直接改PCB虽然能快速绕过问题,但后续再做BOM、做DRC时,原理图和新PCB之间的差异会成为隐藏炸弹。正确做法是:不管修改多小,都回到原理图里改网络,再同步到PCB。这样版本可追溯,别人Review你的设计时也能看清楚意图。
3.3 自建封装和官方库:如何取舍
能用官方库就尽量用官方库。ST、TI、NXP这些原厂会提供包含原理图符号和PCB封装的器件库,嘉立创EDA也内置了大量常用元件。官方库的好处是经过验证的符号引脚定义和封装尺寸更可信,省去你拿着数据手册对照画封装的功夫。
自建封装时,一定要找到数据手册的机械尺寸图,按照焊盘类型(贴片、直插、开孔)、间距、长度、宽度、圆角、阻焊层开窗逐一设置。画完之后放在库里,交给其他同事用之前,一定要在实际焊接中验证。我习惯做板时顺带把新封装的器件焊到样板上测试,封装不对会立刻暴露出来。
4. PCB布局布线:决定板子能不能稳定运行的关键阶段
4.1 板框和叠层:先打地基再放器件
有人习惯一上来就摆放元件,最后发现板框尺寸和外壳对不上,只能大改。我的顺序是先确定板框、安装孔、接口位置,再考虑层叠结构。对于多数嵌入式控制板,两层板已经够用。但如果系统里有高速接口(比如SDIO、以太网、DDR甚至并口LCD),四层板更稳妥,常见的是:信号层、完整地层、电源层、信号层。完整地层能提供清晰的信号回流路径,显著降低EMI。
外壳机械结构很关键。板子尺寸必须与外壳配合,连接器位置要跟开孔对齐。如果设备里有射频天线或者金属屏蔽罩,PCB上的禁布区域要提前预留。这些信息应该在需求阶段就明确,而不是画到一半再补。
4.2 布局的核心逻辑:功能分区和信号流
布局时按功能分区:电源电路靠近输入接口,稳压器靠近其供电的芯片;晶振布置在MCU附近,走线尽量短而粗;模拟电路远离开关电源噪声源;调试接口放在板边方便插接;接插件按照线束走线方向排布,避免交叉。
我常跟新人说,布局就是排兵布阵。元件位置定了,布线质量就定了七成。比如ESP32-WROOM-32这种带天线的模块,天线区域严禁铺铜和走线,模块底下的地焊盘要妥善处理,否则WiFi信号衰减非常明显。这属于模块类设计的经典案例。
4.3 布线顺序:先地、再电源、后信号
布线优先级我一直是:地 → 电源 → 关键信号 → 普通信号。
地为什么是第一位?因为所有信号都要以地作为回流参考。两层板上,通常采用大面积铺铜作为地网络,但需要注意模拟地、数字地、功率地的划分和单点连接。完全独立的地当然能隔离噪声,但也可能因为回流路径断裂引发更大干扰。实际做法是分区铺铜,再用0Ω电阻或磁珠在单点汇合。
电源线要加宽。1A电流在1oz铜厚、1mm线宽下大概能承受几百mV压降,具体要看长度。低压大电流线路必须特别注意,否则电压跌落会让MCU突然复位。默认情况下,MCU电源网络至少走0.3mm以上,功率电源走0.5mm到1mm。
高速信号线要控制阻抗和回流路径。USB的D+/D-、SDIO、以太网的差分对都需要按差分阻抗100Ω来处理,下单时就要告诉板厂。DDR等并行信号还要做等长,这是一个完全进阶的领域。普通低速板子不需要过度恐慌,但要知道这些概念。
4.4 DRC检查与高频报错处理
画完布线之后,运行设计规则检查是必须的。常见报错包括:间距冲突、未连接网络、短路、丝印压焊盘、钻孔与焊盘间距过近。
处理原则是逐条看具体信息,判断是真实错误还是规则设置过严。如果规则过严,比如线间距设成了0.3mm而板厂根本做不了,反而反复报错拖慢进度;如果太松,又可能放过短路风险。正常工作参数可以先参考板厂的工艺能力表,再预留余量。
5. 制造文件输出:不是“导出”这么简单
5.1 Gerber文件和钻孔文件
打样时给板厂的电路图形文件是Gerber。光把它导出出来不够,你还得确认包含哪些层:顶层走线、底层走线、顶层阻焊、底层阻焊、顶层丝印、底层丝印、钻孔层、板框层。少了任何一层,板厂都可能按自己的理解补出错误来。
Gerber本身是坐标式的图形描述,很多设计软件还会生成钻孔文件(Excellon格式),里面包含每个孔的坐标、孔径和是否金属化。导出的Gerber用独立CAM查看器(如CAM350、嘉立创EDA官方的查看器)再看一遍,这是负责任的做法。我遇到过部分Gerber层和板框错位的状况,是导出时坐标原点设置不一致导致,如果没提前看,板子做出来根本没法装配。
5.2 BOM表:采购和生产都靠它
BOM是采购和贴片部门最看重的文件。标准BOM至少要包含:位号、数量、型号规格、封装、制造商、替代型号、特殊备注。参数一栏要把容值、耐压、精度、误差写清楚。比如“电容10uF/25V/0805/X7R”和“电容10uF/50V/0805/X7R”是完全不同的物料。
电源芯片、主控这类关键器件,我习惯在BOM里标注两家以上的可替代厂商,避免独家供货风险。备注栏写清楚是否要编带、是否需要温湿度敏感器件标识,方便SMT上料。BOM做完还要和原理图做一次反向比对,防止漏项错项。
5.3 坐标文件和工艺说明
坐标文件也叫Pick and Place文件,给贴片机用的。里面包含了每个元件的中心坐标、旋转角度和所在面。软件里一般能自动导出,但要注意单位选择(英寸还是毫米)、原点是否统一、是否需要包含丝印位号对照信息。坐标原点一旦和Gerber中的不一致,贴片机识别元件位置就会出错。
工艺说明也需要写清楚:板材FR-4,板厚1.6mm,铜厚1oz,表面处理是喷锡还是沉金,阻焊颜色,丝印颜色,是否需要V割拼板,拼板数量等。表面处理这块,喷锡便宜但平整度一般,适合普通插贴混装;沉金平整、抗氧化,适合精细焊盘和按键触片。射频板、有金手指或者要频繁插拔的板子,建议沉金。
6. PCB打样制造流程:不亲自做也要懂
6.1 板厂的制造流程和你的设计有什么关系
PCB制造大概要经过CAM处理和图形转移、内层蚀刻、叠层压合、钻孔、沉铜、电镀、外层图案形成、阻焊、丝印、表面处理、成型加工、电气测试。
听起来离你很远,但有几个点直接影响设计决策。例如,钻孔后要沉铜实现层与层之间的电气互连,如果你的过孔孔径太小、板厚很厚,电镀药水不容易进到孔里面,孔内有缝隙就会断线,所以厚板上盲埋孔设计就要慎重。又如,阻焊层开窗如果比焊盘大很多,回流焊时锡膏容易跑位,形成虚焊。板厂工艺能力一般会公开,下单之前花十分钟看清楚最小线宽、最小间距、最小孔径,能避免一大堆低级错误。
6.2 和板厂沟通:问对问题比急着下单重要
第一次和一个新板厂合作时,我通常会先把这些信息确认掉:
- 工艺能力上限:最小线宽/线距、最小孔径、最大铜厚、板厚范围。
- 拼板要求:是否需要V割或邮票孔,拼板宽度是否限制。
- 表面处理:喷锡、沉金、OSP或无铅工艺,各自价格和周期。
- 阻抗控制:哪些网络要做指定阻抗,板厂是否需要阻抗条或相应的叠层参数。
- 交期和测试要求:默认是否做飞针测试,是否提供首件确认。
这些信息来源于你的设计和应用需求,而不是板厂“你看着办”。比如DDR4这类数据总线,需要严格等长和指定阻抗,导线信号对眼图都很敏感。如果在Gerber里只写了“阻抗100Ω”,却没有和板厂确认叠层介质和铜厚参数,实际做出来的阻抗可能完全漂移。
6.3 审核制造文件:最后一关的自检
板厂编程时用到的文件,本质上就是那堆Gerber和钻孔表。在下单之前,一定要用CAM查看器把每一层打开,逐层检查:
- 检查过孔位置是否和焊盘中心对齐。
- 检查丝印是否覆盖焊盘。丝印盖焊盘影响焊接,板厂一般帮你移开,但你要知道。
- 检查板框线是否闭合。
- 检查钻孔文件孔数和孔径是否合理。
- 检查安装孔有没有漏金属化。
这时候发现问题,改一下只要几小时;板子已经进入生产线才发现,那就只能重新打样,时间和钱都损失了。
7. 样板焊接与调试:板子回来之后才是真正的考验
7.1 上电前的必做检查
拿到样板先别急着插电。我见过太多次“一通电芯片冒烟”的惨剧,全部是没做上电前检查。顺序如下:
- 目视检查:看板面有没有明显桥连、锡珠、元件装反、漏贴。尤其注意电源芯片的极性电容。
- 万用表测短路:用蜂鸣档测3.3V和GND之间有没有短路。理想情况是几百欧姆到几千欧姆,如果直接响证明短路,要排查后再上电。
- 电压检查:用可调电源串电流限制(比如先限100mA)慢慢上电,逐点测量关键电源轨电压是否正常。
- 电源时序:如果系统里有多个电源轨,比如3.3V和1.8V同时存在,要确认它们的上电顺序是否符合芯片要求。顺序错了即使电压正常,芯片也可能进入闩锁状态。
之后再用调试器连接SWD接口,如果能读取到芯片ID,说明最小系统十有八九已经工作正常。
7.2 调试过程的高频故障与根因
以下是我反复遇到的故障和根因,写出来供参考。
晶振不起振:检查负载电容是否匹配、晶振是否离MCU太远、布线是否有大跨桥。另外芯片配置字里的时钟倍频参数不对,也可能让程序死在时钟初始化。
复位异常:NRST引脚和GND之间的电容太大,导致复位释放太慢。程序可能一直卡在启动阶段,看起来就像“没供电”一样。
烧录成功但程序不跑:优先查BOOT0和BOOT1引脚的电平。BOOT0被拉到高电平,芯片从系统存储器启动,用户程序自然不运行。
供电纹波过大:目测电源电压正常,但示波器看到几百毫伏甚至电平级的纹波。原因是去耦电容不足、地走线回路长,或稳压器输入输出电容布局离引脚太远。这时要把电源管脚的去耦电容尽量靠近芯片,地回路尽量短。
7.3 从验证完成到小批量交付
当样板验证通过,不要直接上量。先小批量试产几十片,重点看三个指标:SMT直通率、功能测试通过率、整机装配一致性。试产阶段也会发现物料替代、封装优化、测试夹具设计等问题,这些事情在功能性样机阶段完全看不见。
试产通过之后再往量产阶段推。把原理图和PCB整理到对应版本,出好维修手册和测试说明,把BOM交给采购做供应商确认。整个嵌入式硬件开发流程走完一轮,你积累下来的不只是板子的设计能力,还有对整个供应链的感知。
最后说一点自己的习惯。我对每次改版都做一份简单的Checklist,记录版本号、修改项、制板日期、工厂批次。板子出问题时能快速定位是哪一版、哪一批、什么工艺条件。硬件开发流程本身并不神秘,原理图、PCB、Gerber、BOM这些环节环环相扣,每一步都为下一步降低风险。不要急着追求一次成功,敢于改版,善于从问题里总结,比画图快更重要。