IWDG 独立看门狗 知识详解
1. IWDG简介
独立看门狗(Independent Watchdog, IWDG),其实是一种递减计数器,是单片机的一个组成部分,主要功能是在发生软件故障或程序跑飞时,独立看门狗产生复位信号,使器件复位。
IWDG的时钟由独立的RC振荡器LSI提供,即使主时钟发生故障它仍然有效,非常独立。LSI根据温度和工作场合情况会有一定的漂移,所以IWDG的定时时间不是非常准确,只适用于对时间精度要求比较低的场合。
2. IWDG功能框图解析
(1)预分频寄存器IWDG_PR
IWDG一般不需要高频的时钟,所以通过预分频寄存器将LSI进行分频,分频可以获得更广泛的时间间隔。如fLSI=40KHz,如果预分频寄存器配置为4分频,那么分频后的时钟频率为10KHz。
(2)状态寄存器IWDG_SR
只读寄存器,由硬件置位和清零,用来指示PR、RLR等寄存器的值正在更新。为0时才可以重新改写相应的PR或RLR的值。
(3)重载寄存器IWDG_RLR
装载着要刷新到计数器的值,这个值的大小决定了IWDG的溢出时间。当键寄存器中写入0xAA时,刷新IWDG,重载寄存器中的值赋给递减计数器。
计数器在一定频率的时钟下做递减操作,如果减到0时仍没有“喂狗”,则IWDG会超时引发系统复位,让程序重新启动运行。如果在计数器减到0之前刷新了计数器的值的话,就不会产生复位信号。
(4)键寄存器IWDG_KR
向键寄存器中周期性的写入0xAA可以刷新IWDG计数器,俗称喂狗,否则当递减计数器计数到 0 时会产生系统复位。
向键寄存器中写入0x55可以解除预分频寄存器、重载寄存器等的写保护。
写入 0xCCCC 启动独立看门狗(也可以通过选项字节在上电的时候就启动独立看门狗)。
键寄存器需要依次配置CC,55,与AA,也就是先启动IWDG,再解锁,然后定期刷新。
3. IWDG启动方法
(1)软件启动
当芯片上电复位后,如果用户没有修改选项字节的参数,那么IWDG的资源默认由软件程序启用。如果软件程序启用IWDG,需要向键寄存器(IWDG_KR)中写入(0xCC)H来启用,一旦使能了IWDG,除了复位之外,不能被关闭。
(2)硬件启动(选项字节)
若用户需要硬件启用IWDG,可以通过修改选项字节中的相应位来实现。如果通过选项字节配置为硬件启动IWDG后,在单片机上电时独立看门狗资源就已经启动了,不再需要用户向键寄存器中写入(0xCC)H。
两种启动方式导图:
4. IWDG超时溢出时间计算
P 中+2是因为最小为4分频,即PR[2:0]为0。
R 中+1是因为要表示1~256个数,RLR[7:0]表示0~255。
T的单位是秒s;f的单位是Hz。
例:
LSI为2KHz,分频系数为8分频,IWDG_RLR数值为50,计算超时时间?
