0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂019 | 如何使用AT32 MCU WDT和WWDT

雅特力 AT32 MCU 2022-08-05 10:30 次阅读

看门狗简介

看门狗通常用来提高系统的稳定性。当因为一些特殊的情况导致程序跑飞,或者运行逻辑错误,而没 有及时喂狗时,看门狗会将MCU重新复位,以达到自动从异常中恢复的效果。建议用户在所有应用中都使用看门狗,以提高系统稳定性。

AT32单片机有两个看门狗:看门狗(WDT)和窗口看门狗(WWDT):

  • 看门狗(WDT):一个12位的递减计数器,当计数器从某个值递减到0的时候,系统会产生复位,如果在计数器递减到0之前刷新了递减计数器,那么就不会产生复位。
  • 窗口看门狗(WWDT):一个7位的递减计数器,当计数器从某个值递减到0x3F的时候,系统会产生复位,如果在规定时间刷新了计数器(窗口时间内),那么就不会产生复位。

各个型号差异

各型号的窗口看门狗(WWDT)相同,程序兼容。

各型号的看门狗(WDT)基本功能相同,只是各个型号之间,可能去掉了更高级的窗口功能或者低功耗下可选的停止运行功能,其余功能相同并且程序兼容。

表1. 各型号看门狗(WDT)差异314bc356-1439-11ed-9ade-dac502259ad0.png√:表示支持该功能,且功能相同。×:表示不支持该功能。

使用场景对比

看门狗(WDT)和窗口看门狗(WWDT)作为两种不同类型的看狗,有着不用的适用环境。图1. WDT与WWDT使用场景对比317cdebe-1439-11ed-9ade-dac502259ad0.png

特点对比

图2. WDT与WWDT特点对比31b5b1e4-1439-11ed-9ade-dac502259ad0.png

看门狗WDT

寄存器访问

状态寄存器看门狗功能位于两个不同的区域,寄存器部分位于1.2V电压域,计数逻辑部分位于VDD电压域,所以看门狗能够在SLEEP、DEEPSLEEP、STANDBY模式下运行。

对看门狗寄存器的写操作位于1.2V电压域,所以当写了寄存器之后,还需要将寄存器值同步到VDD电压域。每一个寄存器都有一个同步标志指示同步操作是否完成。每一次同步时间最多需要4个LICK时钟,大约125us。当写了寄存器之后对应的同步标志自动置1,当同步完成了之后标志自动清0,在同步标志清零之前,不允许再写此寄存器。

图3. 看门狗框图31cf158a-1439-11ed-9ade-dac502259ad0.png

RLDF:当该位为1时,表示重装载值的同步正在进行中;当为0时,表示该过程执行完成。

DIVF:当该位为1时,表示预分频器值的同步正在进行中;当为0时,表示该过程执行完成。WINF:当该位为1时,表示窗口值的同步正在进行中;当为0时,表示该过程执行完成。

标志获取函数:

31f5bf00-1439-11ed-9ade-dac502259ad0.png

寄存器写保护

看门狗寄存器受到写保护,在写寄存器前需要先解锁写保护,写命令寄存器CMD=0x5555解锁写保护。当写一个其他值,将重新开启读保护。受读保护的寄存器如下表所示:表2. 看门狗寄存器321a22a0-1439-11ed-9ade-dac502259ad0.png

寄存器解锁写保护函数:

322ed4a2-1439-11ed-9ade-dac502259ad0.png

时钟结构

图4. 看门狗时钟324f3044-1439-11ed-9ade-dac502259ad0.png

看门狗计数器由LICK时钟驱动,经过8位的预分频器得到递减计数器时钟。LICK是内部RC时钟,其典型值为40kHz,范围为30kHz~60kHz之间(详情请见对应型号的数据手册)。所以超时时间也是在一定区间内,使用时应注意在超时时间配置上应该留有余量,如果需要获得较为精确的看门狗超时时间,可以先通过定时器测量出LICK频率,然后再根据实际的LICK频率计算超时时间。

通过寄存器DIV[2:0]配置配置不同的预分频值,可配置预分频值为4、8、16、32、64、128、256。

3267200a-1439-11ed-9ade-dac502259ad0.png

分频设置函数:

3273c4a4-1439-11ed-9ade-dac502259ad0.png

计数器

看门狗的计数器是一个12位的递减计数器,最大值为0xFFF。当开启看门狗后,计数值将从设定的值开始递减,当递减到0时,产生系统复位。图5. 看门狗重载328785ca-1439-11ed-9ade-dac502259ad0.png

计数值通过重载寄存器RLD设置,在分频值确定的情况下,该值的大小决定了看门狗复位的时间长 短,每当往命令寄存器WDT_CMD写入0xAAAA时,该寄存器的值便会更新到递减计数器中(此操作通常称为喂狗),喂狗的操作需要在计数器递减到0之前进行,不然会发生复位。

看门狗复位时间计算如下:

329f1974-1439-11ed-9ade-dac502259ad0.png

表3. 看门狗复位时间(LICK=40kHz)

32ba5766-1439-11ed-9ade-dac502259ad0.png

重载值设置函数:

32df13e4-1439-11ed-9ade-dac502259ad0.png

重载看门狗计数器(喂狗)函数:

32ee28fc-1439-11ed-9ade-dac502259ad0.png

窗口功能

当WIN[11:0]设置为非默认值(0xFFF)将开启窗口功能。当在计数值大于窗口值时重载计数器值将会产生系统复位,例如将WIN值设置成800时允许重载的窗口时间如下图所示。图6. 窗口功能32fd6a42-1439-11ed-9ade-dac502259ad0.png

窗口设置函数:

3328da9c-1439-11ed-9ade-dac502259ad0.png

低功耗停止计数

看门狗能够在SLEEP、DEEPSLEEP、STANDBY模式下运行,用户可选择进入DEEPSLEEP、STANDBY模式后计数器是否停止计数,可由用户系统数据区中的nWDT_DEPSLP、nWDT_STDBY位配置。

如果设置了停止计数,当进入了DEEPSLEEP、STANDBY模式后,看门狗计数器停止递减,意味着看门狗在这两种低功耗模式下不会发生复位,当从这两种模式唤醒后,计数器从进入时的值继续递减。

图7. 低功耗停止计数功能

3345690a-1439-11ed-9ade-dac502259ad0.png

用户系统数据擦除函数:

336576c8-1439-11ed-9ade-dac502259ad0.png

用户系统数据配置函数:

3385c1ee-1439-11ed-9ade-dac502259ad0.png

低功耗停止功能使用示例:

3398c41a-1439-11ed-9ade-dac502259ad0.png

启动看门狗

看门狗启动方式分为硬件启动和软件启动,当看门狗启动了之后不能被关闭,除非发生复位。

软件启动方式

向命令寄存器写入0xCCCC,启用看门狗。

看门狗软件使能函数:

33b817b6-1439-11ed-9ade-dac502259ad0.png

硬件启动方式

硬件启动则需通过配置用户系统数据区的nWDT_ATO_EN位来实现,使能硬件看门狗后,看门狗将在上电复位后自动开始运行。

硬件启动看门狗使用示例:

33de80c2-1439-11ed-9ade-dac502259ad0.png

使用方法

看门狗一般用于检测程序跑飞或者死循环,比如一个正常的程序运行完的时间是10ms,可以设置看门狗超时的时间为20ms,当程序运行完便立即进行喂狗操作,这样便不会产生复位,超过20ms还未喂狗时,说明产生了故障,此时会复位MCU。

例如:要设置WDT超时时间为20ms,那么可以设置预分频值为4,计数值为200

33fc0926-1439-11ed-9ade-dac502259ad0.png

配置步骤:1. 禁止寄存器写保护3418b5e4-1439-11ed-9ade-dac502259ad0.png

2. 设置预分频值为4

3427531a-1439-11ed-9ade-dac502259ad0.png

3. 设置重载值为200

34390f9c-1439-11ed-9ade-dac502259ad0.png

4. 启用看门狗

344945ec-1439-11ed-9ade-dac502259ad0.png

5. 在应用程序中重载计数器

345ec7aa-1439-11ed-9ade-dac502259ad0.png

窗口看门狗WWDT

窗口看门狗(WWDT)主要作用是用来检测软件逻辑是否按照预期执行,其喂狗时间是一个有上下范围内,可以通过相关的寄存器,设定其上限时间和下限时间,喂狗的时间不能过早也不能过晚(当递减计数器的值小于0x40,或者当递减计数器在窗口外被刷新时产生复位)。

时钟结构

图8. 窗口看门狗时钟346e7538-1439-11ed-9ade-dac502259ad0.png

窗口看门狗时钟由APB1时钟分频而来,由于APB1_CLK的精确性,因此窗口看门狗时间精度很高。APB1时钟先经过4096分频后,再送到预分频器,最后提供给7位递减计数器CNT[6:0]。可以配置不同的预分频值来获得不同的时钟,通过DIV[1:0]可配置预分频值取值范围为1、2、4、8。

348c1cdc-1439-11ed-9ade-dac502259ad0.png

分频设置函数:

34b21bda-1439-11ed-9ade-dac502259ad0.png

计数器

窗口看门狗的计数器是一个7位的递减计数器,最大值为0x7F,当开启看门狗后,计数值将从设定的值开始递减,当递减到0x3F时,产生系统复位。

34c52c16-1439-11ed-9ade-dac502259ad0.png

表4. 窗口看门狗复位时间(PCLK=72MHz)

34df690a-1439-11ed-9ade-dac502259ad0.png

计数值设置函数:

35077364-1439-11ed-9ade-dac502259ad0.png

窗口功能

窗口的值(WIN[6:0])可以自由设定,最大值为(0x7F),最小值必须大于下窗口的0x40,所以取值范围为64~127(即:0x40~0x7F);只有当递减计数器的值小于等于窗口值时,才允许刷新递减计数器,否则将会产生复位。

为了便于喂狗,应用程序也可以利用重载计数器中断(RLDIEN)进行喂狗。当递减计数器到达0x40时,则产生中断,在相应的中断服务程序中重新设置计数器。

图9. 窗口功能351ffcd6-1439-11ed-9ade-dac502259ad0.png

如上图所示当配置窗口值为0x4F时,不允许刷新的窗口为0x7F~0x50,允许刷新的窗口为0x4F~0x40。

重载标志清除函数:

3541d63a-1439-11ed-9ade-dac502259ad0.png

重载标志获取函数:

355fdeaa-1439-11ed-9ade-dac502259ad0.png

重载中断使能函数:

35819040-1439-11ed-9ade-dac502259ad0.png

窗口设置函数:

359af53a-1439-11ed-9ade-dac502259ad0.png

看门狗使能

设置WWDTEN=1使能窗口看门狗,当窗口看门狗被打开后不能被关闭,直到复位。为了避免使能看门狗后立即发生复位,在使能看门狗时,应该同时配置看门狗计数值。窗口看门狗使能函数:35bf3008-1439-11ed-9ade-dac502259ad0.png

使用方法

窗口看门狗一般用于检测逻辑运行是否正常,比如一个正常的程序执行完的时间是10ms,当程序在10ms以前执行完说明出现了逻辑错误,可以设置看门狗窗口值为9ms,当程序在9ms以前进行喂狗时,说明程序产生了故障,此时会产生一个复位。

例如:当PCLK1=36MHz时,要设置WWDT超时时间为9ms,那么可以设置预分频值为4,总的分频为 4x4096=16384。计数值为127,窗口值为108,此时从计数值减到窗口值时间约为9.1ms。

35d827fc-1439-11ed-9ade-dac502259ad0.png

35fda23e-1439-11ed-9ade-dac502259ad0.png

所以允许喂狗时间为9.1~29.1ms,不允许喂狗时间为0~9.1ms。

配置步骤:

1. 开启窗口看门狗APB1时钟3611d024-1439-11ed-9ade-dac502259ad0.png

2. 设置预分频值为4,总的分频为4096x4=16384

36226b28-1439-11ed-9ade-dac502259ad0.png

3. 设置窗口值为108

36469110-1439-11ed-9ade-dac502259ad0.png

4. 启用看门狗

3656c3fa-1439-11ed-9ade-dac502259ad0.png

5. 在应用程序中重载计数器

366fe880-1439-11ed-9ade-dac502259ad0.png

备注:需要在0x3F<递减计数器<=窗口值执行

案例 看门狗WDT使用

功能简介

演示看门狗(WDT)功能使用。

资源准备

1) 硬件环境:对应产品型号的AT-START BOARD

2) 软件环境

project\at_start_f4xx\examples\wdt\wdt_reset

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

软件设计

1) 配置流程

  • 初始化看门狗
  • 在主程序中喂狗

2) 代码介绍

  • main函数代码描述

367ed7be-1439-11ed-9ade-dac502259ad0.png

实验效果

  • 正常运行时看门狗不会复位,当按下按键后,停止喂狗,导致MCU复位。
  • 复位后,如果检查到是看门狗复位则LED4点亮,否则LED4不亮。

案例 窗口看门狗WWDT使用

功能简介

演示窗口看门狗(WWDT)功能使用。

资源准备

1) 硬件环境:对应产品型号的AT-START BOARD

2) 软件环境

project\at_start_f4xx\examples\wwdt\wwdt_reset

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

软件设计

1) 配置流程

  • 初始化窗口看门狗
  • 在主程序中喂狗

2) 代码介绍

  • main函数代码描述

36b4dee0-1439-11ed-9ade-dac502259ad0.png

实验效果

  • 正常运行时窗口看门狗不会复位,当按下按键后,停止喂狗,导致MCU复位。
  • 复位后,如果检查到是窗口看门狗复位则LED4点亮,否则LED4不亮。

关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G物联网、消费、商务及工控等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17453

    浏览量

    354158
收藏 人收藏

    评论

    相关推荐

    《DNK210使用指南 -CanMV版 V1.0》第十七章 machine.WDT类实验

    第十七章 machine.WDT类实验 在上一章实验中,简单介绍了machine模块以及machine模块中的部分函数,本章将介绍machine模块中的WDT类,即看门狗类。通过本章的学习,读者将
    发表于 10-15 14:32

    STM32转AT32代码转换

    1.引言在嵌入式开发中,我们经常会遇到更换单片机芯片的事情,若芯片是同一厂家的还好说,若是不同厂家的则需要重新写,重新调,重新去学习其底层驱动程序,比较费时费力。如:ST32转AT32、ST32转
    的头像 发表于 09-28 08:09 439次阅读
    STM32转<b class='flag-5'>AT32</b>代码转换

    单片机开发:使用内部看门狗定时器(WDT)还是外挂看门狗芯片?

    WDT的优点是,可以通过最大程度地减少额外组件的成本来节省资金,并且可以使用更小的PCB。由于大多数现代MCU都配有内部WDT,这当然是个不错的选择,可以节约成本。 但是,如果内部WDT
    发表于 09-25 13:46

    AT32讲堂088 | 雅特力AT32F402/F405时钟配置

    简介时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文档就着重针对各系列的情况来详细
    的头像 发表于 09-15 08:08 689次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>088 | 雅特力AT32F402/F405时钟配置

    AT32讲堂087 | 雅特力AT32 IDE快速入门指南

    新建项目新项目向导AT32ID提供支持雅特力MCU的C语言项目模板,方便用户快速创建项目。菜单栏【File】>【New】>【CProject】。新建项目向导的对话框将出现。在对
    的头像 发表于 09-15 08:08 674次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>087 | 雅特力<b class='flag-5'>AT32</b> IDE快速入门指南

    基于雅特力AT32 MCU的洗衣机电机控制驱动方案,解锁智能家居新体验

    配置、超薄嵌入、极致静音体验以及衣物护理功能作为产品竞争力的核心要素,同步响应行业政策对能效要求的提升,这一系列要求无疑对电机控制技术提出了更高的挑战。MCU作为
    的头像 发表于 09-15 08:07 746次阅读
    基于雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的洗衣机电机控制驱动方案,解锁智能家居新体验

    雅特力AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制器系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 784次阅读
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的随机数生成

    AT32讲堂085 | 雅特力AT32 MCU HICK时钟校准

    简介AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),其本质就是内置于芯片的RC振荡器。在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟
    的头像 发表于 08-30 12:26 919次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK时钟校准

    中软国际受邀出席长沙数据大讲堂并发表演讲

    7月26日下午,由长沙市数据资源管理局主办的“长沙数据大讲堂”在长沙市综合指挥中心举行,本次讲堂的主题为《新时代的数字政府建设运营,构建高质量政务数据》。本次数据大讲堂邀请了中软国际副总裁、AIGC
    的头像 发表于 07-30 10:10 451次阅读

    TPD7S019用于VGA端口的7通道集成ESD解决方案

    电子发烧友网站提供《TPD7S019用于VGA端口的7通道集成ESD解决方案.pdf》资料免费下载
    发表于 07-10 10:39 0次下载
    TPD7S<b class='flag-5'>019</b>用于VGA端口的7通道集成ESD解决方案

    雅特力携多款AT32 MCU新品与应用方案亮相2024慕尼黑上海电子展

    AT32MCU与应用方案齐亮相,呈现了多款电机控制、工业控制、汽车电子、智能家居、消费、商务,及新能源等应用方案。现场人流攒动、氛围热烈!多元产品布局助力产业升级
    的头像 发表于 07-09 08:15 795次阅读
    雅特力携多款<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>新品与应用方案亮相2024慕尼黑上海电子展

    如何在雅特力AT32 MCU上创建IAP应用程序

    概述AT32CANIAP快速使用方法使用CAN进行IAP升级,此示例使用PC上位软件(IAP_Programmer.exe)通过一个USB转CAN的桥接设备和目标板进行通信,IAPDemo和桥接设备默认CAN波特率使用500K。如下是连接示意图:PC通过USB连接USBtoCANBridge(使用AT-START实现一个转接设备,代码参考usb_vcp_br
    的头像 发表于 05-20 08:15 1297次阅读
    如何在雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上创建IAP应用程序

    雅特力AT32 MCU通过IEC 60730功能安全认证,为家电产品提供安全保障

    ‍‍近日,雅特力AT32MCU安全库顺利通过IEC60730功能安全认证,为家电产品提供安全质量保证。国际公认的测试、检验和认证机构SGS为雅特力科技颁发了IEC60730认证证书,彰显了雅特力
    的头像 发表于 05-20 08:15 693次阅读
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>通过IEC 60730功能安全认证,为家电产品提供安全保障

    8KB Flash ROM的AD型MCU—AiP8F1208介绍

    AiP8F1208 是一款 AD 型 8051 内核 MCU,内置 8KB Flash ROM、256B SRAM、256B Data EEPROM,内部集成 T0/1、PWM、12bit ADC、WDT、UART。
    发表于 04-26 16:34 612次阅读
    8KB Flash ROM的AD型<b class='flag-5'>MCU</b>—AiP8F1208介绍

    近期晶沛新研发的LPFO-019B系列新品技术分析

    近期晶沛电子为LPFO-019B产品系列新研发了一款多通道光纤滑环,通道数量可达8-18通道,8-18通道数中可任意选择。
    的头像 发表于 04-23 09:58 415次阅读
    近期晶沛新研发的LPFO-<b class='flag-5'>019</b>B系列新品技术分析