一句话
功能看门狗(FWD)是「对暗号」:芯片随机出题(0~F),MCU 必须按固定映射表在心跳周期内按顺序回 4 个字节——机械式喂狗在这里完全无效,必须「活的 MCU 真的在算」。
工作流程
- 芯片出题:题目存于 FWDRSPC 寄存器(可读),同时心跳计数器开始跑
- MCU 读题,查映射表得到 4 个答案字节 RESP3/RESP2/RESP1/RESP0
- 前 3 个字节依次写入 FWDRSP 寄存器
- 最后 1 个字节写入 FWDRSPSYNC(同步寄存器)——写对它心跳计数器才归零
- 四个字节全对且没超时 → 有效触发,错误计数 -1,出新题
答案映射表(节选)
| 题目 | RESP3 | RESP2 | RESP1 | RESP0 |
|---|---|---|---|---|
| 0 | FF | 0F | F0 | 00 |
| 1 | B0 | 40 | BF | 4F |
| 2 | E9 | 19 | E6 | 16 |
| … | ||||
| F | 01 | F1 | 0E | FE |
映射关系固定在手册里,但顺序必须严格 RESP3→RESP0,颠倒、缺漏都算无效。
四种典型失败(配手册时序图)
| 情形 | 结果 |
|---|---|
| 全对且同步写对 | ✅ 有效,心跳归零,出新题 |
| 答案字节错误 | ❌ 计数 +2,心跳清零但不出新题 |
| 漏了一个应答 | ❌ 心跳不归零,继续数到超时才算错 |
| 忘写 FWDRSPSYNC(最后一字节写错寄存器) | ❌ 答案全对也不归零,等心跳超时 |

配置与计数
- 心跳周期 WDHBTP:50~1600 个看门狗周期,SPI 可配
- 错误计数 FWO 与窗口看门狗完全独立:有效 -1、无效 +2,超阈值(FWDETHR)→ 回 INIT
- 默认关闭,需在保护寄存器解锁后写 FWDEN=1 使能(第 18 篇)
双狗并用
WWD 和 FWD 互相独立、可同时开:WWD 抓「节奏不对」,FWD 抓「逻辑没在跑」。两套独立计数器,任何一个超限都触发安全动作——ASIL-D 的底气就在这种冗余里。
自测一下
四个答案全对,但最后一个写进了 FWDRSP 而不是 FWDRSPSYNC,这次喂狗有效吗?
答案:不算有效触发。心跳计数器不会被归零,芯片继续等真正的同步应答,最终心跳超时计一次无效(+2)——「同步」必须通过 FWDRSPSYNC 完成。