第八章 独立看门狗(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 下载验证

审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !