复位
概述
复位(Reset)用于将系统恢复到某种初始状态,可用于错误恢复、系统软重启等功能。
复位类型
芯片支持多种复位种类。
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
|
BOR |
欠压产生的复位 |
参考 欠压保护 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
WDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
WDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
WDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
WDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
WDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
BOR ACC |
ACC 欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
WDG/IWDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
芯片使能产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
RTC POR |
RTC 复位域上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
WDG reset |
系统看门狗超时产生的复位 |
参考 Watchdog |
复位类型 |
描述 |
使用方法 |
|---|---|---|
CHIP_EN |
外部 CHIP_EN 引脚产生的复位 |
参考 芯片使能 |
POR |
上电产生的复位 |
- |
BOR |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 Watchdog |
AP WDG reset |
AP 核(KM4TZ)看门狗超时 产生的复位 |
参考 Watchdog |
NP WDG reset |
NP 核(KM4NS)看门狗超时 产生的复位 |
参考 Watchdog |
Plfm1 reset |
Platform 1 系统复位 |
- |
备注
Plfm1 reset 仅在二合一模式下有效。
在二合一模式下,NP WDG reset 的功能将变得与 Plfm1 reset 一致。
复位域
范围 |
RTC |
备份寄存器,Retention RAM, Wake pin, Trap pin |
其他外设 |
|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
BOR |
N |
N |
Y |
DSLP |
N |
N |
Y |
System reset |
N |
N |
Y |
IWDG reset |
N |
N |
Y |
WDG reset |
N |
N |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
备注
Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。
范围 |
RTC |
Wake pin, Trap pin,备份寄存器,Retention RAM |
其他外设 |
|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
BOR |
N |
N |
Y |
Thermal reset |
N |
N |
Y |
DSLP |
N |
N |
Y |
System reset |
Y |
N |
Y |
IWDG reset |
N |
N |
Y |
WDG reset |
N |
N |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
备注
Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。
范围 |
RTC |
Wake pin, Trap pin,备份寄存器,Retention RAM |
其他外设 |
|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
BOR |
N |
N |
Y |
Thermal reset |
N |
N |
Y |
DSLP |
N |
N |
Y |
System reset |
Y |
N |
Y |
IWDG reset |
N |
N |
Y |
WDG reset |
N |
N |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
备注
Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。
范围 |
RTC |
Wake pin, Trap pin,备份寄存器,Retention RAM |
其他外设 |
|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
BOR |
N |
N |
Y |
Thermal reset |
N |
N |
Y |
DSLP |
N |
N |
Y |
System reset |
Y |
N |
Y |
IWDG reset |
N |
N |
Y |
WDG reset |
N |
N |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
备注
Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。
范围 |
RTC |
Wake pin, Trap pin,备份寄存器,Retention RAM |
其他外设 |
|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
BOR |
N |
N |
Y |
Thermal reset |
N |
N |
Y |
DSLP |
N |
N |
Y |
System reset |
Y |
N |
Y |
IWDG reset |
N |
N |
Y |
WDG reset |
N |
N |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
备注
Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。
范围 |
Wake pin, Trap pin, 备份寄存器 |
Retention RAM |
RTC |
OTPC |
其他外设 |
|---|---|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
Y |
Y |
BOR |
N |
N |
N |
Y |
Y |
BOR ACC |
N |
N |
N |
Y |
Y |
Thermal reset |
N |
N |
N |
Y |
Y |
DSLP |
N |
Y |
N |
N |
Y |
System reset |
N |
N |
Y |
Y |
Y |
WDG/IWDG reset |
N |
N |
N |
Y |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
备注
Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。
范围 |
RTC |
Wake pin, Trap pin,备份寄存器, Retention RAM, OTP |
I2C like, Pinmux |
其他外设 |
|---|---|---|---|---|
CHIP_EN |
N |
Y |
Y |
Y |
POR |
N |
Y |
Y |
Y |
BOR |
N |
N |
Y |
Y |
Thermal reset |
N |
N |
Y |
Y |
DSLP |
N |
N |
Y |
Y |
System reset |
N |
N |
N* |
Y |
IWDG reset |
N |
N |
N* |
Y |
WDG reset |
N |
N |
N* |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK控制 I2C like, Pinmux 是否在 System reset,IWDG reset,WDG reset 下复位。该寄存器定义位于sysreg_aon.h中。Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。PD_RTC 只有在 PD_RTC 电源域内部发生 POR 时才会复位。
范围 |
Trap pin,备份寄存器 |
Wake pin, OTP |
GPIO, PWM, Pinmux |
KM4NS,SDN,WIFI, AES |
其他外设 |
|---|---|---|---|---|---|
CHIP_EN |
Y |
Y |
Y |
Y |
Y |
POR |
Y |
Y |
Y |
Y |
Y |
BOR |
N |
N |
Y |
Y |
Y |
Thermal reset |
N |
N |
Y |
Y |
Y |
DSLP |
N |
N |
Y |
Y |
Y |
System reset |
N |
N |
N* |
Y |
Y |
IWDG reset |
N |
Y |
Y |
Y |
Y |
WDG reset |
N |
N |
N* |
Y |
Y |
Plfm1 reset |
N |
N |
N |
Y |
N |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK控制 Pinmux 是否在 System reset,WDG reset 下复位。该寄存器定义位于sysreg_aon.h中。可以通过寄存器
REG_LSYS_SW_RST_CTRL控制 GPIO,PWM 是否在 System reset,WDG reset 下复位。该寄存器定义位于sysreg_lsys.h中。Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的
Peripheral_Reset()函数获取 warm reset 会 reset 的外设。Plfm1 reset 仅在二合一模式下有效,且二合一模式下,KM4NS 的 WDG 的复位域范围会变得和 Plfm1 reset 一致。
获取启动原因
用户可以通过 BOOT_Reason() 函数来获取启动原因。参考
启动原因
。
保留复位前的信息
用户可以将关键数据存储在位于 AON 电源域的备份寄存器或 Retention RAM 中,防止数据因复位而丢失。
备注
以下复位类型依旧会导致备份寄存器或 Retention RAM 中的数据丢失。
CHIP_EN
POR
备份寄存器
Realtek 提供了 BKUP_REG0, BKUP_REG1, BKUP_REG2 和 BKUP_REG3 共 4 个 32 位备份寄存器供使用。用户可以使用 API 来操作备份寄存器。
备注
系统可能会使用备份寄存器的某些位,用户使用前可以搜索 SDK 来确认该位是否被使用。
API
BKUP_Write
项目 |
描述 |
|---|---|
功能 |
将值写入到对应备份寄存器中 |
参数 |
|
返回值 |
无 |
BKUP_Read
项目 |
描述 |
|---|---|
功能 |
读取对应备份寄存器的值 |
参数 |
|
返回值 |
对应备份寄存器的值 |
BKUP_Set
项目 |
描述 |
|---|---|
功能 |
将对应备份寄存器中的某些比特位置 1 |
参数 |
|
返回值 |
无 |
BKUP_Clear
项目 |
描述 |
|---|---|
功能 |
清除对应备份寄存器中的某些比特位 |
参数 |
|
返回值 |
无 |
Retention RAM
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
不支持。
软件复位触发方式
用户可以通过调用函数 System_Reset() 的方法或者发命令来执行 system reset。函数 System_Reset() 的定义如下:
项目 |
描述 |
|---|---|
功能 |
触发系统软件复位 |
参数 |
无 |
返回值 |
无 |
也可以向任意 CPU 下发以下命令触发系统软件复位:
AT+RST