ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

嵌入式硬件开发全流程:从原理图到PCB打样的实战指南

嵌入式硬件开发全流程:从原理图到PCB打样的实战指南 嵌入式硬件开发说白了就是从纸面上的想法变成一块能跑起来的电路板。很多人觉得这个流程就是从画原理图开始然后画PCB最后发出去打样这确实是最粗略的骨架但真正走一遍之后你会发现里面的每一个环节都有不少值得琢磨的细节。今天这篇就把我从一个项目立项到拿到PCB成品板的全流程捋一遍重点说清楚每个阶段到底要做什么、为什么要这么做、最容易在哪一步踩坑。这篇文章适合刚入手嵌入式硬件、准备自己画板打样的人也适合那些已经画过几块板但总觉得流程不够顺畅、经常在事后返工的工程师。内容以实际操作为主不会堆教科书概念尽量把每个关键动作背后的原因讲明白。1. 整体开发流程与设计思路拆解1.1 嵌入式硬件开发的完整阶段划分一个标准的嵌入式硬件项目大致可以切成几块需求分析、方案选型、原理图设计、PCB布局布线、Gerber输出与制造、焊接与调试。很多人以为设计阶段只有原理图和PCB其实前面两步占比很大而且决定了后续80%的节奏。先看需求分析这一步要是没做好后面全是坑。比如你要做一个环境监测节点那么核心技术指标就有供电方式、工作温度范围、通信协议、传感器精度、待机功耗。这些参数决定了你选哪种单片机、哪种电源芯片、哪种对外接口。我见过很多新手一上来就选STM32F103C8T6问为什么选这个答曰“大家都用它”。如果项目只需要一个温湿度采集电池供电那STM32F103C8T6的功耗和体积很可能就不合适反而是更小的低功耗MCU更匹配。方案选型是在需求明确了之后确定主控、传感器、电源、接口芯片。这个环节的核心原则是“够用就好留有适度裕量”。比如主频选高还是选低不是你说了算是任务的实时性说了算。采集一个温度1秒一次8MHz主频的单片机绰绰有余做音频处理或者小型GUI主频就得拉高存储也要扩容。选完主控再去挑电源芯片这时候需要算总功耗所有外设最大电流加起来再乘上1.5到2倍的裕量这是电源设计的第一道保险。原理图设计其实是在做“逻辑连接”把芯片与芯片之间的引脚关系用符号表达出来。PCB Layout则是把这种逻辑关系转换成物理上的铜箔走线。制造就是把这些铜箔图形通过一系列工艺变成真实的板子。焊接调试是把元器件焊到板上跑通固件验证功能和性能指标。1.2 为什么先搭框架再填细节很多新手画原理图一上来就急着画MCU最小系统然后VCC和GND到处放置最后发现电源和地网络名对不上引脚编号错乱改起来特别痛苦。正确的做法是先搭框架把整块板分成几个功能区电源区、主控区、传感器区、通信区、接口区然后逐个功能区填充原理图。这样做的好处有三点。第一审查非常清晰。你从电源部分一路看过去可以按信号流向检查逻辑是否合理。第二方便协同。如果项目几个人合作一个人画电源一个人画主控一个人画外设各管各的功能区最后整合。第三方便模块复用。比如电源模块这次设计好了下次换一个MCU电源部分可以直接复制粘贴不用重新画。框架搭好之后再逐个功能区细化。先画电源再画主控最小系统接着画外设最后画连接器和结构件。这个顺序有讲究电源是所有电路工作的基础主控负责指挥外设负责执行连接器是和外界的桥梁。按照这个顺序画下来网络命名、器件位号、电源树都会比较规整。2. 原理图设计的核心细节与实操要点2.1 从参考设计开始而不是闭门造车原理图设计的起点强烈建议先找芯片的官方参考设计。芯片厂商花了大价钱养硬件团队画出来的参考设计经过了大量验证直接借鉴是最高效的路子。以STM32为例ST官方有完整的硬件开发手册和参考原理图包含电源去耦、晶振电路、复位电路、调试接口的推荐接法照着画基本不会有错。我见过不少人在画DHT11、蜂鸣器这类简单模块的原理图时也容易翻车问题大多出在上下拉电阻、限流电阻的取值上。DHT11的数据线需要接一个4.7kΩ到10kΩ的上拉电阻如果没接通信时好时坏排查起来会让你怀疑整个工程。蜂鸣器如果是三极管驱动的无源蜂鸣器基极限流电阻通常选1kΩ到4.7kΩ阻值太大驱动电流不够蜂鸣器声音很弱阻值太小三极管饱和深度不够发热明显。原理图设计过程中引脚编号是一个高频翻车点。用Cadence OrCAD或者立创EDA这类工具的时候原理图符号上的引脚编号必须和实物封装引脚一一对应不然画完PCB焊上芯片就短路。以STM32F103C8T6为例LQFP48封装引脚顺序有固定规律画符号的时候很容易把引脚编号和功能标错所以画完每个器件的原理图符号之后最好逐一对照数据手册的引脚表格勾一遍。实操经验是花这个勾引脚的时间比后面打一次废板省事多了。2.2 电源设计是原理图的重中之重电源设计是整个原理图里最容易出问题但又最容易被人忽视的部分。嵌入式系统里电源树分几路、各路的负载能力、纹波要求、上电时序这些都是有讲究的。对一个典型的MCU系统外部输入可能是5V的USB也可能是3.7V锂电池还有可能是9V到24V的工业电源。不同的输入电压前端变换方案完全不同。5V USB输入如果MCU工作电压是3.3V一颗AMS1117-3.3就能搞定输入输出压差1.7V负载电流几十毫安发热很小。但如果是锂电池供电电压范围3.0V到4.2V用线性稳压器LDO就能把电压稳住。如果是从24V工业电源取电直接用LDO降到3.3V就会损耗极大比如负载100mA时LDO上消耗的功率是(24-3.3)×0.12.07W发热非常严重这时候就必须使用DC-DC降压芯片比如MP1584、TPS5430这类。原理图上电源去耦电容的放置也是一个大学问。每个芯片的VCC引脚旁边需要一个0.1μF的陶瓷电容这叫高频去耦电容负责给芯片提供瞬态电流。电容的摆放位置在PCB阶段很关键但在原理图阶段你先要把网络关系画对。大容量电解电容或钽电容放在整个电源入口处负责储能和低频滤波。这里有一个计算逻辑芯片瞬时电流需求如果很大而电源走线有阻抗压降就会明显去耦电容就是为了就近提供电流。我画电源部分有个习惯会先画一张手写的电源树表格每一路电压从哪来、芯片型号、最大负载、后端接哪些模块、纹波要求是多少。然后照着表格画原理图画完再回头核对表格防止漏画、错画。这个方法看起来很笨但能节省大量后期排查时间。2.3 原理图审查的习惯一定要养成原理图画完不等于这件事就结束了还要做审查。所谓审查就是把原理图当别人的作品一样挑毛病。重点看几个方向网络连接是不是符合逻辑电源和地有没有接错器件的耐压和额定功率是否满足实际工况引脚有没有悬空导致浮空输入逻辑电平是否匹配。以3.3V MCU和5V外设通信为例如果I2C接口一边是3.3V一边是5V又没有电平转换电路轻则通信不稳定重则把MCU引脚烧掉。I2C这种开漏协议还可以靠上拉到3.3V解决但UART这种推挽输出的就必须做电平转换方法有用MOS管搭的简易双向电平转换电路或者用专门的电平转换芯片如TXS0108E、PCA9306。审查还有一个角度是检查器件的降额。阻容元件选型额定电压至少是实际工作电压的1.5倍以上例如3.3V系统里的去耦电容选16V耐压就很安全。电阻的额定功率常规0805封装是1/8W0603是1/16W这个值要大于实际功耗的两倍。比如LED限流电阻如果压降2V、电流20mA功率就是0.04W那0603封装的1/16W0.0625W刚好够用但他已经很接近边界我习惯用0805更稳。3. PCB布局布线与设计规则检查3.1 叠层设计的思考逻辑PCB层数怎么定是很多人纠结的问题。双层板和四层板之间怎么选核心看信号完整性和电源完整性。一般的消费类小产品双层板够用走线注意回流路径和关键信号隔离就行。但如果主控跑在几十兆赫兹甚至上百兆赫兹信号边沿跳变很快双层板的回流路径难控制分布式电容也小电源噪声会明显这时候四层板的价值就体现出来了。四层板典型叠层是Top-GND-Power-Bottom中间两层分别做完整的地平面和电源平面。地平面给所有信号提供一个连续的低阻抗回流路径电源平面给整个板子提供稳定的参考电压和去耦效果。这个方案对绝大多数MCU系统足够了。如果是高速数字电路跑DDR3/DDR4、以太网、PCIe这类叠层方案就要更复杂可能需要六层以上。PCB的层叠顺序和阻抗设计如果板子上有USB差分对或者以太网差分对对应的差分线宽和线距要在叠层阶段就确定下来。常见USB 2.0的90Ω差分阻抗四层板1.6mm厚度表层走线大概需要线宽0.2mm、间距0.15mm具体数值取决于板材和相邻介质层厚度。这个可以用嘉立创下单助手的阻抗计算工具直接算不用自己推公式。3.2 布局布线的顺序和方法论PCB布局是整个流程里最耗精力的步骤也是决定板子好不好用的关键。我的布局顺序是先把核心主控放中间然后围绕主控摆放电源、晶体、去耦电容再摆放外设接口和连接器最后处理结构和散热相关的器件。主控周围晶振电路要离MCU引脚越近越好避免走线太长被其他信号干扰。晶振下面是完整的地平面不要走任何信号线。去耦电容放在对应IC电源引脚正下方或非常靠近的位置这样回路面积最小。电源DC-DC部分电感和续流二极管这些开关节点器件要远离模拟敏感电路同时功率回路面积要小。布线的第一原则是“先关键信号再一般信号”。对MCU系统而言晶振输出、USB差分线、复位信号、模拟采样线属于关键信号优先走线。关键信号走线要做到最短、最短、最短重要的事情说三遍。模拟信号要走短、直、粗避免与数字信号平行长距离走线不然数字开关噪声会耦合进去。电源线相比于信号线要宽。比如板子上有200mA的电流走线在1oz铜厚下建议走线宽度不低于0.5mm这样温升才低。地线更是能铺铜就铺铜大面积铺地是降低回路阻抗最简单粗暴有效的手段。3.3 DRC与生产制造检查布线完成后必须跑一遍DRC设计规则检查。DRC检查的是走线宽度、间距、过孔大小、丝印是否在安全距离内这些东西。每一个规则在DRC里都能配置我一般会根据板厂的能力来设定最小线宽6mil最小间距6mil最小孔径0.3mm。如果你用嘉立创打样直接在嘉立创EDA里用他们预置的制造规则即可。DRC报错不一定全是错误有的只是风险提示你要逐条看并判断。比如差分对间距报错可能是因为你中间绕了一段等长线间距变化了这个不一定会导致制造失败但对差分信号质量有影响。再比如过孔在焊盘上传统工艺可能会漏锡但如果是盘中孔工艺这个是允许的需要和板厂确认。除了DRC还要检查丝印。丝印不能压在焊盘上、不能压在走线上不然立创贴片的时候会识别不清楚手焊也不方便。丝印的字体大小我一般至少0.8mm以上太小打样出来看不清。还需要在板子的丝印上标注板名、版本号、日期、关键测试点名称这属于一个工程师的基本素养。4. PCB制造流程与投产的实操细节4.1 Gerber文件和BOM清单原理图和PCB设计做完到了交付制造的环节很多人第一次在这里卡住。PCB制造厂需要的是Gerber文件这是一种标准化的PCB图形描述文件包含每一层的铜箔图形、阻焊开窗、丝印、钻孔数据。大部分EDA工具都可以一键导出Gerber立创EDA的导出流程很友好Altium Designer也不复杂关键是要选择正确的格式和设置。我在投板之前会做一件事用Gerber查看器把导出的文件重新打开看一遍确认每一层的内容都对。这个动作虽然麻烦但能避免“导出时少勾了一个图层结果板子做出来没有丝印”这种低级事故。常见的Gerber层有Top Layer顶层铜箔、Bottom Layer底层铜箔、Top Solder顶层阻焊开窗、Bottom Solder、Top Silk顶层丝印、Bottom Silk、Drill File钻孔文件。每一层应该在查看器中看到对应的图形。BOM清单是给采购或者贴片厂用的列出所有物料的位号、型号、封装、数量、品牌。BOM整理得好不好直接决定贴片效率。位号要按顺序排列同一个型号的器件放在一起这样贴片机编程的时候更高效。我在整理BOM时会额外加一列“替代型号”这样采购遇到料不足的时候有备选方案不会被卡死在等料上。4.2 板厂选择和工艺能力确认选择PCB制造商不是越贵越好关键是匹配你的需求。如果你是打样验证普通的FR-4板材、1.6mm板厚、1oz铜厚、绿色阻焊、白色丝印这个标准配置就够了费用很低交期也快。如果是批量生产或者对电气性能有更高要求才需要考虑更高端的板材和工艺。下单打样的时候有一堆选项会让你懵板厚、铜厚、表面处理、阻焊颜色、丝印颜色、阻抗要求、测试要求。第一次打样的人经常会忽略表面处理的选择。常规的HASL喷锡工艺便宜但是焊盘平整度一般如果板子上有QFN这种小间距器件喷锡的焊盘可能不平整导致虚焊这时选沉金ENIG工艺更稳。沉金表面平整、抗氧化能力强、可焊性好当然价格也贵一些。还有一个容易被忽略的是拼板。如果你的板子很小比如20mm×30mm单板去打样不仅费钱贴片时也不好夹持。这时候可以考虑拼板4拼一或者6拼一中间开V槽或者邮票孔连接。拼板设计要注意留工艺边方便SMT产线轨道的夹持。4.3 从Gerber到PCB实物制造环节发生了什么拿到板厂产出的PCB很多人就觉得万事大吉了其实了解PCB在工厂里经历了哪些步骤对你理解设计规则背后的逻辑很有帮助。一块PCB的基本制造流程大概是开料、内层线路制作多层板、压合、钻孔、沉铜、外层线路、电镀、蚀刻、阻焊印刷、表面处理、丝印、成型、电测。开料是把大张的覆铜板裁切成生产需要的尺寸。如果是四层板需要把内层芯板和半固化片压合起来钻孔是在板上钻出过孔和插件孔沉铜和电镀让孔壁金属化导通层间线路。外层线路通过曝光显影蚀刻出需要的铜箔图形阻焊是在板上印刷一层保护油墨只露出需要焊接的焊盘。表面处理是给焊盘上一层保护层防止氧化并保证可焊性。明白这些流程之后你就能理解为什么设计规则里要求最小孔径不小于多少、最小线宽不小于多少——因为这些值跟工厂的钻机精度、曝光蚀刻能力直接相关。你也能理解为什么DRC里的“焊盘到走线间距”很重要阻焊开窗时如果间距太近阻焊桥容易脱落焊接时容易连锡。5. 常见问题与排查心得实录5.1 焊接调试中遇到的坑和排查思路PCB到手焊接调试验证这其实是整个硬件开发流程里最考验人的一环。第一批板子到手不要急着全部焊完先焊一片核心板验证最小系统能不能跑起来。这个方法能帮助把问题隔离在最小范围内避免一次性焊接十几块发现全是同一个问题返工到崩溃。调试的第一步是目检对着光看焊点是否饱满、有没有桥连、有没有虚焊。尤其是QFP和QFN这种封装引脚间距极小稍微一不留神就粘连。我遇到过一批LQFP48的MCU焊完之后程序下载不进去用放大镜一看发现两个相邻引脚之间有一小条锡丝桥连割开之后一切正常。上电之前一定要先用万用表测量电源和地之间是否短路。这个习惯必须养成。很多新手焊完板子直接插电看到冒烟才知道有问题。把万用表打到蜂鸣档红笔接3.3V电源节点黑笔接地如果发出蜂鸣声说明短路排查掉再上电。上电之后不要急着下载程序先量各路电源的电压值是否正常再用手背去碰主要芯片表面看是否发烫。下载程序失败是另一个高频问题。STM32下载失败的概率非常大原因往往不是程序问题而是硬件连接问题。常见的是BOOT0引脚电平不对、复位电容充放电慢导致上电时没有进入下载模式、DIO和CLK引脚接反。排查顺序是先确认USB转串口的驱动是否装好、再量TXD/RXD电平是否正常、然后用示波器打一下下载时的时钟和ACK信号。如果都没有问题大概率是MCU没有跑起来检查晶振有没有起振。5.2 原理图阶段的历史经验教训我踩过的坑里原理图阶段的问题占了至少一半。第一个印象深刻的教训是电源芯片的反馈电阻取值错了本想输出3.3V结果实际输出5.8V后端MCU直接烧掉。后来养成了习惯任何可调输出的电源芯片反馈电阻一定要用公式手算一遍再对照数据手册的推荐值确认不直接照抄网上的原理图。第二个是USB转串口电路的TX和RX交叉问题。CH340G这类芯片连接到MCU的UART时必须TX接RX、RX接TX。我见过不少人第一次画板子把这两个接成同向导致通信完全不通。这个错误说小不小因为不能飞线解决的话就只能重新打板。第三个是ADC采样的参考电压问题。如果ADC的参考电压Vref接的是3.3V电源而3.3V电源纹波比较大那么ADC采样值就会跟着电源波动。这时候在原理图上就要考虑为Vref单独加LC滤波或者用专门的基准源芯片。有些MCU的Vref引脚如果和VDD共用那你至少要保证3.3V电源在那一路有良好的滤波。5.3 拿去打样前必做的三项自检把工程文件发给板厂之前强烈建议按这个清单自检一遍能省下大量时间和冤枉钱。第一项检查所有元器件是否有完整的封装。原理图能画出来不代表PCB能生产每个器件都应该有封装而且封装的引脚号和原理图的引脚号一一对应。这个检查在EDA工具里可以一键跑也可以手动抽查关键器件。第二项检查PCB上是否有未连接的引脚。有的EDA工具能在DRC里报出这类问题如果漏掉的引脚正好是某个芯片的使能脚那这块板子做出来就会很奇怪芯片可能一直处于复位状态、电源芯片不输出、传感器不工作。第三项下单前把PCB的3D视图打开看一眼确认板子外形和元器件高度是否和结构外壳冲突。很多结构问题在3D视图下一目了然比如有一个电容凸出了板子边缘装配的时候根本装不进去。买了外壳再改板子是双倍的痛苦。6. 整个流程里最容易忽视的细节6.1 文档与版本管理嵌入式硬件开发不只是画原理图、画板子、打样这么简单背后还有文档和版本管理。原理图每改一版要有版本号最好有改动记录说明。我见过月抛型工程文件夹到月底自己都分不清哪个是最终版这种情况一旦板子做错了你连回溯都觉得吃力。版本管理的规矩其实很简单每天工作结束之前把当前工程文件另存为一个带日期的新版本整理好改动说明放在一个文本文件里不用任何复杂的工具。等整个项目到关键节点时把该版本归档。现在有不少人用Git来管理PCB工程文件配合立创EDA这类原生化支持Git工具的平台确实能省很多事。BOM清单也需要版本管理尤其是量产周期长的项目供应商可能会换料替代料型号也会增加。BOM如果不及时更新采购和贴片就会一直按旧清单买料最后发现料对不上板子全公司帮你“回忆”当初选型到底用的哪个型号。6.2 测试点和调试预留PCB设计时预留测试点这一项很多新手完全没有概念。测试点就是PCB上单独引出的裸露焊盘方便调试时挂示波器探头或者万用表表笔。重点信号建议留测试点电源各路电压、GND、I2C的SCL和SDA、UART的TX和RX、复位信号。测试点不一定需要额外占用面积可以放在连接器引脚旁边也可以用一个小焊盘引出。如果是小批量生产建议在板子边缘留一个排针接口把SWD调试口、串口、电源测试点全部引出来。这样烧录、调试、查看日志都很方便不用每次拿镊子去戳引脚。我在设计初期会定一个“调试占位区”放几个0Ω电阻和跳线用来切断或连接某些关键信号路径。比如外部晶振和内部RC振荡器的切换、ADC参考电压的滤波π型网络预留、电源输出端的负载断开点。这些占位在样机阶段可以让你灵活调整硬件代价只是几个元件和几毫米的PCB面积非常划算。6.3 量产与可制造性设计DFM如果你只是打样验证DFMDesign for Manufacturing面向制造的设计可能感觉不明显但如果要做到小批量甚至量产DFM就非常关键。DFM是在设计阶段就考虑制造、贴片的便利性减少后期工艺麻烦。一些DFM的基本原则包括元件的方向尽量一致贴片机换向少贴装效率高同一种封装的值不要太多太杂不要在板子边缘太近的地方放元件否则分板时会切伤大体积重元件尽量不放在板子中心悬空区域放板子边缘更稳固波峰焊的插件元件方向和间距要符合规则。还有一点是做拼板或者工装设计时要考虑贴片厂回流焊、波峰焊的工艺要求。比如预留工艺边宽度、放置MARK点光学校准点。MARK点是很小的圆形裸铜焊盘贴片机靠它来定位板子的坐标。没有MARK点的板子贴片机每次上板都要人工校准效率很低如果精度不够还容易偏位。7. 一些工具与软件的使用体会7.1 用什么EDA工具更顺手EDA工具的选择没有标准答案核心是契合你的需求和学习成本。如果是刚入门立创EDAEasyEDA是一个非常好的选择浏览器就能打开上手快元件库很全看中的元件直接拖进来用和嘉立创下单平台无缝衔接画完一键下单生产特别适合学生和个人开发者。Altium DesignerAD是行业内用得最广的工具之一资源丰富教程多公司里很多人用的就是它。AD的优势是强大的库管理和规则设置能力做复杂板子的时候得心应手。但AD对新手来说界面有点乱学习曲线陡峭一点而且价格昂贵个人使用基本扛不住正版费用。Cadence家族OrCAD Allegro是高端高速板设计的主流选择服务器主板、显卡、手机主板这类复杂高速设计Allegro是事实标准。它的交互式布线、约束管理器非常强大但学习成本也最高。如果你不是专职做高速数字硬件其实用不到这个层级。Cadence Virtuoso是模拟和混合信号IC设计领域的神器和咱们今天说的板级硬件设计是两个赛道。如果看到有人提“Cadence Virtuoso IC618新建原理图教程”那是芯片内部电路设计的内容跟嵌入式板级设计的关系不大不要混淆。7.2 常用工具链的配合技巧板级硬件开发里除了EDA工具本身还有很多周边工具值得使用。做原理图之前先用免费在线工具查芯片数据手册和参考设计比如立创商城的数据手册页面或者各大原厂官网。找原理图资料的话可以到立创EDA开源广场、各种电子论坛、GitHub仓库搜别人开源的工程参考成熟设计能少走很多弯路。仿真工具也值得用像LTspice做电源电路的环路仿真TI的WEBENCH做电源设计选型信号完整性如果要求高再考虑SI仿真工具。不过我个人的看法是对大多数MCU级别的板子仿真不是强制要求花时间把布局布线和电源设计做规范比花时间做复杂仿真意义更大。关于原理图怎么检查DRC、怎么修改元件引脚位置这类问题不同的EDA工具操作方式各有不同但核心思想一致画完原理图跑一遍电气规则检查检查报告里每一类错误都理解它是什么意思再决定是否修改。不要无脑清除错误更不要带着几百个错误强行生成PCB。7.3 开源硬件社区的资源利用开源硬件社区是一个巨大的宝库很多项目都有完整的设计文件可以学习。GitHub上搜STM32 development board或者ESP32 breakout能搜出一大堆开源硬件项目原理图、PCB源文件都是公开的。我画板子遇到不确定的电路时习惯先去搜一搜有没有类似的成熟开源设计照着参考比自己闷头画稳得多。国内一些电子发烧友社区、创客论坛、立创开源广场也汇聚了大量硬件设计资源从传感器模块原理图到完整开发板设计都有。看别人工程里的原理图布局习惯、器件选型逻辑、PCB走线方式能学到很多教科书上没有的实战技巧。但要注意开源设计不等于100%正确下载别人的工程后还是要自己跑一遍检查确认原理没问题再复制。我个人体会最深的经验是嵌入式硬件开发所需要的知识体系很杂但没有哪一项是学不会的关键是建立起“需求 → 设计 → 实现 → 验证”的闭环思维以及认认真真做好每一个环节的执行。原理图阶段多做几次审查PCB阶段多斟酌一下布局布线投板前做好DFM自检焊接调试阶段保持耐心和系统性的排查思路做到这几点你的硬件开发流程会顺畅很多。
返回列表