ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

嵌入式硬件开发全流程:从原理图到PCB制造的避坑指南

嵌入式硬件开发全流程:从原理图到PCB制造的避坑指南 做嵌入式硬件开发这几年我最大的感受就是从原理图到PCB制造中间每一个细节都会在实物上被放大十倍。很多刚入行的朋友觉得画个原理图很简单随便找块开发板抄一抄然后转成PCB就能打样了结果板子回来一通电就冒烟或者功能完全不正常然后就开始怀疑人生。其实原理图设计和PCB制造是一个系统工程不只是“连线”那么简单涉及器件选型、信号完整性、电源设计、封装管理、制造工艺等一系列问题。这篇文章我会以自己实际做过的STM32F103C8T6最小系统板、ESP32-WROOM-32模块、W5500以太网板等几个项目为例把从原理图到PCB制造的完整流程拆开讲包括工具选型、原理图设计要点、DRC检查、PCB Layout、制造文件输出以及我在打样过程中踩过的坑。不管你是刚入门的学生还是想自己从头做产品的工程师这篇内容应该都能帮你少走不少弯路。1. 嵌入式硬件开发全流程先看清整条路的全貌1.1 一个产品从需求到贴片的完整路径嵌入式硬件开发并不是从原理图开始的。很多人一上来就打开EDA画图这是最大的误区。一个完整的产品级硬件开发流程应该是这样的需求分析与规格定义明确这个板子要干什么有哪些接口供电方式是什么工作环境温度范围成本目标是多少。芯片选型与方案评估根据需求选主控、电源芯片、通信芯片、传感器等。这一步看似简单实际上最容易埋坑。原理图设计在选中器件的基础上把各个功能模块用电路符号表达出来建立电气连接关系。原理图审查与DRC检查自查加交叉审查确认每个引脚连接正确、电源和地处理正确、没有悬空或短接。PCB封装核对与网表导出确保每一个元件都有对应的封装并且封装引脚定义与原理图符号一致。PCB Layout设计布局、布线、铺铜、调整期间要不断对照原理图做检查。输出制造文件Gerber文件、钻孔文件、BOM表、坐标文件等。打样与贴片提交给PCB工厂和SMT工厂或者自己手工焊接。调试与测试上电、下载程序、逐模块验证、硬件修改迭代。这里我特别想强调第2步和第5步因为这两个环节出问题的概率最高。芯片选型时如果只看“别人用过”就定了后面很可能会发现封装买不到、供货周期长、或者功耗超标。封装核对如果没做到位板子回来了会出现元件放不上去、引脚对不上的问题。1.2 需求与选型几个真实项目的决策思路以很多人爱搜的STM32F103C8T6为例。这颗芯片是Cortex-M3内核72MHz主频64KB Flash20KB RAMLQFP48封装价格便宜、资料多、开发环境成熟非常适合做小型的工控、传感、电机控制类板子。选它的时候我会重点确认三件事产品需要多少GPIO或外设、供电是几路、能不能在目标尺寸内放下LQFP48。再比如ESP32-WROOM-32它自带WiFi和蓝牙做物联网节点很合适但它对射频部分的Layout要求比普通MCU高得多。很多人用ESP32做最小系统板结果WiFi信号很差问题往往出在天线区域的铺铜和净空处理上。这个我在后面PCB部分会详细说。选择原理图里的电阻电容时也一样不只是看阻值容值还要考虑封装尺寸0402、0603、0805、耐压值、温度系数。我见过有人把1206的电阻换成0402结果功率不够直接烧了。这些都是在需求分析阶段就该定下来的事情。2. 原理图设计从最小系统到功能模块2.1 最小系统的核心模块与设计要点在很多热词里“STM32F103C8T6最小系统板原理图”“ESP32-WROOM-32最小系统板的原理与原理图”出现频率很高。这说明大家真正关心的是一个最小系统到底包含哪些部分每个部分怎么设计。一个完整的最小系统原理图通常包含以下模块电源电路给主控提供稳定的电压。STM32F103C8T6工作电压是2.0V到3.6V通常用3.3V供电。如果输入是5V需要一个LDO比如AMS1117-3.3或者降压DCDC。AMS1117适合电流小于1A的场合输入输出压差大时效率低但胜在便宜、外围简单。复位电路一般用RC复位10kΩ上拉电阻加100nF电容到地NRST引脚低电平有效。有些场合需要专用复位IC比如需要掉电快速复位的应用。时钟电路STM32F103C8T6可以用内部RC振荡器HSI精度要求高时接8MHz晶振作为HSE外加两个20pF左右的负载电容。晶振电路的电容值要参考晶振规格书不是随便取的。启动配置BOOT0和BOOT1引脚通过电阻上拉或下拉配置启动模式。正常运行时BOOT0接地。下载调试接口STM32常用SWD接口只需要SWDIO、SWCLK、GND、3.3V四个引脚比JTAG省线。SWD接口建议串接10Ω到33Ω电阻防止调试干扰。去耦电容每个电源引脚旁边放100nF陶瓷电容摆放时尽量靠近引脚。这个细节很多人忽略但实际对稳定性的影响很大。我见过因为去耦电容离引脚远了1到2mm导致ADC采集值抖动的案例。我还发现很多人搜“蜂鸣器电路原理图”“H桥驱动电路原理图”“TB6612电机驱动原理图”这些都是最小系统之外的典型外设模块。以蜂鸣器为例如果是无源蜂鸣器直接用MCU的PWM驱动就行但要注意驱动电流。STM32的GPIO灌电流和拉电流大概在25mA左右蜂鸣器工作电流如果超过这个就得加三极管或者用ULN2003。2.2 外设模块的连接与接口保护外设模块是嵌入式硬件开发中需求差异最大的部分但也有一套通用逻辑。不管你是做传感器采集、电机驱动还是以太网通信都要先想清楚接口的电气关系和保护措施。我拿几个经常被搜到的模块举例DHT11温湿度模块单总线通信数据引脚需要一个4.7kΩ到10kΩ的上拉电阻。这个模块电源范围是3.3V到5V很多人直接用3.3V供电没问题但如果你接很长的线还是建议在数据线上加一个RC滤波或TVS管。TB6612电机驱动这是一款双路电机驱动芯片耐压可达15V峰值电流3.2A。它的VM引脚接电机电源VCC引脚接3.3V或5V逻辑电源注意两者不能接反。其次电机是感性负载续流二极管不能省TB6612内部其实已经集成了但如果外接电机是高压大电流的最好还是再并联一个肖特基二极管做保护。W5500以太网模块这是硬件集成TCP/IP协议的以太网控制器用SPI接口和MCU通信。它的原理图里除了电源3.3V内核、3.3V I/O部分版本需要1.8V还要注意RJ45变压器的接法特别是网络变压器的中心抽头偏置电压接错了会导致通信不稳定。AD9833信号发生器模块这是ADI的DDS芯片用SPI接口配置输出正弦波、三角波、方波。原理图要点在于模拟地和数字地的处理还有输出端的运放滤波电路否则波形会有明显毛刺。MPU6500六轴传感器I2C或SPI接口要注意I2C的地址引脚AD0上下拉还要注意中断引脚是否需要上拉。通用原则就是任何外部接口都要考虑静电和浪涌防护至少预留TVS管或ESD保护器件的焊盘任何感性负载都要有续流回路任何通信接口都要考虑电平匹配和上拉电阻。2.3 原理图绘制规范与检查清单原理图绘制是所有工作的“图纸”规范程度直接影响后面PCB设计的效率。我自己的绘制习惯是这样的电源和地符号要清晰。不要靠飞线连接尽量使用电源符号和网络标签。这样看起来清爽也方便检查。信号流向从左到右。输入在左、输出在右这是行业惯例别人审图时一眼就能看懂。同类模块放一起。比如所有电源相关的放在左上角MCU放中间偏下接口放边缘。关键引脚加注释。像BOOT0、NRST这类需要配置的引脚在旁边的文本里写清楚“接线说明”方便自己和同事后期查阅。原理图画得差不多的时候一定要做一次完整的DRC检查。Altium Designer里有电气规则检查ERC可以查未连接引脚、单端网络、重复标号等问题。Cadence和OrCAD的DRC则会提示像“Pin connected to Power Object”这类警告。很多人在AD里画完原理图直接就不管ERC了结果导入PCB后一堆封装缺失或者网络对不上后期排查非常痛苦。我还发现很多人搜索“AD原理图修改元件引脚位置”“AD原理图网络怎么跳转”这类操作问题。这说明大家用的工具还是比较集中的AD和嘉立创EDA在初学者里最常见。其实原理图编辑器的操作大同小异关键是模式切换、网络标签的放置、以及引脚端点的准确连接。在AD里修改元件引脚位置要在原理图库编辑器里改然后在原理图中更新而不是直接在原理图里拖动引脚否则会出现引脚连接关系错乱的问题。3. 工具链选型与工程管理3.1 主流EDA工具怎么选从热词里可以看到大家用的工具主要有几类嘉立创EDA立创EDA、Altium DesignerAD、CadenceOrCAD和Allegro、PADS。嘉立创EDA在国内这几年非常火原因很直白免费、上手快、元器件库和商城打通、可以一键下单PCB很适合学生、创客和小批量产品开发。它直接在浏览器里用不用安装也能导出Gerber和BOM完整流程能跑通。AD是老牌工具功能全三视图直观做中大型项目的多。但正版授权贵对个人开发者来说门槛高。AD的优势在于资料多招聘市场上会AD的还是不少。CadenceOrCAD加Allegro偏高速数字电路和大型PCB设计是通信、工控、服务器领域的首选。缺点是学习曲线陡原理图符号库和封装库都要自己建或找第三方操作不如AD顺手。像“Cadence器件原理图下载”“Cadence打印原理图不显示NC器件”这类问题说明Cadence使用门槛确实高一点但它的规则约束和约束管理器非常强适合做4层以上、有高速信号的产品。PADS在消费类电子和电源板领域占有率很高操作习惯和AD差异较大学习资料相对少一些。选工具时不要跟风要看你的产品和团队协作要求。个人学习做小项目嘉立创EDA完全够用如果奔着找大厂硬件岗去AD和Cadence至少要会一个。3.2 原理图库、封装库和命名规范不管用哪个工具原理图库Schematic Symbol和PCB封装库Footprint都是工程管理中最容易被忽视但影响最大的部分。我见过太多板子因为封装不对返工原因往往是原理图符号里的引脚编号和芯片手册不一致。比如一颗LQFP48的MCU原理图库把Pin 7和Pin 8搞反了画图的时候又没检查结果PCB板回来后程序下载不了、外设不工作查了三天才发现是引脚定义错位。所以我的建议是每个新元件都要核对引脚定义对照数据手册的Pin Assignment表确认每个引脚的编号、名称、电气类型输入、输出、电源、地。封装里要核对焊盘间距、焊盘尺寸、丝印尺寸不能只看实物“差不多”。用卡尺量实物或者从原厂和靠谱的封装库下载比自己手画更可靠。元件编号Reference Designator要有规律比如R、C、U、J、L、D、Q开头C1到C10集中在某个区域方便排查。我还想提一下网络标签Net Label的命名规范。AD和OrCAD里网络名最好按功能命名比如“3V3”“GND”“SPI1_SCK”“I2C_SDA”。如果随便用NetLabel1、NetLabel2导入PCB后网络表可读性会非常差布线时根本不知道哪根线是干什么的。3.3 从DHT11到STM32用开源PCB设计图学习的好方法我看到热词里有个很有趣的组合“dht11原理图嘉立创画图”“stm32c8t6原理图”。其实这就是一个很好的学习路径用嘉立创EDA把DHT11模块的原理图和STM32F103C8T6最小系统的原理图自己画一遍。不用一开始就设计复杂产品先模仿成熟的开源原理图在画的过程中去理解每个引脚为什么这么连、每个电阻为什么是这个阻值。我自己带新人的时候经常让他们干一件事找一个开源项目的完整工程把原理图从第一页看到最后一页然后合上图纸自己重新画一遍再和原图对比。这个过程看起来笨但对手感和电路理解能力的提升非常大。画的时候要注意不要只是“抄”而是要想清楚每个模块的作用以及模块之间怎么衔接。比如DHT11的数据引脚为什么要接上拉如果换成开漏输出的MCU引脚会怎样这些问题想明白了原理图才算真正吃透了。4. 从原理图到PCB转换、布局与布线4.1 网表导入与封装检查原理图画完后就要设计PCB了。首先做的是“原理图转PCB”也就是把原理图的电气连接关系网表导入PCB编辑器。不同工具的操作不一样AD在原理图里点“Update PCB Document”AD会自动生成Room并把元件导入PCB工作区。Allegro需要用Design Entry HDL或Capture画完原理图后通过工具生成网表文件再在Allegro中Import Netlist。这也是为什么有人搜“design entry hdl 画原理图”“concept hdl cds.lib”——Cadence的流程确实更繁琐。PADS先生成.asc网表再导入PADS Layout。导入之后我建议先做三件事检查元件数量是否和BOM一致有没有重复或漏掉的器件。检查封装是否齐全有没有“封装missing”或者“missing footprint”的报错。OrCAD的DRC里如果提示封装missing多半是原理图符号没有绑定正确的PCB Footprint属性或者库路径没找到。检查网络数量。把原理图里的网络数量和PCB里的网络数量对一下差一个都说明有地方没导对。4.2 布局先搭骨架再填细节PCB布局是整个设计里最体现经验的环节。我通常按“结构优先、功能分区、电源走位、信号流畅”的策略来做。结构优先先根据外壳和接口确定连接器位置USB座、DC座、天线座、排针等先放到位。这决定了整个板子的“进出口”。功能分区按照原理图把电路分成电源区、主控区、模拟区、接口区。电源区尽量靠近板边或输入端口模拟电路远离数字大电流区域。电源走位电源路径要短而粗LDO或DCDC的输入输出电容要靠近芯片引脚。开关电源的反馈电阻要走Kelvin连接不能和输出线共用一条细线。信号流畅高速信号线SPI、I2C、UART长度尽量短避免跨分割模拟信号尽量远离开关电源和时钟。以STM32F103C8T6最小系统板为例8MHz晶振要尽量靠近OSC_IN和OSC_OUT引脚下面不要走其他信号线。复位电容靠近NRST引脚。SWD调试口的排针放在板边方便插线。去耦电容优先安排在芯片电源引脚的背面或者紧邻的位置。4.3 布线线宽、过孔与铺铜的实际选择布局完成后进入布线阶段。这部分我给出一些实际可用的参考参数针对双面板1.6mm板厚、1oz铜厚的情况普通信号线线宽8到10mil间距不小于8mil。如果板子密度不高放宽到10/10更好。电源线3.3V或5V走15到20mil供电主线可以到30mil以上。地线尽量铺铜处理不要单独走细线。双层板在底层做完整的地平面GND铺铜对信号完整性和EMC都很有帮助。过孔信号过孔默认0.3mm焊盘加0.2mm孔径电源过孔可以用0.6mm加0.3mm或者多个过孔并联。晶振引脚走线短且对称尽量在元器件同一层不要打过孔。对于ESP32-WROOM-32这类带天线的模块天线区域的正下方和周围一定不要铺铜保持净空区域Keepout。天线附近不要走高速数字信号线否则会严重劣化WiFi指标。这是很多人做ESP32板子信号差的真正原因。如果是4层板一般层叠是信号-地-电源-信号或信号-地-电源-信号。第二层整层铺地第三层走分割电源顶层放主要信号底层放次要信号。多层板在电源完整性和EMC方面优势明显但成本也会高大概一倍。要不要做4层主要看产品的信号频率、密度和成本预算。4.4 铺铜与DRC检查的实战思路布线完成后要铺铜。双层板通常顶层和底层都铺GND通过过孔阵列连接。铺铜时焊盘一般用十字连接Thermal Relief不然焊接时热量散太快容易虚焊。在STM32这类芯片的GND焊盘上我习惯直接全连接Flood Over因为芯片底部有散热焊盘接地阻抗越小越好。然后做一次完整的DRC检查常见问题有未连接的导线或飞线残留。间距违规比如两个网络走得太近。过孔打在焊盘上导致的制造问题。未定义铺铜区域导致的短路风险。DRC通过后还要再人工检查一遍原理图和PCB的对应关系特别是连接器的引脚顺序。我用过AD的“Cross Probe”和“Compile PCB”功能可以快速交叉定位非常省时间。5. 制造文件输出与打样避坑5.1 Gerber、钻孔、BOM与坐标文件PCB设计完成后输出制造文件是最后一道关卡。无论是嘉立创下单还是其他PCB工厂都需要以下文件Gerber文件包括各层的铜箔、丝印、阻焊常见格式RS-274X。钻孔文件Excellon格式用于数控钻床。BOM表元件清单包含位号、型号、封装、数量。坐标文件Pick and Place贴片坐标包含位号、X或Y坐标、旋转角度、层别。很多PCB工厂也支持直接上传AD或EDA的工程文件比如嘉立创支持直接上传立创EDA工程或者AD工程工厂会帮忙转Gerber。但我还是建议自己先出Gerber并检查一遍因为工厂侧转换偶尔会有意外比如字体缺失、线宽变化。5.2 制造工艺参数与下单注意事项下单时有几个参数需要确认板层数2层还是4层。简单小系统2层够用但4层对EMC和散热更友好。板厚默认1.6mm做小批量消费类产品也常用1.0mm或0.8mm薄板。铜厚普通1oz35微米大电流走线可加厚到2oz。最小线宽和线距不同工厂工艺能力不同一般最低能做到4/4mil但有风险建议保守用6/6mil。表面处理常见的HASL喷锡和ENIG沉金。沉金表面平整适合精细节距引脚喷锡便宜适合一般产品。阻焊颜色绿油最常见黑、白、蓝、红都有注意白色和黄色阻焊做精细丝印时对比度差。拼板如果板子很小可以做拼板和邮票孔方便SMT贴片和分板。还有一点很重要下单前要看工厂的“工艺能力表”不要拿你设计文件的线宽线距去挑战工厂的极限。很多初学者喜欢把线宽压到最小“显得自己很厉害”结果工厂打样良率低或者做出来的阻抗完全不对。5.3 SMT贴片与手工焊接的注意事项打完样后如果走SMT贴片要确认钢网文件、BOM位号和工厂的贴片顺序。关键元器件比如QFP、BGA类的芯片要确认引脚间距和生产良率。如果只是小批量手工焊建议先用放大镜或显微镜检查PCB有没有毛刺、短路、断线。焊接时先焊电源部分测一下有没有短路。焊完芯片后用万用表检查相邻电源地引脚间有没有短路。第一次上电务必用限流电源电流先设小一点比如50mA到100mA观察电流变化别直接上大电流。我见过太多人第一次上电直接把板子烧了就是因为没有做限流测试。这是一个低成本但极高收益的习惯。6. 典型故障与排查速查表最后整理一下我这些年遇到最多的硬件调试问题做一个速查表方便你板子出问题时快速定位。故障现象可能原因排查思路板上电后无反应电源指示灯不亮电源短路、LDO接反、输入电压不对万用表测输入电压、测电源对地阻抗看电容有没有异常发热MCU无法下载程序SWD引脚没连、BOOT0配置错误、晶振没起振检查SWDIO和SWCLK是否接对BOOT0是否拉低用示波器看OSC波形晶振不起振或频率偏差大负载电容选错、晶振位置离引脚太远、PCB寄生电容大参考晶振手册查CL值尽量缩短走线重新调整电容值板子工作不稳定偶发重启电源纹波大、去耦电容不够、地平面不完整用示波器测电源纹波增加去耦调整地布局WiFi信号差ESP32等天线净空不足、天线下方铺铜、射频匹配不对重新检查天线区Keepout不铺铜远离金属件ADC采样值跳动模拟地数字地处理不当、参考电压不稳定、去耦不足分开模拟地数字地加滤波检查VREF和AVDD去耦电机转动时MCU重启电机电源和逻辑电源共用、感性负载尖峰干扰电机独立供电电源隔离加续流二极管和大电容这个表格里我列的每一项都是实际项目中遇到过的。做嵌入式硬件开发调试能力很多时候比画图能力更重要因为板子总会出问题关键是能不能快速定位。最后再分享一个我个人的操作习惯每次打样回来第一件事不是焊接而是拿游标卡尺量PCB的板厚和孔位和设计文件核对一遍。因为工厂偶尔会做错板厚或孔位偏位这些在焊接前发现还能改焊接后再发现就只能报废了。做原理图和PCB这件事越往后越会发现它考验的不只是软件操作而是你对电路的理解、对制造工艺的了解还有细心程度。希望这篇文章能帮你把从原理图到PCB制造的整条链路走通少踩一些我踩过的坑。
返回列表