中科芯:CKS32F4xx系列产品窗口看门狗

发布时间:2023-03-14 09:47
作者:AMEYA360
来源:网络
阅读量:3180

  中科芯CKS32F4xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog),本文主要介绍WWDG的应用,关于IWDG的详情,请参看我们的IWDG微课堂内容。

  WWDG简介

  通过前面的课程,我们知道IWDG独立看门狗的工作原理就是一个递减计数器在LSI时钟的驱动下不断的往下递减计数,当减到0之前如果没有刷新递减计数器的值(俗称喂狗),便会触发系统复位。

  WWDG窗口看门狗也是一个递减计数器不断的往下递减计数。但和IWDG独立看门狗有四处不同:(1)IWDG由独立RC振荡器产生的LSI驱动,不受主时钟影响,但精度不高;WWDG由APB1分频时钟驱动,受主时钟影响,精度高;

  (2)IWDG直接由VDD电压域供电,即使在MCU停止模式和待机模式下仍然能照常工作;

  (3)IWDG计数器减到下限0时触发复位,WWDG计数器减到下限0x40时触发复位,下限值不同;(4)IWDG计数器只有复位下限值0,WWDG计数器不仅有复位下限0x40,还有一个复位上限X(用户设定),上限值与下限值之间形成一个复位窗口。WWDG计数器的值在减到上限X之前(窗口外)喂狗,同样也会产生复位。因此WWDG必须在窗口上限和窗口下限之间才可以喂狗,这是窗口看门狗的特殊之处。

  WWDG详细介绍

  1.WWDG功能框图解析

  下图是窗口看门狗的功能框图,分4个部分进行说明:

中科芯:CKS32F4xx系列产品窗口看门狗

  ① WWDG时钟:窗口看门狗的时钟来自APB1时钟线分频出的PCLK1,最大42MHz,由RCC时钟控制器控制开启;

  ② 计数器时钟和WWDG_CFR寄存器:CK计时器时钟 = PCLK1 / 4096,计数器时钟由CK计时器时钟经过预分频器分频得到,分频系数由配置寄存器WWDG_CFR的WWDGTB[1:0]控制,可以是0~3,因此计数器的时钟CNT_CK = PCLK1 / 4096 / (2^WWDGTB),进而可算出一个计数周期时间是T = 1 / CNT_CK;

  ③ 计数器和WWDG_CR寄存器:WWDG的计数器是一个7位递减计数器,其值存放在控制器寄存器WWDG_CR的T[6:0]中,当该计数器的值从0x40变为0x3F时,产生复位,因此计数器的值只能是在0x7F~0x40之间,有效位是T[5:0]。WWDG_CR的WDGA位则是窗口看门狗的激活位,可由软件置1来启动WWDG,要注意WDGA一旦置1,只能在硬件复位后才能清零;

  ④ 窗口上限值:WWDG的窗口下限值固定是0x40,但窗口上限值可以人为设定,具体可由WWDG_CFR配置寄存器的W[6:0]设置,其值必须大于0x40且小于0x7F,否则就失去了意义。

  最后介绍的是状态寄存器(WWDG_SR)和EWI(Early wakeup interrupt)中断,该寄存器用来记录当前是否有提前唤醒EWI的中断标志。该寄存器仅有位0有效,其他都是保留位。当计数器值达到0x40时,此位由硬件置1,它必须通过软件写0来清除。在初始化WWDG时,一般会先通过软件写0清除一次。用户可以在EWI(Early wakeup interrupt)中断服务程序里进行一些必要的操作。

  2.计算看门狗超时时间

  窗口看门狗的时序图如下:

中科芯:CKS32F4xx系列产品窗口看门狗

  假设PCLK1时钟为42MHz,按照上述计算方法,可以得到WWDG的超时时间计算公式Twwdg =1 / PCLK1 x 4096 x 2^WDGTB x (T[5:0]+1),范围如下表:

中科芯:CKS32F4xx系列产品窗口看门狗

  3.WWDG库函数配置步骤

  接下来AMEYA360电子元器件采购网将介绍如何驱动CKS32F4xx系列产品的WWDG工作。窗口看门狗相关的库操作函数在文件cks32f4xx_wwdg.c和对应的头文件cks32f4xx_wwdg.h中。具体配置步骤如下:

  (1)使能WWDG时钟

  不同于IWDG,IWDG有自己独立的32KHz时钟,不需要使能。而WWDG使用的PCLK1时钟需要先进行使能。  RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 时钟使能

  (2)设置WWDG窗口上限和WDGTB分频系数

  void WWDG_SetWindowValue(uint8_t WindowValue);      //设置WWDG 窗口上限

  void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);    //设置WDGTB分频系数

  (3)开启WWDG中断并分组

  WWDG_ClearFlag(); //清除提前唤醒中断标志位

  NVIC_Init();      //设置中断优先级

  WWDG_EnableIT();  //开启窗口看门狗中断

  (4)设置计数器初始值并使能看门狗

  void WWDG_Enable(uint8_t Counter);  //设置计数器值并使能看门狗

  完成以上4个步骤之后,我们就可以使用CKS32F4的窗口看门狗了。之后在程序里面就必须周期性的在窗口上下限范围内进行喂狗(一般调用WWDG_SetCounter函数),否则将导致系统复位。

  4.WWDG的应用场景

  WWDG一般被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。比如一个十分关键的程序段正常运行的时间是50ms以内,在运行完这个段程序之后紧接着进行喂狗,如果在规定的时间窗口内还没有喂狗,那就说明我们监控的程序并没有在预期的50ms内运行完成,可以认为出故障了或跑飞了,那么此时产生系统复位来解除这个故障,让程序重新运行。


(备注:文章来源于网络,信息仅供参考,不代表本网站观点,如有侵权请联系删除!)

在线留言询价

相关阅读
基于中科芯CKS32L053R8的辐射检测仪方案
中科芯与IAR共建生态合作,IAR集成开发环境全面支持CKS32系列MCU
  近日,中科芯集成电路有限公司与嵌入式开发软件和服务的全球领导者IAR共同宣布达成战略合作,IAR近日发布的集成开发环境IAR Embedded Workbench 9.40.2版,已全面支持中科芯CKS32F407、CKS32F405、CKS32F107、CKS32F103、CKS32F030等系列MCU,提供完整的工具链,方便国内客户基于CKS32进行产品开发。  IAR Embedded Workbench集成开发环境一直是全球众多开发者首选的嵌入式软件开发解决方案之一。这一强大的工具套件已全面支持中科芯CKS32系列MCU,为开发者提供了无与伦比的支持。通过该解决方案,开发者可以充分利用代码优化功能,同时还享有一系列强大的调试功能,包括代码和数据断点、运行时堆栈分析、调用堆栈可视化等。此外,IAR Embedded Workbench还整合了静态代码分析工具C-STAT以及动态代码分析工具C-RUN,可帮助开发者及早发现潜在问题,从而提高代码质量。不仅如此,IAR还提供经过T?V S?D认证的功能安全版本,满足ISO 26262等功能安全认证标准,为开发功能安全产品的开发者提供了强有力的支持。  中科芯MCU事业部总经理胡凯先生表示:“我们非常高兴与IAR建立合作伙伴关系。这一合作将有助于中科芯MCU更好地满足国内客户的需求,同时为符合ISO26262功能安全要求的车规级MCU芯片客户提供更高效、便捷和安全的MCU代码调试和优化支持。中科芯MCU将继续与行业生态伙伴紧密合作,构建完整的生态环境,为客户提供从芯片硬件到软件算法、从参考方案到系统设计的全方位支持。”  IAR亚太区副总裁Kiyo Uemura表示:“我们对与中科芯的合作感到非常高兴。这次合作为中国开发者提供了高质量的开发工具,以及原厂技术支持。我们将中国视为全球最重要的市场,深知这里充满潜力和机遇。我们将继续与中国本地厂商紧密合作,共同构建嵌入式领域的繁荣生态系统,为本地客户提供世界一流的技术支持和解决方案,以推动中国嵌入式产业的蓬勃发展。”  中科芯和IAR共同期待为嵌入式开发者和最终用户提供更丰富的资源和支持,为中国嵌入式领域带来更多创新和突破。
2023-10-20 09:34 阅读量:1472
中科芯获ISO 26262功能安全管理体系认证
中科芯CKS32F4xx系列产品独立看门狗(IWDG)
  中科芯CKS32F4xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog),它们在安全性、时间精确性和使用灵活性方面变现得非常优秀。两个看门狗定时器单元都可用来检测由软件错误引起的故障,具体表现为当计数器达到给定的超时值或未能在指定时间窗口内刷新计数器的值,会触发系统复位。  IWDG由MCU内部独立RC振荡器产生的低速时钟LSI(Low-speed Internal)驱动,因此即使主时钟发生故障它也仍然有效。而WWDG是由从APB1分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合,比如检测由程序跑飞或死机引起的故障。WWDG最适合那些需要看门狗在精确计时窗口时间内起作用的应用程序,比如检测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常运行序列而产生的软件故障。  本文Ameya360电子元器件采购网主要介绍IWDG的应用,关于窗口看门狗的详情,请参看我们的WWDG微课堂内容。  IWDG详细介绍  IWDG通俗的解释它是一个12位的递减计数器,当计数器的值从某个值一直减到0的时候,就会产生一个系统复位信号,即IWDG_RESET。如果在计数器没减到0之前,“刷新”计数器的值,就不会产生复位信号,“刷新”这个动作就是我们经常说的喂狗。IWDG直接由VDD电压域供电,即使在MCU停止模式和待机模式下仍然能照常工作。  1.IWDG功能框图解析  ① LSI时钟:IWDG的时钟由专门的32KHz低速时钟LSI驱动,即使主时钟发生故障它也仍然有效,非常独立。这里需要注意的是,由于RC振荡器的原理和特性(根据温度和环境会有一定的漂移),IWDG并不是严格准确的32KHz,只是我们在应用的时候,默认以32KHz的频率来估算。所以IWDG的定时时间并不一定非常精确,只适用于对时间精度要求比较低的场合。  ② 计数器时钟和IWDG_PR寄存器:递减计数器的时钟由LSI经过一个8位的预分频器得到,预分频器寄存器IWDG_PR的值决定分频因子,分频因子可以是:4、8、16、32、64、128、256。分频因子(假设为W)和IWDG_PR值的关系是W = 4 * 2^IWDG_PR。  ③ 状态寄存器IWDG_SR:顾名思义,IWDG_SR表示独立看门狗模块的当前状态,该寄存器只有位0:PVU(Prescaler Value Update)和位1:RVU(Reload Value Update)有效,且只能读不能写。PVU置1指示预分频值的更新正在进行中,更新完成后由硬件置0。RVU置1表示重装载值的更新正在进行中,更新完毕之后由硬件置0。只有当RVU或PVU等于0的时候才可以进行下一次更新操作。  ④ 重载寄存器IWDG_RLR:重载寄存器是一个12位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。溢出时间Tout(s) = (4 * 2^IWDG_PR) / 32KHz * IWDG_RLR,根据这个公式,可以计算出当LSI为32KHz时,IWDG的理论溢出时间最小值和最大值分别是125us和32.768s。  ⑤ 递减计数器:IWDG的递减计数器是一个12位寄存器,设置范围是0~4095,一个计数器时钟计数器就减1,当计数器减到0时,IWDG会产生一个系统复位信号IWDG_RESET,让程序重新启动运行,如果在计数器减到0之前刷新计数器的值(重新写入新值),就不会产生复位信号,重新刷新计数器值的这个动作俗称喂狗。  ⑥ 密钥寄存器IWDG_KR:密钥寄存器IWDG_KR是独立看门狗IWDG的一个核心控制寄存器,主要有三种寄存器值对应三种控制效果。  2.IWDG库函数配置步骤  我们接下来介绍如何驱动CKS32F4xx系列产品的IWDG工作。独立看门狗相关的库操作函数在文件cks32f4xx_iwdg.c和对应的头文件cks32f4xx_iwdg.h中。具体配置步骤如下:  (1)解除寄存器写保护(向IWDG_KR写入0x5555)  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能写权限  (2)设置IWDG预分频因子和重装载值  void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置IWDG预分频值  void IWDG_SetReload(uint16_t Reload); //设置IWDG重装载值  此时可以计算出看门狗溢出时间,比如我们最终设定IWDG_PR值为 4,IWDG_RLR值500,那么就可以得到 Tout = (4 * 2^IWDG_PR) / 32KHz * IWDG_RLR = 64 / 32 * 500 = 1000ms,看门狗的溢出时间是1s,只要在一秒钟之内,写入0xAAAA到IWDG_KR,就不会触发看门狗复位(一秒内写入多次也是可以的)。这里需要提醒大家的是,由于看门狗的时钟不是准确的32KHz,所以喂狗时间应适当提前。  (3)重载计数值喂狗(向IWDG_KR写入0xAAAA)  IWDG_ReloadCounter();  //把重装载寄存器IWDG_RLR的值放到计数器中  (4)开启看门狗(向IWDG_KR写入0xCCCC)  IWDG_Enable();  //使能 IWDG  通过上面4个步骤,就可以启动CKS32F4的IWDG独立看门狗了,之后在程序里面就必须周期性的进行喂狗(一般会使用定时器定时的调用IWDG_ReloadCounter函数),否则将导致系统复位。注意IWDG在一旦开启,系统运行时就不能再被关闭,想要关闭,只能重启,并且重启之后要迅速关闭IWDG。
2023-02-20 11:11 阅读量:2930
  • 一周热料
  • 紧缺物料秒杀
型号 品牌 询价
RB751G-40T2R ROHM Semiconductor
CDZVT2R20B ROHM Semiconductor
MC33074DR2G onsemi
TL431ACLPR Texas Instruments
BD71847AMWV-E2 ROHM Semiconductor
型号 品牌 抢购
BP3621 ROHM Semiconductor
ESR03EZPJ151 ROHM Semiconductor
STM32F429IGT6 STMicroelectronics
TPS63050YFFR Texas Instruments
IPZ40N04S5L4R8ATMA1 Infineon Technologies
BU33JA2MNVX-CTL ROHM Semiconductor
热门标签
ROHM
Aavid
Averlogic
开发板
SUSUMU
NXP
PCB
传感器
半导体
相关百科
关于我们
AMEYA360微信服务号 AMEYA360微信服务号
AMEYA360商城(www.ameya360.com)上线于2011年,现 有超过3500家优质供应商,收录600万种产品型号数据,100 多万种元器件库存可供选购,产品覆盖MCU+存储器+电源芯 片+IGBT+MOS管+运放+射频蓝牙+传感器+电阻电容电感+ 连接器等多个领域,平台主营业务涵盖电子元器件现货销售、 BOM配单及提供产品配套资料等,为广大客户提供一站式购 销服务。