一句话
监控电路本身坏了怎么办?ABIST(模拟内建自检)让芯片人为注入过压/欠压故障,验证每个比较器和报警链路都是好的——「监控器也要被监控」。
三档测试范围
| 档位 | 测什么 | 现象 |
|---|---|---|
| 仅比较器 | 比较器输出对不对 | 故障注入时间短于去抖时间,不真正触发安全动作 |
| 比较器 + 去抖逻辑 | 报警链路前半段 | 注入持续超过去抖时间,真正置标志 |
| 完整监控链 | 比较器→去抖→输出全链路 | SS1/SS2 真的拉低(须在 NORMAL 态测)或 nINT 真的拉低 |
执行流程(MCU 配合)
- 使能要测的那路 LDO(没在用的比较器不用测)
- 写 ABIST_SELECT0/1/2 选择要测的比较器
- 写 ABIST_CTRL0:选安全路径还是中断路径、测试档位、单个还是序列
- 置全局启动位,芯片开始「注入故障」
- 轮询启动位:清零 + 收到中断 = 测试完成
- 读选择寄存器:选中的位被自动清零=该比较器合格;保持置位=它没通过
整个过程 MCU 还要继续喂狗、伺服 ERR——否则看门狗先报警,把测试结果搅浑。
完整链路测试的代价
在 NORMAL 态测「安全关断全链路」时,芯片会真的拉低 SS1/SS2 并自动切到 WAKE 态(不触发复位)。所以这类测试要么安排在安全时机,要么在 INIT/WAKE 态做(此时安全信号本来就低)。
PROG:烧录调试模式
MCU 烧录/调试时 obviously 喂不了狗。拉高 PROG 脚(或 SPI 写 0x3C[7]=1)进入程序模式:
- 初始化定时器停止
- 看门狗溢出、ERR 监控故障不再拉低 nRESET
- 其他一切照旧:中断照报、状态机照切、SS1/SS2 照拉低
这个模式还能反过来当故障注入试验台:故意不喂狗,观察中断和安全路径反应,验证整条报警链。
自测一下
ABIST 测完,怎么知道是哪个比较器挂了?
答案:看 ABIST_SELECT0/1/2 里当初置位的那些 bit——测试通过的位被硬件自动清零,保持置位的位就是没通过的比较器,配合 SYSFAIL/INITERR/MONSF 状态寄存器可以精确定位。