一句话

看门狗配置、ERR 监控、SS2 延时、VSTBY 开关这些「人命关天」的寄存器(0x04~0x0A)带写保护:要先连发 4 字节解锁密码,改完再发 4 字节上锁——防止程序跑飞时配置被撕票。

哪些寄存器受保护

寄存器内容
SYSPCFG0/1VSTBY 使能、SS2 延时、ERR 监控配置
WDCFG0/1看门狗使能/触发源/错误阈值
FWDCFG功能看门狗心跳周期
WWDCFG0/1窗口看门狗 T_MIN / T_MARGIN

解锁与上锁序列

解锁(允许写):连续向 KEY 寄存器(0x03)写 0xAB → 0xEF → 0x56 → 0x12
上锁(配置生效):连续向 KEY 寄存器(0x03)写 0xDF → 0x34 → 0xBE → 0xCA

三条铁律:

  1. 四个字节必须连续写,中间插任何其他 SPI 读/写操作 → 序列作废、报中断、从头再来
  2. 上锁成功后,所有「请求寄存器」的值一次性生效到实际配置——不支持只改一半
  3. 上锁后内部有最长 60μs 的配置生效时间,紧接着的新命令要等一等

写完必须回读验证

受保护寄存器读回来的是按位取反的数据。验证方法:

1. 写入期望值 V
2. 读回数据 R
3. 计算 R XOR V
4. 结果 == 0xFF → 写对了

这个「取反回读 + 异或校验」设计让「写没写进去、写得对不对」一目了然——又是功能安全风格的双向确认。

驱动模板

正确的上电配置流程:INIT 态 → 解锁 → 写看门狗/ERR/SS2 配置 → 回读 XOR 校验 → 上锁 → 等 60μs → 发「go to NORMAL」状态请求(第 19 篇的状态切换命令也要成对验证)。