嵌入式模块 之 看门狗

目录

概念

  • 看门狗 = 定时器电路

  • 组成 = 输入 + 输出

1
2
3
输入 = 喂狗 = 主控设备 => 看门狗

输出 = 复位 = 看门狗 => 主控设备
  • 效果 = 单片机系统异常 (没有喂狗) => 看门狗发送复位信号 (单片机复位)

芯片

1
具有看门狗功能和手动复位功能的超低功耗计时器
1
2
3
4
5
6
7
电压 1.8V ~ 5.5V

电流 35nA = 0.035μA

间隔 100ms 至 7200s

精度 1%

firmware-peripheral-watchdog-01.png

1
2
3
4
5
6
7
8
9
10
11
1 VDD 供电

2 GND 接地

3 DELAY/M_RST 通过调整下拉电阻的阻值 来实现不同间隔

4 DONE 输入 主控输入高电平喂狗

5 WAKE 输出 定时唤醒主控设备

6 RSTn 复位 如果主控没有喂狗 则向主控输出复位信号

开发

  • 伪代码
1
2
3
4
5
6
7
8
9
10
11
12
13
// 初始配置: 输出低电平
gpio_pin_configure_dt(&cfg->done, GPIO_OUTPUT_INACTIVE | cfg->done.dt_flags);

// 周期喂狗
while (periodic)
{
// 输出高电平: 喂狗
gpio_pin_set_dt(&cfg->done, 1);
// 延时
k_sleep(K_MSEC(100));
// 恢复低电平
gpio_pin_set_dt(&cfg->done, 0);
}

以上接口基于Zephyr GPIO

参考