4. 芯片状态异常:芯片锁死、Boot引脚错误、芯片损坏或虚焊、复位电路异常

烧录失败的原因里,芯片本身的状态问题占了很大比例。很多工程师遇到烧录失败,第一反应是查硬件连接、查驱动,折腾半天才发现——芯片早就被锁死了,或者压根没正常工作。

这一节,我把芯片状态相关的常见问题拆开来讲。你对照着排查,能省下不少时间。

核心思路: 烧录前先确认芯片“活着”且“没被锁”。这两点不满足,后面全是白费功夫。

4.1 芯片锁死:读保护与写保护

芯片锁死,说白了就是芯片内部的保护机制被触发了。最常见的是读保护(RDP)和写保护(WRP)。

我在项目中遇到过好几次,客户拿回来的板子烧录不了,一查是读保护等级被改成了最高级。芯片直接拒绝任何调试接口的访问。

4.1.1 读保护(RDP)

读保护是防止别人通过调试接口(SWD/JTAG)读取芯片内部程序。STM32 系列里,RDP 分三个等级:

等级 含义 烧录影响
Level 0 无保护 正常烧录
Level 1 禁止读Flash 无法读取,但可擦除后重新烧录
Level 2 永久锁定 不可逆,芯片报废
注意: Level 2 一旦设置,没有任何办法恢复。我见过有人误操作把量产芯片设成 Level 2,整批报废。所以量产固件里千万别写死 Level 2 的配置。

4.1.2 写保护(WRP)

写保护是保护特定Flash区域不被意外修改。如果你烧录的地址正好落在写保护范围内,烧录器会报错。

怎么判断?

  • 烧录软件提示“Write Protection Error”或“Flash Verify Failed”
  • 读出来的Flash内容全是0xFF或固定值

解决办法:

  1. 用烧录工具(如STM32CubeProgrammer)执行“Option Bytes”擦除
  2. 或者用“Full Chip Erase”清空整个Flash
  3. 如果擦除失败,检查芯片是否进入了Level 2
我的习惯: 每次烧录前,先用烧录器读一下芯片的Option Bytes。看一眼RDP等级和WRP区域,心里就有底了。这个动作花不了10秒钟,但能避免后面半小时的排查。

4.2 Boot引脚设置错误

Boot引脚决定了芯片上电后从哪里启动。很多芯片(比如STM32)有多个启动模式,通过BOOT0和BOOT1引脚的电平组合来选择。

你想想看,如果你把Boot引脚拉到了“从系统存储器启动”模式,烧录器自然找不到你的用户程序。

BOOT0 BOOT1 启动区域 说明
0 X 用户Flash 正常启动模式
1 0 系统存储器 内置Bootloader,可用于烧录
1 1 SRAM 调试用,一般不用于烧录

我曾经帮一个同事排查问题,他焊了块板子,烧录器死活连不上。我拿万用表一量,BOOT0引脚被拉到了高电平。他以为那个引脚是悬空的,结果PCB走线不小心连到了VCC。改过来就好了。

避坑指南: 量产板子上,BOOT0和BOOT1一定要用电阻固定到GND。不要悬空,不要靠外部跳线帽。悬空引脚在电磁干扰下可能误判电平,导致芯片启动模式不稳定。

4.3 芯片损坏或虚焊

这个原因听起来简单,但实际排查起来最费时间。因为虚焊和芯片损坏的表现千奇百怪。

4.3.1 虚焊

虚焊常见于手工焊接的板子,或者BGA封装的芯片。典型症状:

  • 烧录器能识别到芯片ID,但烧录到一半卡死
  • 偶尔能烧录成功,偶尔失败
  • 用手按压芯片表面,烧录成功率明显变化

怎么查?

  1. 用万用表测电源引脚对地电阻,排除短路
  2. 用示波器看SWD/JTAG引脚的波形,正常应该有连续的时钟和数据信号
  3. 用热风枪局部加热芯片,如果加热后能烧录成功,基本就是虚焊
我的经验: 遇到“时好时坏”的烧录问题,先怀疑虚焊。别急着换芯片,先补焊一遍再说。我至少有一半的“疑难杂症”是靠补焊解决的。

4.3.2 芯片损坏

芯片损坏的原因很多:电源反接、过压、静电、甚至焊接温度过高。

判断方法:

  • 芯片表面有裂纹、鼓包、烧焦痕迹
  • 电源引脚对地短路
  • 芯片严重发烫(正常工作时微温)
  • 烧录器完全无法识别芯片ID

如果确认芯片损坏,别犹豫,直接换。我曾经为了省一块钱芯片,花了两小时排查,最后发现是芯片内部LDO烧了。得不偿失。

4.4 复位电路异常

复位电路是芯片正常工作的前提。复位引脚如果被拉低,芯片就一直处于复位状态,烧录器自然连不上。

常见问题:

  • 复位引脚对地短路(焊接锡渣、PCB毛刺)
  • 复位电容漏电或短路
  • 外部复位芯片输出异常
  • 手动复位按键卡住

排查步骤:

  1. 用万用表测复位引脚电压,正常应该是高电平(VCC)
  2. 用示波器看复位引脚波形,上电时应该有一个从低到高的跳变
  3. 如果电压异常,断开外部复位电路,单独测芯片复位引脚
关键点: 复位引脚不是简单的“高电平就行”。很多芯片要求复位信号保持低电平至少几个毫秒,然后快速拉高。如果上升沿太慢,芯片可能无法正常启动。

我记得有一次,客户说他们的板子批量烧录时,有20%的板子烧录失败。我过去一看,复位电路用的电容是10μF,但PCB布局离芯片太远,走线又细又长。上电时复位引脚上升沿被拉得很慢,芯片启动时序不对。换成1μF电容后,问题解决。

4.5 知识结构图

下面这张图把芯片状态异常的四个主要方向串起来了。你排查时按这个顺序走,效率最高。

芯片状态异常排查结构图 芯片状态异常排查结构图 芯片状态异常 芯片锁死 Boot引脚错误 芯片损坏/虚焊 复位电路异常 读保护(RDP) 写保护(WRP) BOOT0/BOOT1电平 启动模式选择 虚焊/接触不良 物理损坏/过压 复位引脚电平 上电时序 排查建议顺序 先查复位电路 → 再查Boot引脚 → 然后查芯片锁死 → 最后怀疑芯片损坏

4.6 快速排查清单

最后,我整理了一份排查清单。你遇到烧录失败时,按这个顺序过一遍,基本能覆盖90%的芯片状态问题。

步骤 检查项 工具 正常结果
1 复位引脚电压 万用表 高电平(VCC)
2 复位上电波形 示波器 低→高跳变,上升沿<1ms
3 BOOT0/BOOT1电平 万用表 BOOT0=0, BOOT1=0
4 芯片电源电压 万用表 在芯片规格范围内
5 Option Bytes状态 烧录器 RDP=Level 0, WRP未使能
6 芯片ID识别 烧录器 能读到正确的芯片ID
7 SWD/JTAG引脚波形 示波器 有连续时钟和数据信号
最后说一句: 芯片状态问题,很多时候是设计阶段埋下的坑。原理图阶段就把复位电路、Boot引脚、保护等级这些想清楚,后面烧录阶段能省很多事。我现在的习惯是,每个新板子打样回来,先不急着焊元件,先把复位电路和Boot引脚的测试点留出来。这个习惯帮我省了不少排查时间。