<!-- 本文件由脚本自动转换生成，请勿手动编辑 -->

> **《LKS32MC09x User Manual》IWDG 独立看门狗** . 完整目录见 [README.md](README.md)
>
> **声明**：本文档由芯片用户手册自动转换生成，仅供检索与查阅参考。Markdown 格式可被自由编译、修改，本文档不构成正式技术文件，相关内容以凌鸥创芯官方网站正式发布的手册为准。
>
> 南京凌鸥创芯电子有限公司 . (C) 2023, 版权归凌鸥创芯所有 . 机密文件，未经许可不得扩散

# IWDG 独立看门狗

## 概述

独立看门狗使用32kHz
低速RC(LRC/LSI)时钟进行工作，在系统主时钟停止的情况下仍可保证正常工作。

独立看门狗内部包含一个21bit递减计数器，启动后从配置值开始递减计数。独立看门狗可以配置产生系统休眠唤醒源，作为定时唤醒源。在超时情况下也可以产生全芯片复位信号。当MCU进入深度休眠状态时，包括PLL/HRC在内的系统时钟关闭，而LRC时钟是一直存在的，所以独立看门狗可以继续正常工作。

通常看门狗的定时唤醒门限值小于超时复位门限值，但大于0x8，即独立看门狗重新装载后从IWDG_RTH开始递减计数，当计数到IWDG_WTH时产生唤醒信号。通常如果要使用IWDG进行休眠定时唤醒，在进入休眠前将IWDG刷新重置，IWDG从IWDG_RTH开始递减计数，在经过一段时间后产生IWDG唤醒信号。如果不使能IWDG休眠定时唤醒，当IWDG产生全芯片复位时也可以将芯片从休眠中解除，但同时会复位MCU所有寄存器配置。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图20-1 IWDG递减计数事件发生示例

独立看门狗超时复位时间由如下公式计算

Timeout<sub>IWDG</sub>=t<sub>LRC</sub>×(IWDG_RTH-7)

独立看门狗唤醒时间由如下公式计算

Wakeup<sub>IWDG</sub>=t<sub>LRC</sub>×(IWDG_RTH-IWDG_WTH)

其中Timeout<sub>IWDG</sub>为独立看门狗超时复位时间，Wakeup<sub>IWDG</sub>为独立看门狗唤醒时间，t<sub>LRC</sub>为LRC时钟周期，1/32kHz=31.25uS，IWDG_RTH为独立看门狗超时复位门限值，IWDG_WTH为独立看门狗唤醒门限值。

IWDG_RTH=0x000100对应独立看门狗最小复位时间间隔为256/32kHz≈8ms。

IWDG_RTH=0x1FF000对应独立看门狗最大复位时间间隔为511×4096/32kHz≈64s。

需要注意，由于低速RC时钟精度有限，不同芯片存在一定偏差，通常低速RC时钟偏差在全温度范围内不超过±20%。

由于IWDG的计数器工作于LRC时钟域，而软件运行于系统主时钟域，通常为PLL时钟。软件在写入IWDG_RTH或写入IWDG_CLR进行喂狗时，从软件进行写入到看门狗计数器被重置，需要最多3个LRC时钟周期。

因此如果软件需要在喂狗后读取IWDG_CNT，至少需要延时3个LRC时钟周期，读取IWDG_CNT才会发现计数器被重置。

软件写入修改IWDG_RTH/IWDG_WTH/IWDG_CFG/IWDG_PSW
等寄存器，写入立即生效，无须等待。只有IWDG_CNT的重置会延时生效。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图21-2常规休眠模式进入与唤醒流程图

## 寄存器

### 地址分配

PMU基地址为0x40011720

表21-2功耗管理模块地址空间

||||
|---|---|---|
|名称|偏移|说明|
|AON_PWR_CFG|0x00|功耗管理配置寄存器|
|AON_EVT_RCD|0x04|事件记录寄存器|
|AON_IO_WAKE_POL|0x08|IO唤醒极性寄存器|
|AON_IO_WAKE_EN|0x0C|IO唤醒使能寄存器|
|AON_BKP_REG0|0x10|后备寄存器0|
|AON_BKP_REG1|0x14|后备寄存器1|

### AON_PWR_CFG 功耗管理配置寄存器

地址:0x4001_1720

复位值:0x0002

表21-3
AON_PWR_CFG功耗管理配置寄存器

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1||0|
||||||||||||||||IOWK_FLT||
||||||||||||||||RW||
||||||||||||||||1||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:2\]||未使用|
|\[1\]|IOWK_FLT|IO唤醒信号滤波使能，默认使能|
|\[0\]||未使用|

软件可以选择对IO唤醒信号进行滤波或不滤波，如果启用片内滤波，则IO信号经过120us时间常数的滤波后，送入PMU。使用片内IO信号滤波可以在一定的应用场景下代替板级滤波，但会引入120us左右的唤醒延时。如果不启用片内IO唤醒信号滤波，则应用场景需要保证IO唤醒输入信号稳定无干扰，可以考虑使用板级滤波，从而避免芯片被误唤醒造成不必要的功耗浪费。

### AON_EVT_RCD 事件记录寄存器

地址:0x4001_1724

复位值:0x0001

表21-4
AON_EVT_RCD事件记录寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||DEEPSLEEP|SLEEP|||IWDG_WK|EVT_WK|||||IWDG_RST|KEY_RST_RCD||POR_RST_RCD|
|||RO|RO|||RO|RO|||||RO|RO||RO|
|||0|0|||0|0|||||0|0||1|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:14\]||未使用|
|\[13\]|DEEPSLEEP|深度休眠记录，高表示发生过|
|\[12\]|SLEEP|休眠记录，高表示发生过|
|\[11:10\]||未使用|
|\[9\]|IWDG_WK|IWDG定时唤醒记录，高表示Deep Sleep休眠被IWDG定时唤醒|
|\[8\]|EVT_WK|IO唤醒或CLU唤醒记录，高表示Deep Sleep休眠被AON_IO_WAKE_EN中对应的使能信号唤醒|
|\[7:4\]||未使用|
|\[3\]|IWDG_RST|独立看门狗复位发生记录，高表示发生过|
|\[2\]|KEY_RST_RCD|按键复位发生记录，高表示发生过|
|\[1\]||未使用|
|\[0\]|POR_RST_RCD|POR复位发生记录，高表示发生过|

向AON_EVT_RCD寄存器写入0xCA40，清除全部事件记录。由于EVT_RCD工作于LSI时钟域，由软件写入密码到完成清除需要32us。

### AON_IO_WAKE_POL IO 唤醒极性寄存器

地址:0x4001_1728

复位值:0x0

表21-5
AON_IO_WAKE_POL IO唤醒源极性配置寄存器

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0||
|||||||||P2_0_POL|P2_4_POL|P2_7_POL|P0_14_POL|P0_13_POL|P0_12_POL|P0_2_POL||P0_0_POL|
|||||||||RW|RW|RW|RW|RW|RW|RW||RW|
|||||||||0|0|0|0|0|0|0||0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7\]|P2_0_POL|P2\[0\]外部唤醒极性|
|\[6\]|P2_4_POL|P2\[4\]外部唤醒极性|
|\[5\]|P2_7_POL|P2\[7\]外部唤醒极性|
|\[4\]|P0_14_POL|P0\[14\]外部唤醒极性|
|\[3\]|P0_13_POL|P0\[13\]外部唤醒极性|
|\[2\]|P0_12_POL|P0\[12\]外部唤醒极性|
|\[1\]|P0_2_POL|P0\[2\]外部唤醒极性|
|\[0\]|P0_0_POL|P0\[0\]外部唤醒极性|

由于CLU具备逻辑配置功能，CLU信号只能使用高电平唤醒；

IO信号可配置唤醒极性。

### AON_IO_WAKE_EN IO 唤醒使能寄存器

地址:0x4001_172C

复位值:0x0

CLUOUTx唤醒信号:默认极性为高电平；

IO唤醒信号:默认极性为低电平；

表21-6
AON_IO_WAKE_EN IO唤醒源使能寄存器

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0||
|||||CLUOUT3_EN|CLUOUT2_EN|CLUOUT1_EN|CLUOUT0_EN|P2_0_EN|P2_4_EN|P2_7_EN|P0_14_EN|P0_13_EN|P0_12_EN|P0_2_EN||P0_0_EN|
|||||RW|RW|RW|RW|RW|RW|RW|RW|RW|RW|RW||RW|
|||||0|0|0|0|0|0|0|0|0|0|0||0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:12\]||未使用|
|\[11\]|CLUOUT3_EN|CLUOUT3作为唤醒使能|
|\[10\]|CLUOUT2_EN|CLUOUT2作为唤醒使能|
|\[9\]|CLUOUT1_EN|CLUOUT1作为唤醒使能|
|\[8\]|CLUOUT0_EN|CLUOUT0作为唤醒使能|
|\[7\]|P2_0_EN|P2\[0\]外部唤醒使能|
|\[6\]|P2_4_EN|P2\[4\]外部唤醒使能|
|\[5\]|P2_7_EN|P2\[7\]外部唤醒使能|
|\[4\]|P0_14_EN|P0\[14\]外部唤醒使能|
|\[3\]|P0_13_EN|P0\[13\]外部唤醒使能|
|\[2\]|P0_12_EN|P0\[12\]外部唤醒使能|
|\[1\]|P0_2_EN|P0\[2\]外部唤醒使能|
|\[0\]|P0_0_EN|P0\[0\]外部唤醒使能|

### AON_BKP_REG0 后备寄存器0

地址:0x4001_1730

复位值:0x0

表21-7 AON_BKP_REG0后备寄存器0

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|BKP_REG||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|BKP_REG||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|BKP_REG||

此寄存器只被上电复位POR复位。

### AON_BKP_REG1 后备寄存器1

地址:0x4001_1734

复位值:0x0

表21-8 AON_BKP_REG1后备寄存器1

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|BKP_REG||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|BKP_REG||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|BKP_REG||

