第八章 独立看门狗(IWDG)

描述

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。 

在封装规格上,W55MH32 提供了两种选择:QFN68和QFN100。

W55MH32Q采用QFN68封装版本,尺寸为8x8mm,它拥有36个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、3个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN以及1个USB2.0。在保持与同系列其他版本一致的核心性能基础上,仅减少了部分GPIO以及SDIO接口,其他参数保持一致,性价比优势显著,尤其适合网关模组等对空间布局要求较高的场景。紧凑的尺寸和精简化外设配置,使其能够在有限空间内实现高效的网络连接与数据交互,成为物联网网关、边缘计算节点等紧凑型设备的理想选择。 同系列还有QFN100封装的W55MH32L版本,该版本拥有更丰富的外设资源,适用于需要多接口扩展的复杂工控场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。 

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及MQTT SSL等,为网络通信安全再添保障。 

为助力开发者快速上手与深入开发,基于W55MH32Q这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。 

若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。

单片机

第八章 独立看门狗(IWDG)

本章分为如下几个小节:

1 IWDG 简介

2 IWDG 寄存器描述

3 程序设计

4 下载验证

1 IWDG 简介

W55MH32 内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

1.1 IWDG 主要性能

自由运行的递减计数器。

时钟由独立的 RC 振荡器提供(可在停止和待机模式下工作)。

看门狗被激活后,则在计数器计数至 0x000 时产生复位。

1.2 WDG 功能描述

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

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

1.3 硬件看门狗

如果用户在选择字节中启用了“硬件看门狗”功能,在系统上电复位后,看门狗会自动开始运行;如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位。

1.4 寄存器访问保护

IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向 IWDG_KR寄存器中写入 0x5555 。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA )也会启动写保护功能。状态寄存器指示预分频值和递减计数器是否正在被更新。

1.5 调试模式

当微控制器进入调试模式时(Cortex-M3 核心停止),根据调试模块中的 DBG_IWDG_STOP 配置位的状态,IWDG 的计数器能够继续工作或停止。详见有关调试模块的章节。独立看门狗框图如下:

单片机

注: 看门狗功能处于 VDD 供电区,即在停机和待机模式时仍能正常工作。看门狗超时时间(40kHz 的输入时钟(LSI)。

预分频系数 PR [2:0] 位 最短时间 (ms) RL [11:0]=0x000 最长时间 (ms) RL [11:0]=0xFFF
/4 0 0.1 409.6
/8 1 0.2 819.2
/16 2 0.4 1638.4
/32 3 0.8 3276.8
/64 4 1.6 6553.6
/128 5 3.2 13107.2
/256 6 或 7 6.4 26214.4

注: 这些时间是按照 40kHz 时钟给出。实际上,MCU 内部的 RC 频率会在 30kHz 到 60kHz 之间变化。此外,即使 RC 振荡器的频率是精确的,确切的时序仍然依赖于 APB 接口时钟与 RC 振荡器时钟之间的相位差,因此总会有一个完整的 RC 周期是不确定的。通过对 LSI 进行校准可获得相对精确的看门狗超时时间。有关 LSI 校准的问题。

2 IWDG 寄存器描述

可以用半字(16 位)或字(32 位)的方式操作这些外设寄存器。

2.1 (IWDG_KR)

地址偏移:0x00

复位值:0x0000 0000(在待机模式复位)

单片机

2.2 预分频寄存器(IWDG_PR)

地址偏移:0x04

复位值:0x0000 0000

单片机

2.3 重装载寄存器(IWDG_RLR)

地址偏移:0x08

复位值:0x0000 0FFF(待机模式时复位)

单片机

2.4 状态寄存器(IWDG_SR)

地址偏移:0x0C

复位值:0x0000 0000(待机模式时不复位)

单片机

注: 如果在应用程序中使用了多个重装载值或预分频值,则必须在 RVU 位被清除后才能重新改变预装载值,在 PVU 位被清除后才能重新改变预分频值。然而,在预分频和/或重装值更新后,不必等待 RVU 或 PVU 复位,可继续执行下面的代码。(即是在低功耗模式下,此写操作仍会被继续执行完成。)

2.5 WDG 寄存器映像

IWDG 寄存器映像和复位值。

单片机

3 程序设计

这段代码是基于W55MH32微控制器,主要实现了一个独立看门狗(IWDG)复位测试程序。独立看门狗是一种硬件定时器,用于监控系统运行状态,当系统因软件故障等原因无法正常工作时,看门狗会产生复位信号,使系统重新启动。该程序的具体功能如下:

1.初始化系统:初始化延时函数、串口通信,并获取系统时钟频率信息。

2.输出系统时钟信息:通过串口打印系统时钟(SYSCLK)、高速总线时钟(HCLK)、低速外设时钟(PCLK1)、高速外设时钟(PCLK2)和 ADC 时钟(ADCCLK)的频率。

3.初始化独立看门狗:配置独立看门狗的预分频器和重装载值,并使能独立看门狗。

 

// 使能对IWDG寄存器的写访问
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

// 设置IWDG预分频器(64)和重装载值(2047)
IWDG_SetPrescaler(IWDG_Prescaler_64);
IWDG_SetReload(0x7FF);

// 初始化并启用独立看门狗
IWDG_ReloadCounter();
IWDG_Enable();

 

4.等待用户输入:在主循环中不断检查用户是否通过串口输入字符 'r',如果输入 'r',则喂狗(重置看门狗计数器),并通过串口输出喂狗成功的信息。

 

// 从串口获取用户输入字符
uint8_t GetCmd(void);

// 判断是否需要喂狗并执行喂狗操作
if (GetCmd() == 'r') {
    IWDG_ReloadCounter();
    printf("Feed Dog Successn");
}

 

4 下载验证

单片机

审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分