电子产业一站式赋能平台

PCB联盟网

搜索
查看: 4|回复: 0
收起左侧

嵌入式软件bug不过是劣质 PCB “物理阴影” 罢了~

[复制链接]

42

主题

42

帖子

-1641

积分

限制会员

积分
-1641
发表于 6 天前 | 显示全部楼层 |阅读模式
在嵌入式开发的 “江湖” 里,总少不了戏剧性的场面。你是否见过嵌入式软件工程师 “对灯发誓”:“这个 bug 真的不是我软件造成的~”?当 ADC 采集到特定值,MCU 莫名复位,软硬件工程师瞬间开启 “甩锅模式”,一场 “罗生门” 就此上演。
这样的场景,或许每天都在各个开发团队中循环播放。那么,如何在这些 “一地鸡毛” 的实践中积累经验、吸取教训?今天就带大家直击两个极具代表性的经典案例!
1
低功耗的"电压过山车"
在一个物联网低功耗嵌入式项目中,软硬件联调顺利完成,本以为可以进入 “稳如泰山” 的稳定性测试阶段,重点测试唤醒过程。可谁能想到,单片机在唤醒几次后就突然复位!
起初,大家的目光都聚焦在软件层面,怀疑是唤醒前后相关状态的备份与恢复过程出了岔子,导致程序 “放飞自我” 跑飞了。然而,实际仿真结果却让人摸不着头脑:在复位之前,并没有触发任何异常中断,甚至连仿真器都 “罢工” 断开了连接。
直到查看复位状态寄存器,发现重新 attach target 时偶尔显示上电复位状态,大家才将怀疑的矛头转向硬件 —— 难道是唤醒过程中功率过大,电源产生了波动?用示波器监控供电部分后,真相浮出水面:每次唤醒前,电压都会出现明显跌落,而且这个跌落已经逼近 MCU 的工作电压范围临界值!

还记得硬件同事当时信誓旦旦:“每个元件的最大功率我都精确计算过,电源总功率肯定有充足裕量!” 但经过一番深入讨论,问题根源被揪了出来:供电线宽过小,等效阻抗较大,大电流通过高阻走线时产生了显著压降,导致电压概率性跌出 MCU 的最低工作电压阈值。
项目进度紧迫,只能让软件 “临时救场”。幸运的是,该 MCU 自带电压低压检测中断功能,一旦触发低压异常,就能自动将相应状态保存到 Nandflash,实现软件复位恢复状态。
与此同时,硬件部门也迅速启动第二版硬件改良计划。由于项目对 PCB 尺寸有限制且元器件众多,PCB 从 4 层板升级为 6 层板,新增了 Layer2 完整 GND 平面和 Layer4 专用 3.3V 电源层(覆铜率高达 98%)。用上嘉立创每月 2 张 6 层板免费打样券,新板子很快到位。测试效果堪称 “丝滑”,之前复杂的异常处理代码基本都成了 “无用功”,软件设计也得以大幅简化。
2
电源干扰了通信
电源干扰通信,这在嵌入式开发中堪称 “高频事故”。曾有一个工业控制器项目,采用 2M 波特率的 UART 与模块通信,使用的也是公司成熟稳定的协议,重发机制、CRC 校验一应俱全,按理说这样的 “配置” 应该稳得不能再稳。
可现实却狠狠打了脸,现场频繁收到错误报文和数据,CRC 检测也无法做到 100% 异常检出。以 CRC16 为例,对于完全随机的错误模式,未检出概率约为 0.0015% ,虽然概率看似微小,但在高速随机异常的通信过程中,却成了 “家常便饭”。没办法,只能拿出示波器一探究竟。这不看不知道,一看吓一跳!原来,负责 layout 的同事经验不足,将 UART 走线正下方设置为 DCDC 电源层,导致通信受到强烈辐射干扰,示波器监控下,UART 收发信号毛刺多得 “惨不忍睹”。

产品已经上线,无法立刻修改硬件,只能先在软件上 “打补丁”,增加多重校验机制,哪怕牺牲通信效率,也要先确保数据正确。后续,在嘉立创将两层板改为 4 层板,采用专用信号层 Layer3 作为完整 GND 平面,在 UART 走线两侧布设 0.2mm GND 铜墙作为 Guard Ring 防护,并调整线宽。新版硬件测试时,即便移除多重校验机制,通信也稳如磐石。
3
经验总结
想要让软件简洁又稳定?不妨在设计阶段就提出这些 “硬核” 要求,将潜在的 “坑” 提前填平:
1. 硬件提供 PDN 阻抗仿真报告
在项目设计初期,要求硬件团队提供电源分配网络(PDN)阻抗仿真报告,是把控电源完整性的关键。PDN 阻抗过高,会导致电源噪声增大,影响系统稳定性。通过仿真,可以提前发现电源网络中的阻抗异常点,如过孔、走线的不合理设计导致的阻抗突变。
2. 坚持关键外设要重点保护
嵌入式系统中的关键外设,如 ADC、通信模块等,是系统稳定运行的 “核心成员”,必须给予特殊 “关照”。以 ADC 为例,它对电源噪声极为敏感,轻微的电压波动就可能导致采集数据偏差。在硬件设计时,可采用独立的电源供电,并增加滤波电路,如 π 型滤波,滤除电源中的高频噪声。同时,在 PCB 布局上,将 ADC 与干扰源(如功率器件、高速数字电路)保持足够距离,减少电磁干扰。
3. 电源层与信号层相邻不可取,尺寸有限制直接上多层板
6 层板黄金架构:2 个完整电源层 + 2 个完整地层,堪称嵌入式设计的 “性价比之选”。两个完整的电源层和地层,能有效降低电源噪声和电磁干扰。电源层负责提供稳定的供电,地层作为信号的参考平面,可减少信号回流路径,降低信号串扰。
而且在 6 层板的制造工艺中,盘中孔技术和 2U''沉金加厚工艺对提升电路板性能至关重要。盘中孔通过在焊盘中心钻孔,有效节省布线空间,减少信号传输的寄生参数,极大提升信号完整性;而沉金加厚则增加了 PCB 表面金层厚度,提高电路板的耐磨性和抗氧化性,降低接触电阻,确保信号传输的可靠性与稳定性,显著延长了电路板的使用寿命。刚好这些在嘉立创6 层板制作中都是免费提供,每次打回来的6层板稳定性都非常有保障。
至于8 层板可谓是性能分水岭:可实现全阻抗控制 + 3 个专属信号层,适用于对性能要求极高的复杂系统。全阻抗控制能确保信号在传输过程中保持良好的完整性,避免信号反射、衰减等问题。三个专属信号层,可将不同类型的信号(如高速信号、低速信号、模拟信号)分开布局,减少信号之间的干扰。
在硬件同事的经验加持下,当设计满足这些 “代码友好型” 规范时,你会恍然大悟:那些曾让你彻夜难眠、抓耳挠腮的 “玄学 BUG”,不过是劣质 PCB 设计投下的 “物理阴影” 罢了!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表