当前位置: 首页 > news >正文

嵌入式开发之STM32学习笔记day21

STM32F103C8T6  WDG看门狗

1 WDG简介

        看门狗(Watchdog)是一种硬件或软件机制,用于监控程序的运行状态。当程序因设计漏洞、硬件故障、电磁干扰等原因出现卡死或跑飞现象时,看门狗能够及时复位程序,避免程序长时间罢工,从而保证系统的可靠性和安全性。例如,在嵌入式系统中,看门狗可以有效防止设备因软件故障而停止工作,确保设备的持续运行。

        看门狗本质上是一个定时器。当程序正常运行时,需要定期执行“喂狗”操作,即重置看门狗的计数器。如果在指定的时间范围内没有执行喂狗操作,看门狗硬件电路会自动产生复位信号,将系统复位到初始状态。例如,如果看门狗的超时时间设置为1秒,而程序在1秒内没有执行喂狗操作,看门狗就会触发复位。

        STM32微控制器内置了两种类型的看门狗:独立看门狗(IWDG)窗口看门狗(WWDG)

独立看门狗(IWDG):特点:独立工作,对时间精度要求较低,适合对复位时间要求不严格的场景。
应用场景:常用于一般嵌入式系统中,如智能家居设备、工业控制器等,这些设备对复位时间的精确性要求不高,但需要确保设备在出现故障时能够及时复位。
工作原理:IWDG通过一个内部时钟源独立运行,即使主系统时钟出现故障,IWDG仍然可以正常工作。它通过一个计数器来检测程序是否正常运行,如果计数器溢出,就会触发系统复位。窗口看门狗(WWDG):特点:要求看门狗在精确的时间窗口内起作用,对时间精度要求较高。
应用场景:适用于对复位时间精度要求较高的场景,如航空航天设备、汽车电子等,这些设备需要在精确的时间窗口内完成复位操作,以确保系统的安全性和可靠性。
工作原理:WWDG通过一个外部时钟源运行,需要在特定的时间窗口内进行喂狗操作。如果喂狗操作超出了这个时间窗口,WWDG就会触发复位。这种机制可以有效防止程序在短时间内多次复位,同时也能确保在规定时间内完成复位操作。

2 IWDG独立看门狗框图

        图中展示了独立看门狗(IWDG)的框图,该看门狗由STM32微控制器提供。图中显示,IWDG由几个关键部件组成:预分频寄存器(IWDG_PR)状态寄存器(IWDG_SR)重装载寄存器(IWDG_RLR)键寄存器(IWDG_KR)

  • 预分频器:由一个8位的预分频器和一个40kHz的LSI(低速内部)时钟源组成,用于调整看门狗计数器的时钟频率。
  • 12位递减计数器:这是看门狗的核心部件,它从重装载寄存器(IWDG_RLR)中加载一个初始值,并开始递减计数。当计数器达到0时,如果程序没有及时“喂狗”(即重置计数器),就会触发IWDG复位,从而重启系统。
  • 重装载寄存器:用于设置递减计数器的初始值。在写入新的值之前,需要通过键寄存器(IWDG_KR)进行解锁。
  • 键寄存器:用于解锁重装载寄存器,以便写入新的重装载值。这增加了系统的安全性,防止意外修改看门狗的设置。

        图中还指出,看门狗功能处于VDD供电区,这意味着即使在停机和待机模式下,看门狗仍然可以正常工作。这种设计确保了系统的可靠性,即使在低功耗模式下也能监控程序的运行状态。

3 IWDG键寄存器

写入键寄存器的值

作用

0xCCCC

启用独立看门狗

0xAAAA

IWDG_RLR中的值重新加载到计数器(喂狗)

0x5555

解除IWDG_PRIWDG_RLR的写保护

0x5555之外的其他值

启用IWDG_PRIWDG_RLR的写保护

  • 键寄存器本质上是控制寄存器,用于控制硬件电路的工作
  • 在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率

4 IWDG超时时间

超时时间:TIWDG = TLSI × PR预分频系数 × (RL + 1)

其中:TLSI = 1 / FLSI

案例计算:

        预分频系数为4,输入时钟为40kHz

        TIWDG = 1/40000 × 4 × (RL + 1) = 0.1ms × (RL + 1) = [0.1ms, 409.6ms]

5 WWDG窗口看门狗框图

        上图展示了窗口看门狗的框图,它由配置寄存器(WWDG_CFR)、控制寄存器(WWDG_CR)、预分频器(WWDGTB)、递减计数器(CNT)、比较器和复位逻辑组成。WWDG通过PCLK1(来自RCC时钟控制器)驱动,预分频器对时钟进行分频,递减计数器从控制寄存器(WWDG_CR)加载初始值并开始递减。当计数器值低于窗口寄存器(WWDG_CFR)设置的窗口值时,比较器会触发,若此时没有及时喂狗(即写入WWDG_CR),则产生复位信号,重启系统。这种机制确保了程序在指定的时间窗口内运行,防止程序卡死或跑飞,提高了系统的可靠性。

6 WWDG工作特性

  • 递减计数器T[6:0]的值小于0x40时,WWDG产生复位
  • 递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位
  • 递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位
  • 定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位

 7 WWDG超时时间

超时时间:

        TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1)

窗口时间:

        TWIN = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] - W[5:0])

        其中:TPCLK1 = 1 / FPCLK1

案例计算:

        实现超时时间为50ms, 窗口时间为30ms

        TPCLK1 = 1/36MHz

        50 = 1/36000 × 4096 × 8 × (T[5:0] + 1)

        T[5:0] = 54

        30= 1/36000 × 4096 × 8 × (54 - W[5:0])

        W[5:0] = 33

8 IWDG和WWDG对比

IWDG独立看门狗

WWDG窗口看门狗

复位

计数器减到0

计数器T[5:0]减到0后、过早重装计数器

中断

早期唤醒中断

时钟源

LSI40KHz

PCLK136MHz

预分频系数

483264128256

1248

计数器

12

6位(有效计数)

超时时间

0.1ms~26214.4ms

113us~58.25ms

喂狗方式

写入键寄存器,重装固定值RLR

直接写入计数器,写多少重装多少

防误操作

键寄存器和写保护

用途

独立工作,对时间精度要求较低

要求看门狗在精确计时窗口起作用

相关文章:

  • 软件功能模块归属论证方法
  • C++中的概念(Concepts)
  • C++.OpenGL (11/64)材质(Materials)
  • Spring Boot 实现流式响应(兼容 2.7.x)
  • 【Redis】哨兵模式
  • 【C语言】统计孪生素数对高效解法
  • vsCode使用本地低版本node启动配置文件
  • 1panel面板中部署SpringBoot和Vue前后端分离系统 【图文教程】
  • 解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
  • 氛围编程时代来临:本地化智能分析破解老项目 AI 编程困局
  • 【Go语言基础【6】】字符串格式化说明
  • 保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
  • MySQL体系架构解析(二):MySQL目录与启动配置全解析
  • 命令行以TLS/SSL显式加密方式访问FTP服务器
  • for AC500 PLCs 3ADR025003M9903的安全说明
  • 【Algo】常见组合类数列
  • dify官方离线安装打包插件脚本,改造成ubuntu或者debain系统可用
  • 使用vtk8.2.0加载dicom图像
  • 离散傅里叶级数(DFS)的用途
  • 深入了解JavaScript当中如何确定值的类型
  • 凯里建设局网站/长沙百家号seo
  • 福田做商城网站建设哪家效益快/站长之家工具
  • 王也天的个人资料/网络seo
  • 广州建站公司兴田德润活动/优化大师电脑版官方免费下载
  • google做网站框架/中国网民博客 seo
  • 福安做网站/在线检测网站安全