MM32 独立看门狗(IWDG)

judy的头像
judy 发布于:周五, 03/30/2018 - 10:40 ,关键词:

一、IWDG简介

MM32 MCU内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

独立看门狗(IWDG)由专门的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

IWDG最适合应用于那些需要看门狗作为一个正在主程序外,能够完全独立工作,并且对时间精度要求低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

二、IWDG主要性能

自由运行的递减计数器

时钟由独立的振荡器提供(可在停止和待机模式下工作)
看门狗被激活后,则在计数器计数至 0x0000 时产生复位。

三、IWDG 功能描述

下图为独立看门狗模块的功能框图。

在键寄存器(IWDG_KR)中写入 0xCCCC。开始启动独立看门狗;此时计数器开始从其复位值 0xFFF递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWGD_RESET)。

无论何时,只要在键寄存器 IWDG_KR 中写入 0xAAAA, IWDG_RLR 中的值就会被重新加载到计数器,从而避免产生看门狗复位。

独立看门狗框图

独立看门狗框图

看门狗超时时间(40KHz 的输入时钟(LSI))

独立看门狗框图

此外,即使振荡器的频率是精确的,确切的时序仍然依赖于 APB 接口时钟与振荡器时钟之间的相位差,因此总会有一个完整的振荡器周期是不确定的。

IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向 IWDG_KR 寄存器中写入 0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。

状态寄存器指示预分频值和递减计数器是否正在被更新。

当微控制器进入调试模式时(CPU 核心停止),根据调试模块中的 DBG_IWDG_STOP 配置位的状态,IWDG 的计数器能够继续工作或停止。

四、独立看门狗代码配置

MM32L073系列独立看门狗初始化和启动设置:
MM32 独立看门狗(IWDG)
MM32 独立看门狗(IWDG)
MM32 独立看门狗(IWDG)
喂狗函数:
MM32 独立看门狗(IWDG)

五、实验实现窗口看门狗

测试方法:在main函数中先进行串口打印后初始和打开IWDG,然后让程序进入while(1)的死循环。

测试代码main函数如下:
MM32 独立看门狗(IWDG)

测试结果:
1、当我们在while(1)里进行喂狗操作时,串口只会进行一次打印。。
2、当我们在while(1)里不进行喂狗操作时,串口每隔大约看门狗复位的时间1.6s进行一次打印。

实验总结:实现了看门狗复位的功能。

转自:灵动微电子

围观 446