我接过不少硬件项目,也带过刚入行的硬件工程师。很多人拿到“硬件开发流程”这个话题,第一反应是翻出书本上的V模型、瀑布模型,画一张漂亮的流程图,然后发现实际干活根本不是那么回事。真正决定项目成败的,往往是需求阶段有没有把话说透,原理图评审时有没有人较真,样板回来之后你有没有按顺序去调,而不是上来就拿着示波器到处乱戳。
这篇文章不聊虚的,我以一块实际开发过的工业数据采集与显示终端为例,走一遍从需求到量产转移的完整硬件开发流程。这块板子用ESP32-S3做主控,带RS485、CAN、USB、两路继电器输出,电源部分是电池加适配器双输入的双向BuckBoost拓扑,显示部分用LVGL跑一块4.3寸RGB屏。中间踩过的坑、总结的检查清单、调试顺序、测试方法,都会写出来,希望能给正在做嵌入式硬件或者准备转硬件开发的朋友一些真正能用的东西。
1. 需求阶段:这一步不做扎实,后面全是白干
硬件开发流程里最容易被跳过的就是需求阶段。很多项目是老板嘴巴一张,“做个盒子能采集数据就行”,然后硬件工程师就兴冲冲去画原理图了。等板子回来,机械结构装不上、通讯口对不上、供电范围不够,每一处都是返工。我在实际项目里总结了一个规律:需求阶段多花一周,后期至少省一个月。
1.1 需求输入清单:别让“差不多”变成你的墓志铭
需求阶段的核心任务,是把用户口头描述变成一份可量化、可验证的技术规格书。硬件工程师不能坐在工位上猜,必须拿着清单去问。要确认的内容至少包括这些维度:
- 功能需求:采集什么信号、输出什么动作、通讯协议走什么、显示什么内容、按键怎么交互。
- 性能指标:采样率、分辨率、通讯波特率、显示刷新率、控制精度、响应时间。
- 环境条件:工作温度范围是商业级(0~70℃)还是工业级(-40~85℃)?有没有振动、潮湿、盐雾、防爆要求?
- 供电情况:输入电压范围多少?是电池供电、适配器供电还是PoE?有没有掉电保存需求?
- 机械结构:PCB外形尺寸多少?接口位置在哪?是否需要开孔定位、螺柱固定?
- 认证要求:做国内还是出口?需不需要3C、CE、FCC、CB?这直接决定EMC设计和器件选型成本。
- 成本目标:单板BOM控制在多少以内?这决定了主控选型、PCB层数、连接器档次。
以上每一项,都要落到具体数字上。比如“工作温度-40~85℃”和“商业级0~70℃”,选型时电容、电阻、电感、连接器的物料成本完全不是一个量级。我在这个项目里就因为最初没说清楚是户外机柜使用,结果按商用级选了电解电容,后来测试在高温箱里直接鼓包,又重新改方案。
1.2 硬件需求澄清的会议技巧和输出物
需求评审会建议叫上软件负责人、结构工程师、项目经理一起。硬件工程师千万不要闷头自己听,也别全盘接受所有要求,要敢于质疑不合理的指标。比如有个客户既要电池供电待机一年,又要7寸屏常亮显示,这个功耗账怎么都算不平,当场就应该说清楚,而不是等到设计完了再扯皮。
需求评审结束后,输出两份东西:
- 硬件需求规格说明书(含双向BuckBoost电源计算、接口定义、通讯协议帧格式、显示界面需求)。
- 硬件设计方案评审记录(含风险清单、开放问题跟踪表)。
其中接口定义必须细化到:每个连接器的型号、引脚顺序、信号方向、电平标准、防护等级。通讯协议要定清楚波特率、帧头、校验方式、超时时间。显示界面要区分开机画面、主界面、设置界面、报警界面,LVGL那边的工程师才能同步开工。
2. 总体方案与关键器件选型:决定命运的其实就这几个选择
需求澄清之后,进入总体方案设计。这一步最关键的不是把原理图画出来,而是选对主控、搭好电源树、算清楚功耗、定好接口资源分配。选型选得好,后面调试顺畅;选型拍脑袋,后面处处受制。
2.1 主控选型:性能、生态、供货一个都不能少
主控选型要评估几个维度:处理性能是否满足界面刷新和通讯处理,外设资源是否够用(UART、CAN、SPI、I2C、ADC、PWM、USB),开发工具链是否成熟,芯片供货是否稳定,以及成本是否符合目标。
我们这个项目最终选了ESP32-S3,理由是:
- 双核240MHz,跑LVGL刷4.3寸RGB屏加WiFi通讯,CPU余量还算充裕。
- 内置USB OTG,可以复用USB口做固件升级和调试日志输出,省掉一颗USB转串口芯片。
- 外设资源覆盖RS485、CAN(通过SPI扩展MCP2515)、模拟量采集。
- 开发环境用ESP-IDF,社区资料非常丰富,软件那边上手快。
这里有个很现实的建议:选型时必须确认交期和替代料。2020年以后芯片供应链大家都有体会,单料源风险太大。我在选型表里给每个关键器件都列了两到三家备选,并且确保引脚兼容或者第二版就能替换,这样即使缺料,也不至于停产等芯片。
2.2 电源树设计与双向BuckBoost计算示例
硬件方案里电源设计是基本功,也是很多初级工程师容易翻车的地方。先画电源树,从输入到每一路负载的电压、电流、纹波要求,全部列出来。我们这个项目的电源树是这样的:
| 电源轨 | 电压 | 最大电流 | 主要负载 | 纹波要求 |
|---|---|---|---|---|
| VIN | 9~36VDC | - | 适配器/电池输入 | 输入浪涌按ISO7637设计 |
| VBAT | 7.4V | - | 锂电池组 | - |
| VCC_5V | 5V | 3A | USB、RS485、继电器驱动 | 50mVpp |
| VCC_3V3 | 3.3V | 1.5A | 主控、传感器、显示屏逻辑 | 30mVpp |
| VCC_1V8 | 1.8V | 0.3A | 显示屏AVDD、SD卡 | 20mVpp |
适配器和电池双输入之间需要无缝切换,或者要求电池和适配器都能给系统供电,这就用到了双向BuckBoost拓扑。很多做硬件的人一算BuckBoost就头大,其实核心就是电感伏秒平衡和电流连续模式。
以我们选择的BuckBoost控制器为例,设定开关频率 f = 300kHz,输入 VIN = 12V,输出 VOUT = 5V,最大负载电流 IOUT = 3A,电感纹波电流 ΔI_L 取负载电流的30%:
- 工作占空比 D = VOUT / (VOUT + VIN + VD),代入二极管压降 VD = 0.5V,得到 D ≈ 0.30。
- 电感量 L ≥ VIN × D / (f × ΔI_L) = 12 × 0.30 / (300000 × 0.9) ≈ 13.3μH,实际选15μH。
电感电流峰值 I_peak = IIN + ΔI_L / 2,输入电流 IIN = P_OUT / (η × VIN) ≈ 15 / (0.9 × 12) ≈ 1.39A,加上纹波后峰值约1.84A,所以电感饱和电流至少要留1.5倍裕量,选3A以上。电容方面,输出电容要根据输出纹波要求选择,ESR要足够低,我习惯用陶瓷电容并联一个高分子钽电容补低频。
这些都是最常见的公式,但实际做硬件的人往往不是公式不会,而是不按数据手册推荐参数去核算。比如选了15μH电感,结果饱和电流只有2A,满载时电感饱和,啪一下电流飙上去,芯片冒烟。选型时必须把电感额定电流、饱和电流、DCR、温升都查清楚,不要只看封装大小。
2.3 接口保护与硬件信任根的工程化落地
总体方案阶段还需要考虑接口防护。RS485、CAN、USB这些对外接口,一旦接到工业现场,就要预防浪涌、静电、过压。RS485我用TVS管加自恢复保险丝,CAN直接上专用的CAN收发器集成保护方案,USB口加ESD防护阵列。这些防护器件成本不高,但丢在现场就是一次售后。
如果产品有联网或者数据安全需求,现在越来越多的方案会提到硬件信任根。它本质上是在主控旁边加一颗独立的安全芯片,或者用主控内部的Secure Element区域,用来存密钥、做签名校验、验证固件合法性。我们标配预留了ATECC608B的位置,如果客户有安全需求,贴上去就能启用安全启动和通讯加密。硬件信任根这件事,建议在总体方案时就规划进PCB,不要等软件说“我要安全功能”了才临时加。
3. 原理图设计:电源树、片选逻辑和那些容易被忽略的工程细节
原理图设计是整个硬件开发流程里最见功力的环节。同样是画一张原理图,资深工程师和初级工程师画出来的东西,评审会上就能看出差距:资深工程师会在每个电源轨上标清楚电流走向,会在每个关键信号上考虑测试点,会在不看数据手册的情况下说出某个引脚的复用关系。
3.1 从电源树到原理图:逐路核算而不是复制粘贴
原理图设计第一步不是放芯片,而是把上一阶段的电源树转化成具体的原理图电源网络。每一个电源轨要核算:输入端电容容量够不够、输出端电容ESR达不达标、反馈电阻精度是否满足输出电压精度、使能脚时序是否符合上电要求。
我在这个项目里踩过一个典型的坑:ESP32-S3的3.3V和1.8V有上电时序要求,但我的LDO使能脚接到同一个RC延时网络上,结果3.3V和1.8V同时上升,主控偶尔启动异常。后来翻数据手册,才发现3.3V要先于1.8V稳定至少1ms。解决办法很简单,把1.8V的使能接到3.3V输出完成标志上,而不是简单并联RC。
原理图设计一定要把去耦电容算够了。每个电源引脚旁边放0.1μF陶瓷电容,每个芯片周围放一个10μF的储能电容,电源入口再放一个100μF的铝电解或钽电容。有人觉得电容放多了浪费,但高频瞬态电流就是靠这些电容就近提供的,电容放少了,信号线上全是毛刺,代码怎么写都会随机死机。
3.2 SPI硬件片选与软件片选的取舍:一个让很多人纠结的问题
我们的设计里用SPI扩展CAN控制器,这就绕不开一个问题:片选用硬件还是软件?很多初学者不理解,SPI片选不就是一根线拉低拉高吗?实际量产项目中差异很大。
硬件片选是所有从设备片选都由主控的硬件外设控制,SPI控制器在发送数据前自动拉低CS,发送完成后自动拉高,整个过程不需要CPU参与。硬件片选适合高速传输或需要严格时序的场景,因为片选信号和SCK的时序是硬件保证的,不会因为中断延迟而变形。
软件片选是GPIO控制CS,发送前先拉低GPIO,SPI传输完成后拉高GPIO。这种方式胜在灵活,一个GPIO接好几个设备,或者时序要求不高的场合都可以。但缺点是如果传输过程中来了高优先级中断,CS拉低和SCK启动之间的时间不可控,片选信号上会出现毛刺,个别从设备就可能误动作。
我们用的MCP2515,设计上选了硬件片选,因为CAN报文收发有实时性要求,而且MCP2515的数据手册对CS时序有明确要求,软件片选在系统忙的时候很难保证。如果只是挂一个温湿度传感器,软件片选就完全够用。关键要看外设数据手册对片选建立时间、保持时间的要求,不要一味追求省GPIO。
3.3 USB设计中的VID/PID申请与设备识别
这个项目带了USB功能,硬件上还有一个容易被忽视的工作:申请USB VID/PID。USB设备要能被电脑正确识别,必须有唯一的VID(厂商ID)和PID(产品ID)。VID需要向USB-IF组织购买,一个VID下面可以分配无数个PID;如果只是内部调试不商用,可以用一些协议允许的测试VID,但产品上市必须用正式的。
另外,如果产品需要做Windows驱动签名,这就涉及热搜里那些“Windows 无法验证此设备所需的驱动程序的数字签名”的问题。很多硬件工程师把设备做出来了,插上电脑驱动装不上,弹出的就是这种报错。这背后其实是你的USB描述符里的VID/PID、设备类、字符串描述符没有符合规范,或者驱动没有正确签名。嵌入式设备如果走USB-CDC类,Windows自带驱动,基本不用额外装驱动;如果自定义HID或者自定义vendor类,就必须写驱动并且考虑签名。我建议能用标准类的尽量用标准类,把驱动兼容性的坑躲过去。
3.4 原理图评审:这是最后一次不花硬件成本就看穿问题的机会
原理图画完不要急着投板,组织至少一次正式的评审会。评审不是走过场,要对照检查清单逐项看:
- 电源:每一路电压、电流、纹波是否满足负载需求?上电时序是否正确?反接、过压、浪涌防护有没有?
- 时钟:晶振负载电容是否匹配?时钟走线是否远离干扰源?
- 复位:复位电路是否可靠?是否考虑电压监测芯片?
- 接口:连接器引脚定义是否正确?ESD和浪涌防护是否到位?
- 测试性:关键信号是否预留测试点?调试串口、SWD/JTAG接口是否引出?
- 接地:模拟地、数字地、功率地如何分割?单点接地还是多点接地?
评审会上不要怕挑毛病。我的经验是,原理图阶段发现一个错误,改起来就是一根飞线或者一版改图的事;等PCB做好再发现,就是重新打样的时间和金钱。硬件工程师要培养一种“强迫症”般的审查习惯,宁可被同事吐槽啰嗦,也不要让问题流到下一环节。
4. PCB与打样:从布局分区到Gerber出门的管控要点
原理图通过评审后,进入PCB设计。PCB设计是硬件开发流程里“一分设计、九分细节”的环节。同样一张网表,布局合理和布局随意的板子,电气性能可能差一个数量级。
4.1 叠层与布局分区:不要迷信4层,但也不要盲目2层
简单板子用两层也能做,但对于带WiFi、RGB屏、CAN、RS485的混合信号板,我强烈建议至少做四层板。四层板可以提供完整的地平面和电源平面,信号的回流路径短,环路面积小,EMI问题少很多。我们这块板子用了四层:顶层信号、内层地、内层电源、底层信号。
布局分区原则是:数字区、模拟区、功率区、接口防护区分开。主控、SDRAM、Flash放在数字区;电源转换电路放在功率区,远离模拟采集部分;对外接口连接器放在板边,防护器件紧靠连接器放置,让浪涌电流刚进板就被泄放到地。RGB屏的排线FPC连接器放在板边,走线尽量短。
地平面的处理是最多工程师纠结的。我的做法是:模拟地、数字地不分地,保持一个完整的地平面,只是在布局上让模拟电路和数字电路尽量远离,模拟信号走线不要跨越数字电路区域。分地看起来干净,但实际上跨分割的信号会遇到阻抗突变的回流问题,反而更差。
4.2 关键走线与阻抗控制:信号完整性的基本功
LVGL跑RGB屏,数据线是RGB888或者RGB666并行总线,频率不算高,但也要注意等长和阻抗。我一般把RGB数据线做等长,误差控制在正负5mil以内,并且包地处理,避免串扰。SPI走线频率在10MHz以上时就要预留串联电阻,通常33Ω左右,用来抑制振铃。
电源走线要按载流能力计算,1盎司铜厚下,1A电流至少要0.5mm宽的走线,最好是直接铺铜。过孔也有载流限制,大电流路径多打几个过孔,不要指望一个0.3mm过孔过3A电流,那会发热甚至烧断。
4.3 DFM检查:发板前必须做的一件事
发板前一定做DFM(可制造性设计)检查。很多画图时候觉得没什么的问题,到了贴片厂就是事:
- 最小线宽线距是否满足板厂工艺?常规1oz铜厚下,最小线宽线距建议6/6mil以上,过孔孔径不要小于0.2mm。
- 焊盘上是否打过孔?焊盘上的过孔会导致贴片时锡膏流走,造成虚焊,尽量把过孔移出焊盘。
- 丝印是否压到焊盘?丝印压焊盘,贴片时对位识别会出问题。
- 器件间距是否满足贴片机吸嘴要求?小封装器件间距太密,贴片良率会直线下降。
提交生产文件时,我习惯同时导出Gerber、钻孔文件、坐标文件、BOM、位号图,打包成一个压缩包,命名包含板卡型号和版本号。和板厂沟通时,把板材要求、铜厚、表面工艺(我们用的沉金,因为板子有频繁插拔的排线座,沉金耐磨性好)、阻焊颜色一次性说清楚。打样回来后第一件事,不是上电,而是先对照BOM清点物料,目检板卡有没有明显短路和划伤。
5. 硬件调试:像侦探一样,按逻辑链排查而不是乱戳一气
样板焊接完毕,进入硬件调试阶段,这里最容易出问题,也最考验硬件工程师的基本功。我见过不少工程师拿到样板就上电,然后哪儿冒烟了再查哪儿。正确做法是完全按顺序来:先静态检查,再上电;先电源,再时钟;先最小系统,再外设。
5.1 上电前的静态检查:万用表比示波器更先上场
拿到焊接好的样板,先不要插电源。用万用表蜂鸣档测电源正负极之间有没有短路。这一步能发现大部分焊接问题,比如电容焊反、芯片电源引脚桥连。测的时候不要只看阻值是不是0,有些板子阻值很低但不一定是短路,要结合电源路径推算。比如3.3V和GND之间有几百欧姆,可能是后级负载的ESR,不一定是故障,但如果是几欧姆甚至0.几欧姆,就要先排查。
然后检查每个IC的电源引脚对地阻抗,和原理图设计预期对比。如果某个LDO输出对地只有几欧姆,大概率是后端负载焊错或者芯片本体损坏。这些检查做完才能上电。
5.2 电源调试:先确认每一路电压准、纹波小
第一次上电,建议用限流电源,先把电流限制在200mA以内,然后慢慢调高电压。如果电流超过预期迅速飙起来,立刻断电查短路。上电之后,依次测量每一路电源的电压值,必须和设计值一致,误差在正负3%以内。
电源电压正常后,用示波器看纹波。探头要用短地线弹簧针,不要用那个长地线夹子,否则测出来的全是空间耦合噪声。示波器带宽限制设为20MHz,垂直档位调到10mV/div,看纹波峰值是否在规格内。如果纹波超标,可能是输出电容容值不够,也可能是环路补偿参数没调好,BuckBoost电路还要注意电感是否有啸叫,如果听到“滋滋”声,多半是环路不稳定或者电感饱和。
5.3 时钟、复位、最小系统:先让主控“活过来”
电源正常后,用示波器确认晶振是否起振,频率是否准确。ESP32-S3的晶振频率是40MHz,示波器实测应在40MHz正负一点误差以内。如果晶振没有波形,检查晶振负载电容是否按数据手册匹配,检查晶振两脚对地电阻,确认没有虚焊。
复位信号也要在示波器上确认:上电瞬间复位脚有没有一个从低到高的跳变,跳变过程有没有毛刺。复位不好,主控会随机进入异常状态,这种问题最难排查。
最小系统正常后,先用串口工具连接调试串口,确认能否打印启动日志。ESP32-S3上电后,ROM bootloader会输出一段日志,如果日志正常,说明芯片已经跑起来了。很多人在这个阶段卡住,第一反应是怀疑代码,我通常先用官方工具擦除整个Flash,再用最简的GPIO翻转Demo测试,如果Demo都跑不通,就大概率是硬件问题而不是软件问题。
5.4 外设逐个调通:从点灯到SPI CAN再到LVGL显示
最小系统跑通后,开始逐个调外设。顺序建议:GPIO点灯、串口回环、RS485收发、USB枚举、SPI读CAN控制器寄存器、CAN收发、传感器ADC采样、最后才是LVGL显示。
每个外设调通都有对应的硬件验证方法。比如RS485,先不要接总线,做自发自收测试,确认收发器方向控制逻辑正常。USB则是插上电脑看设备管理器能不能识别VID/PID,如果出现“Windows 无法启动这个硬件设备 (代码 10)”或者“Windows 无法验证此设备所需的驱动程序的数字签名”,那就要分两头查:一是硬件描述符里的VID/PID和字符串,二是驱动签名和安装方式。
SPI扩展CAN控制器这里,我特别推荐先读寄存器而不是直接跑上层协议。MCP2515的寄存器读出来是全FFFF说明SPI通讯没建立,读出来全是0也可能有问题,正确做法是写一个已知值再读回来比较。不要一上来就发CAN报文,那样出了问题分不清是软件配置问题还是硬件链路问题。
调LVGL显示的时候,先做花屏测试:往显存里填充0xA5A5,屏幕如果显示整齐的棋盘格,说明RGB接口的时序和初始化基本对了,再跑LVGL的Benchmark Demo。如果花屏或者黑屏,优先检查RGB信号线上的串阻、FPC排线是否插到位、背光升压电路是否工作。
5.5 硬件调试避坑实录:我踩过的几个具体问题
以下是我在这次项目中真实踩过的几个坑,建议直接截图存下:
- 问题一:ESP32-S3上电复位正常但几分钟后死机。排查半天,发现3.3V LDO输入输出压差余量不够,当WiFi瞬间电流拉高时,LDO进入dropout,电压跌落超过主控阈值。解决:换成压差更小的LDO,并加大输出电容。
- 问题二:CAN收发偶发错误帧。用示波器看CAN_H和CAN_L差分波形,发现隐性电平有振铃,原因是CAN总线终端电阻焊接位置离连接器太远。解决:板卡内部不终端,终端电阻放在总线两端,而不是放在板子上。
- 问题三:RGB屏显示有横条纹。排查发现屏的电源和背光电源来自同一路5V,背光PWM从0%到100%时把5V拉出大纹波。解决:把背光电源单独用一路供电,同时在屏电源入口加LC滤波。
- 问题四:LVGL触摸偶尔失灵。查下来是I2C触摸屏的中断脚没有加去抖电容,工业现场干扰让中断脚乱触发。解决:在INT脚加100nF去耦电容,软件上再加中断时间戳过滤。
- 问题五:用KEIL调试时提示“Keil Pack Install硬件错误”这类问题是很多ARM板子的坑。其实这个报错大概率是调试器固件和Keil的CMSIS Pack版本不匹配,或者目标设备没有正确上电。处理办法是先用官方的下载工具确认目标芯片能连上,再换一个稳定版本的Pack,不要盲目重装驱动,重装解决不了版本冲突。
5.6 硬件同步与多传感器联调:别小看时间戳对齐
如果设备里同时有多个传感器,尤其是涉及视觉、激光雷达、IMU这种需要融合的场景,热搜里的“fast-livo硬件同步”指的就是这类问题。我们这块板子虽然没有激光雷达,但RS485采集多个从站数据,发现数据对齐很头疼。后来在硬件上加了GPS PPS或者主控定时器同步信号输入,软件通过硬件触发保证所有传感器数据打上同一时间基准,才彻底解决时序错乱的问题。硬件工程师要在设计时就把同步信号引脚预留出来,不要等算法工程师提需求了才去刮线飞线。
这些坑有一个共同特点:只看原理图或者只看代码都很难发现,必须结合示波器实测数据和现场现象反推。调试硬件不要怕慢,一步步来,反而最快。
6. 测试验证与量产移交:功能跑通只是开始
很多硬件项目死在“样板能用了就以为可以量产了”这个错觉上。样板调通、演示给客户看了,只是硬件开发流程的一半。后面还有正式的测试验证、认证、试产、移交,每一步都有不少坑。
6.1 硬件白盒测试与信号质量验证
功能跑通后,要按测试规范逐项验证。热搜里提到的“CAN硬件白盒测试规范”,不要以为只是软件的事。硬件白盒测试包括:每个被测信号的电平范围、时序、负载特性、故障注入后的表现等。CAN总线尤其要测:终端电阻值是否在60Ω左右、CAN_H和CAN_L对地电压是否在合理范围、显性和隐性电平是否满足ISO11898要求、总线短路和开路保护是否生效。
同样要测的还有:
- 电源纹波和噪声:在满载、半载、待机三种工况下测每一路电源。
- 信号时序:SPI时钟频率和建立保持时间是否满足从设备要求,RGB屏的行场同步时序是否匹配。
- 温升测试:用热成像仪看板卡在满载工作时的器件温升,电解电容、电感、MOSFET这些发热大户尤其要注意。
- ESD测试:打±4kV接触放电和±8kV空气放电,看系统是否复位或死机。
- EMC预测试:有条件就去实验室摸底,没条件先用近场探头扫一遍,找出辐射超标的线束和走线。
我之前犯过一个错误,CAN白盒测试时只测了功能,没测CAN收发器的隐性电平。结果在客户现场,总线一长,通信就偶发失败。后来用示波器抓到隐性电平偏高,已经接近显性阈值了,原来是收发器供电电压偏低,TX引脚上拉电阻选得太大。这种问题如果白盒测试时测了每个引脚的静态电平,早就发现了。
6.2 与软件联调:给软件工程师一份清晰的硬件手册
硬件测试基本稳定后,就要和软件联调。作为硬件工程师,建议主动整理一份硬件接口说明文档,包含:寄存器地址映射(如果用到CPLD/FPGA)、每个外设的初始化时序图、中断脚的有效电平和去抖要求、GPIO的默认上下拉状态、电源唤醒时序。这份文档能省掉后面无数的“你帮我看看这个寄存器为什么不工作”的沟通成本。
联调中常见的问题是软件说“硬件有问题”,硬件说“软件有问题”。我的经验是:先看波形,再下结论。比如SPI读数据不对,如果时钟和数据线波形正常,从设备返回数据也是预期值,那就是软件寄存器配置的问题;如果时钟波形有毛刺、片选时序不对,就回过头来查硬件。大多数情况下,双方吵不清楚的事,示波器一测就有答案。
6.3 可靠性测试、认证与试产
产品要上市,还得走可靠性测试和认证流程。可靠性测试包括高低温存储、高低温工作、恒定湿热、振动冲击、盐雾等。这些测试要在开模和批量之前做,因为一旦结构模具开了,再改板卡尺寸就非常被动。
认证方面,国内做3C,出口欧洲做CE,出口北美做FCC。EMC设计不能在认证前才开始,必须在原理图阶段就考虑:电源输入端放共模电感、Y电容,对外接口加防护和滤波,PCB布局做好分区,走线控制好回流路径。如果等到认证测试失败再整改,成本会翻好几倍。
试产阶段主要看三件事:
- 贴片良率:有没有虚焊、立碑、漏贴,不良率为什么不达标。
- 测试工装:产线测试程序是否覆盖所有关键功能项,测试时间是否太长。
- BOM确认:元器件封装、精度、品牌替代料是否与设计一致,替代料是否经过验证。
试产还要特别注意物料版本管理。硬件工程师最容易在BOM上栽跟头:测试阶段用的是A版本电容,量产采购改成B版本,参数看起来一样,但ESR和温度特性不同,就可能引发稳定性问题。我在项目里严格要求所有物料变更必须有ECN流程,并且经过设计验证才能切换。这个习惯可以帮你挡掉很多线上事故。
6.4 量产移交文档:从个人经验变成团队资产
批量生产前,硬件工程师需要交付一整套文档,包括:最终版原理图、PCB源文件、Gerber、BOM、贴片坐标文件、硬件设计说明、调试指南、测试规范、维修手册。这些文档不光是给产线看的,也是给未来的自己看的。三个月后客户反馈一个问题,你如果还能通过文档快速定位到是哪个器件哪个走线的问题,就说明你的流程已经很成熟了。
我在做完这个项目后,感受最深的一点是:硬件开发流程不是一张流程图,而是一连串的检查清单和决策记录。每次踩坑、每次改版,都应该记录下来。以后再遇到类似的问题,翻一下过去的记录,能省掉非常多的时间。
最后给准备入行或者刚入行的硬件工程师一个建议:不要只盯着原理图和PCB,多去产线待一待,多跟软件工程师聊聊,多在示波器前面蹲一蹲。硬件这个行业,经验都是时间堆出来的,老老实实按流程走,把每一步做扎实,你的板子自然会替你说话。