一句话

功能看门狗(FWD)是「对暗号」:芯片随机出题(0~F),MCU 必须按固定映射表在心跳周期内按顺序回 4 个字节——机械式喂狗在这里完全无效,必须「活的 MCU 真的在算」。

工作流程

  1. 芯片出题:题目存于 FWDRSPC 寄存器(可读),同时心跳计数器开始跑
  2. MCU 读题,查映射表得到 4 个答案字节 RESP3/RESP2/RESP1/RESP0
  3. 前 3 个字节依次写入 FWDRSP 寄存器
  4. 最后 1 个字节写入 FWDRSPSYNC(同步寄存器)——写对它心跳计数器才归零
  5. 四个字节全对且没超时 → 有效触发,错误计数 -1,出新题

答案映射表(节选)

题目RESP3RESP2RESP1RESP0
0FF0FF000
1B040BF4F
2E919E616
…
F01F10EFE

映射关系固定在手册里,但顺序必须严格 RESP3→RESP0,颠倒、缺漏都算无效。

四种典型失败(配手册时序图)

情形结果
全对且同步写对✅ 有效,心跳归零,出新题
答案字节错误❌ 计数 +2,心跳清零但不出新题
漏了一个应答❌ 心跳不归零,继续数到超时才算错
忘写 FWDRSPSYNC(最后一字节写错寄存器)❌ 答案全对也不归零,等心跳超时

正确问答时序 答案错误时序

配置与计数

  • 心跳周期 WDHBTP:50~1600 个看门狗周期,SPI 可配
  • 错误计数 FWO 与窗口看门狗完全独立:有效 -1、无效 +2,超阈值(FWDETHR)→ 回 INIT
  • 默认关闭,需在保护寄存器解锁后写 FWDEN=1 使能(第 18 篇)

双狗并用

WWD 和 FWD 互相独立、可同时开:WWD 抓「节奏不对」,FWD 抓「逻辑没在跑」。两套独立计数器,任何一个超限都触发安全动作——ASIL-D 的底气就在这种冗余里。