概述
复位(Reset)用于将系统恢复到某种初始状态,可用于错误恢复,系统软重启等功能。
复位的种类
芯片支持多种复位种类。
复位类型 |
描述 |
使用方法 |
---|---|---|
Chipen |
芯片使能产生的复位 |
参考 芯片使能 |
POR reset |
上电产生的复位 |
参考 欠压保护 |
BOR reset |
欠压产生的复位 |
参考 欠压保护 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 WDG |
WDG reset |
系统看门狗超时产生的复位 |
参考 WDG |
复位类型 |
描述 |
使用方法 |
---|---|---|
Chipen |
芯片使能产生的复位 |
参考 芯片使能 |
POR reset |
上电产生的复位 |
参考 欠压保护 |
BOR reset |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 WDG |
WDG reset |
系统看门狗超时产生的复位 |
参考 WDG |
复位类型 |
描述 |
使用方法 |
---|---|---|
Chipen |
芯片使能产生的复位 |
参考 芯片使能 |
POR reset |
上电产生的复位 |
参考 欠压保护 |
BOR reset |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 WDG |
WDG reset |
系统看门狗超时产生的复位 |
参考 WDG |
复位类型 |
描述 |
使用方法 |
---|---|---|
Chipen |
芯片使能产生的复位 |
参考 芯片使能 |
POR reset |
上电产生的复位 |
参考 欠压保护 |
BOR reset |
欠压产生的复位 |
参考 欠压保护 |
Thermal reset |
热传感器产生的复位 |
参考 温度传感器 |
DSLP |
系统进入深度睡眠时产生的复位 |
参考 低功耗开发 |
System reset |
系统提供的软件复位 |
参考 软件复位 |
Warm reset |
CPU 提供的软件复位 |
- |
IWDG reset |
独立看门狗超时产生的复位 |
参考 WDG |
WDG reset |
系统看门狗超时产生的复位 |
参考 WDG |
复位域
电源域 |
范围 |
Chipen |
POR reset |
BOR reset |
DSLP |
system reset |
warm reset |
IWDG reset |
WDG reset |
---|---|---|---|---|---|---|---|---|---|
PD_AON |
RTC |
Y |
Y |
N |
N |
N* |
N* |
N |
N* |
PD_AON |
备份寄存器,Retention RAM, Wake pin, Trap pin |
Y |
Y |
N |
N |
N |
N |
N |
N |
PD_AON PD_AON_OTP |
IWDG OTPC |
Y |
Y |
Y |
Y |
Y* |
Y* |
Y |
Y* |
PD_SYSON PD_SOC |
所有 SYSON 电源域的外设 所有 SOC 电源域的外设 |
Y |
Y |
Y |
Y |
N* |
N* |
Y |
N* |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK
控制 RTC, IWDG, OTPC 是否在 system reset 和 WDG reset 下复位。该寄存器定义和默认值位于sysreg_aon.h
中。可以通过
REG_LSYS_SYSRST_MSK0
和REG_LSYS_SYSRST_MSK1
控制 PD_SYSON 和 PD_SOC 电源域的外设是否在 system reset 和 WDG reset 下复位。 该寄存器定义和默认值位于sysreg_lsys.h
中。Warm reset 可以通过
REG_LSYS_SW_RST_CTRL
获取关于复位域更多的灵活性。该寄存器定义和默认值位于sysreg_lsys.h
中。
电源域 |
范围 |
Chipen |
POR reset |
BOR reset |
thermal reset |
DSLP |
system reset |
warm reset |
IWDG reset |
WDG reset |
---|---|---|---|---|---|---|---|---|---|---|
PD_AON |
AON_RTC |
Y |
Y |
N |
N |
N |
Y* |
Y* |
Y |
Y* |
PD_AON |
Wake pin, Trap pin,备份寄存器,Retention RAM |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
PD_AON_RET PD_AON_OTP |
AON_IWDG OTPC |
Y |
Y |
Y |
Y |
Y |
Y* |
Y* |
Y |
Y* |
PD_SYSON PD_SOC |
PD_SYSON 电源域的所有外设, PD_SOC 电源域的所有外设 |
Y |
Y |
Y |
Y |
Y |
Y* |
N* |
Y |
Y* |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK
控制 RTC, IWDG, OTPC 是否在 system reset 和 warm reset 下复位。该寄存器定义和默认值位于sysreg_aon.h
中。可以通过
REG_LSYS_SYSRST_MSK0
和REG_LSYS_SYSRST_MSK1
控制 PD_SYSON 和 PD_SOC 电源域的外设是否在 system reset 和 warm reset 下复位。 该寄存器定义和默认值位于sysreg_lsys.h
中。Warm reset 可以通过
REG_LSYS_SW_RST_CTRL
获取关于复位域更多的灵活性。该寄存器定义和默认值位于sysreg_lsys.h
中。WDG reset 可以通过
REG_LSYS_WDG_GLBRST
控制是否进行全局复位。
电源域 |
范围 |
Chipen |
POR reset |
BOR reset |
thermal reset |
DSLP |
system reset |
warm reset |
IWDG reset |
WDG reset |
---|---|---|---|---|---|---|---|---|---|---|
PD_AON |
AON_RTC |
Y |
Y |
N |
N |
N |
Y* |
Y* |
Y |
Y* |
PD_AON |
Wake pin, Trap pin,备份寄存器,Retention RAM |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
PD_AON_RET PD_AON_OTP |
AON_IWDG OTPC |
Y |
Y |
Y |
Y |
Y |
Y* |
Y* |
Y |
Y* |
PD_SYSON PD_SOC |
PD_SYSON 电源域的所有外设, PD_SOC 电源域的所有外设 |
Y |
Y |
Y |
Y |
Y |
Y* |
N* |
Y |
Y* |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK
控制 RTC, IWDG, OTPC 是否在 system reset 和 warm reset 下复位。该寄存器定义和默认值位于sysreg_aon.h
中。可以通过
REG_LSYS_SYSRST_MSK0
和REG_LSYS_SYSRST_MSK1
控制 PD_SYSON 和 PD_SOC 电源域的外设是否在 system reset 和 warm reset 下复位。 该寄存器定义和默认值位于sysreg_lsys.h
中。Warm reset 可以通过
REG_LSYS_SW_RST_CTRL
获取关于复位域更多的灵活性。该寄存器定义和默认值位于sysreg_lsys.h
中。WDG reset 可以通过
REG_LSYS_WDG_GLBRST
控制是否进行全局复位。
电源域 |
范围 |
Chipen |
POR reset |
BOR reset |
thermal reset |
DSLP |
system reset |
warm reset |
IWDG reset |
WDG reset |
---|---|---|---|---|---|---|---|---|---|---|
PD_AON |
AON_RTC |
Y |
Y |
N |
N |
N |
Y* |
Y* |
Y |
Y* |
PD_AON |
Wake pin, Trap pin,备份寄存器,Retention RAM |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
PD_AON_RET PD_AON_OTP |
AON_IWDG OTPC |
Y |
Y |
Y |
Y |
Y |
Y* |
Y* |
Y |
Y* |
PD_SYSON PD_SOC |
PD_SYSON 电源域的所有外设, PD_SOC 电源域的所有外设 |
Y |
Y |
Y |
Y |
Y |
Y* |
N* |
Y |
Y* |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK
控制 RTC, IWDG, OTPC 是否在 system reset 和 warm reset 下复位。该寄存器定义和默认值位于sysreg_aon.h
中。可以通过
REG_LSYS_SYSRST_MSK0
和REG_LSYS_SYSRST_MSK1
控制 PD_SYSON 和 PD_SOC 电源域的外设是否在 system reset 和 warm reset 下复位。 该寄存器定义和默认值位于sysreg_lsys.h
中。Warm reset 可以通过
REG_LSYS_SW_RST_CTRL
获取关于复位域更多的灵活性。该寄存器定义和默认值位于sysreg_lsys.h
中。WDG reset 可以通过
REG_LSYS_WDG_GLBRST
控制是否进行全局复位。
电源域 |
范围 |
chipen |
POR reset |
BOR reset |
Thermal reset |
DSLP |
system reset |
warm reset |
IWDG reset |
WDG reset |
---|---|---|---|---|---|---|---|---|---|---|
PD_AON |
Wake pin, Trap pin, AON pad |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
PD_AON_RET |
RTC |
Y |
Y |
N |
N |
N |
Y* |
N* |
N |
N |
PD_AON_RET |
IWDG |
Y |
Y |
Y |
Y |
Y |
Y* |
N* |
Y |
Y |
PD_AON_OTP |
OTPC |
Y |
Y |
Y |
Y |
N |
Y* |
N* |
Y |
Y |
PD_SYSON PD_LP_PLAT PD_HP_PLAT |
SYSON 电源域的所有外设, LP_PLAT 电源域的所有外设, HP_PLAT 电源域的所有外设 |
Y |
Y |
Y |
Y |
Y |
Y* |
N* |
Y |
Y |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK
控制 RTC, IWDG, OTPC 是否在 system reset 和 warm reset 下复位。该寄存器定义和默认值位于sysreg_aon.h
中。可以通过
REG_LSYS_SYSRST_MSK0
和REG_LSYS_SYSRST_MSK1
控制 PD_SYSON, PD_LP_PLAT 和 PD_HP_PLAT 电源域的外设是否在 system reset 和 warm reset 下复位。 该寄存器定义和默认值位于sysreg_lsys.h
中。Warm reset 可以通过
REG_LSYS_SW_RST_CTRL
获取关于复位域更多的灵活性。该寄存器定义和默认值位于sysreg_lsys.h
中。
电源域 |
范围 |
Chipen |
POR reset |
BOR reset |
Thermal reset |
DSLP |
System reset |
warm reset |
IWDG reset |
WDG reset |
---|---|---|---|---|---|---|---|---|---|---|
PD_RTC |
RTC |
N |
N |
N |
N |
N |
N |
N |
N |
N |
PD_AON PD_AON_RET |
Wake pin, Trap pin,备份寄存器, Retention RAM, AON PAD, OTP |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
PD_AON_RET |
IWDG |
Y |
Y |
Y |
Y |
Y |
Y |
N |
Y |
Y |
PD_SYSON |
I2C like, Pinmux |
Y |
Y |
Y |
Y |
Y |
N* |
N* |
N* |
N* |
PD_SYSON PD_SOC |
SYSON 电源域中除了 LEDC,Pinmux 的外设, SOC 电源域的所有外设 |
Y |
Y |
Y |
Y |
Y |
Y* |
Y* |
Y |
Y* |
Y: 表示当复位事件发生时,相应的模块会被复位。
N: 表示当复位事件发生时,相应的模块不会被复位。
Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。
N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。
备注
可以通过寄存器
REG_AON_SYSRST_MSK
控制 I2C like, Pinmux 是否在 System reset,warm reset,IWDG reset,WDG reset 下复位。该寄存器定义位于sysreg_aon.h
中。Warm reset, WDG reset, system reset 可以通过
REG_LSYS_SW_RST_CTRL
获取关于复位域更多的灵活性。该寄存器定义位于sysreg_lsys.h
中。PD_RTC 只有在发生该电源域内部的 POR reset 的时候才会复位。
获取启动原因
用户可以通过 BOOT_Reason()
函数来获取启动原因。参考 Boot reason。
保留复位前的信息
用户可以将关键数据存储在位于 AON 区域的备份寄存器或者 Retention RAM 中,防止数据因复位而丢失。
备注
以下复位类型依旧会导致备份寄存器或者 Retention RAM 中的数据丢失。
chipen
POR reset
备份寄存器
RealTek 提供了 BKUP_REG0
, BKUP_REG1
, BKUP_REG2
和 BKUP_REG3
这 4 个 32 位备份寄存器供使用。用户可以使用 API 来操作备份寄存器。
备注
系统可能会使用备份寄存器的某些位,用户使用前可以搜索 SDK 来确认该位是否被使用。
API
BKUP_Write
项目 |
描述 |
---|---|
功能 |
将值写入到对应备份寄存器中 |
参数 |
|
返回值 |
无 |
BKUP_Read
项目 |
描述 |
---|---|
功能 |
读取对应备份寄存器的值 |
参数 |
|
返回值 |
对应备份寄存器的值 |
BKUP_Set
项目 |
描述 |
---|---|
功能 |
写入对应备份寄存器中的某些比特位 |
参数 |
|
返回值 |
无 |
BKUP_Clear
项目 |
描述 |
---|---|
功能 |
清除对应备份寄存器中的某些比特位 |
参数 |
|
返回值 |
无 |
Retention RAM
用户可以使用变量 RRAM_DEV
来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef
, 位于 sysreg_lsys.h
中。其结构体成员 RRAM_USER_RSVD
可以被用户自由使用。
备注
建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。
软件复位触发方式
用户可以通过调用函数 System_Reset()
的方法或者发命令来执行 system reset。函数 System_Reset()
的定义如下:
System_Reset
项目 |
描述 |
---|---|
功能 |
触发系统软件复位 |
参数 |
无 |
返回值 |
无 |
也可以向任意 CPU 下发以下命令触发系统软件复位:
AT+RST