Skip to content
进阶#看门狗#IWDG#RTC#32.768kHz#低功耗#Standby

看门狗、RTC 与低功耗硬件 Watchdog / RTC / Low-Power ​

1. 设计动机 ​

<>

它们都是"系统管理"类硬件,且互相配合:产品要长期无人值守运行,就怕程序跑飞——看门狗负责在软件卡死时自动复位;要掉电保持时间,就靠 RTC(Real-Time Clock) 走时;要电池供电长续航,就得让 MCU 平时睡在低功耗模式,靠 RTC 闹钟或外部中断唤醒。

硬件上要点:看门狗用独立时钟(即使主时钟挂了也能复位)、RTC 用 32.768kHz 晶振、低功耗要把不用的时钟/外设都关掉。

2. 原理图 ​

下图是三者的硬件关系:独立看门狗由内部 LSI 驱动,超时喂狗就复位;RTC 由外部 32.768kHz 晶振驱动,负责走时与唤醒;低功耗模式停掉内核时钟,由 RTC/外部中断唤醒。

看门狗/RTC/低功耗硬件结构:IWDG 由 LSI 驱动,RTC 由 32.768kHz 晶振驱动并唤醒低功耗 MCU
看门狗/RTC/低功耗硬件结构:IWDG 由 LSI 驱动,RTC 由 32.768kHz 晶振驱动并唤醒低功耗 MCU

3. 静态分析(DC) ​

  • IWDG(Independent Watchdog):由独立内部 RC(LSI,约 32kHz)驱动,不依赖主时钟。即使主时钟故障,它仍能超时复位。
  • RTC 时钟源:LSE(外部 32.768kHz 晶振,精准)或 LSI(内部 RC,便宜但不准)。
  • 低功耗电流:Run 模式 mA 级、Stop 模式 µA 级、Standby 模式 nA~µA 级。功耗随关断程度指数下降。

4. 动态分析(AC / 瞬态) ​

  • 喂狗周期:IWDG 计数器递减到 0 前必须重新加载("喂狗"),否则产生复位。喂狗周期要远大于正常任务最长执行时间。
  • 32.768kHz 的妙处:32768=21532768=2^{15},经 15 次二分频正好得到 1Hz 秒脉冲,硬件实现简单。

5. 环路分析 ​

<>

若看门狗和主程序共用一个时钟,主时钟一旦停振,看门狗也跟着停,就复位不了了。独立 LSI 即使主时钟/软件全挂,仍在走时、到点复位。这是"独立"二字的硬件意义。

6. 元件取值与工程权衡 ​

  • 看门狗超时:按任务最坏执行时间设,留足余量;太短会误复位。
  • RTC 晶振:对时间精度敏感用 LSE 外部 32.768kHz(±20ppm);对成本敏感用 LSI。
  • 低功耗:进低功耗前关掉不用的外设时钟、未用脚设模拟态,否则电流降不下来。
  • 唤醒源:RTC 闹钟、外部中断引脚;唤醒后从复位点或断点继续。

7. 完整设计示例 ​

<>
  1. 需求:电池供电,每秒采样一次传感器,其余时间休眠。
  2. RTC:LSE 32.768kHz,设 1 秒闹钟。
  3. 流程:采数据 → 写 RTC 闹钟 → 进 Stop 模式 → RTC 闹钟唤醒 → 重复。
  4. 看门狗:开 IWDG,超时设为 2 秒(>最坏任务时间)。
  5. 功耗:Stop 模式 ~5µA,平均电流 µA 级,电池可用数年。
  6. 验算:RTC 走时准确、每秒唤醒一次、无看门狗复位。

8. 仿真与实验 ​

  • 故意不喂狗,观察 MCU 周期性复位。
  • 量 Stop 模式电流,确认降到 µA 级;若仍 mA 级,查未关的外设时钟/悬空脚。
  • 设 RTC 闹钟,验证定时唤醒。

扩展与变种电路 ​

扩展1:IWDG 与 WWDG 对比 ​

定位:两种看门狗的分工。

IWDG 任意时刻喂狗即可;WWDG 必须在时间窗口内喂
IWDG 任意时刻喂狗即可;WWDG 必须在时间窗口内喂
<>
  • IWDG:独立时钟,防程序跑飞/死机,超时即复位。
  • WWDG(窗口看门狗):由主时钟驱动,必须在"窗口"内喂狗——太早喂(说明主循环异常快)或太晚喂都复位,可抓时序错乱。
  • 工业产品常用 IWDG 兜底,安全相关加 WWDG。

取值对比:

看门狗时钟作用
IWDG独立 LSI防跑飞
WWDG主时钟抓时序异常
<>
  • 现象:正常运行也反复复位。
  • 原因:超时设得比任务最长时间还短。
  • 解决:按最坏执行时间留余量设超时。

扩展2:RTC 32.768kHz 晶振 LSE ​

定位:RTC 为什么用这个频率。

_RTC 域 OSC32_IN/OUT 接 32.768kHz 晶振与负载电容

<>
  • 32768=2^15,15 次二分频得 1Hz,硬件秒脉冲简洁。
  • 负载电容按晶振 CL 反推,常取 12.5pF。
  • LSE 功耗极低,适合 VBAT 后备供电长期走时。

取值对比:

时钟源精度功耗
LSE 外部晶振±20ppm极低
LSI 内部 RC±5%低但不准
<>
  • 现象:一天差好几秒。
  • 原因:LSI 精度 ±5%,温漂大。
  • 解决:对时间敏感用 LSE 外部 32.768kHz 晶振。

9. 常见坑与故障现象 ​

<>
  • 低功耗电流降不下来:外设时钟没关、引脚悬空。进低功耗前关时钟、固定引脚电平。
  • RTC 走时不准:用了 LSI。换 LSE 晶振。
  • 看门狗误复位:超时太短。按最坏时间设。
  • Standby 后不唤醒:唤醒源没配好。核对 RTC 闹钟/外部中断。

10. 自测题 ​

为什么 RTC 用 32.768kHz 而不是随便一个频率?

因为 32768=2^15,经 15 次二分频正好得到 1Hz 秒脉冲,硬件实现简单、功耗低。

独立看门狗为什么要用独立时钟?

这样即使主时钟停振、软件跑飞,看门狗仍靠独立 LSI 走时并超时复位,真正起到兜底作用。

11. 参考资料 ​

  • STM32 IWDG/WWDG 与 RTC 应用笔记
  • ARM Cortex-M 低功耗模式文档