跳到主要内容

PMC - 电源控制模块

V821 芯片内置 PMC(Power Control),用于系统电源控制,包括:

  1. DCDC/LDO/Switch等电源的开关、参数配置;
  2. 内部各独立供电电路的开启关闭;
  3. 晶振时钟源相关控制。
  4. 支持上电、下电、休眠、唤醒等使用场景,每个使用场景都有各自的触发源触发,并由 PowerControl 配合执行后续的系列开关动作。

PMC 的动作基本都由硬件自动完成,预留部分可配置参数由软件配置。

PMC 硬件功能配置

一般来说,PMC IO 控制的对应关系对应下表所示:

方案PMC_EN0/PL0PMC_EN1/PL1PMC_EN2/PL2PL6休眠唤醒支持的模式
常电/CDR方案PMCGPIOGPIOGPIO支持 poweroff 关机模式
电池方案,不使用调压功能PMCPMCGPIOGPIO支持 super standby, ultra standby, poweroff 模式
电池方案,使用调压功能PMCPMCPMCGPIO支持 super standby, ultra standby, poweroff 模式,支持动态调压
电池方案,不使用调压功能,AOVPMCPMCGPIOPMC支持 super standby, ultra standby, poweroff 模式,支持独立控制 DRAM 电源
电池方案,使用调压功能,AOVPMCPMCPMCPMC支持 super standby, ultra standby, poweroff 模式,支持独立控制 DRAM 电源,支持动态调压
注意

PMC_EN0/PL0 默认作为 PMC 功能,这个引脚在硬件设计时请尽量不用做普通 IO

常电 IPC 方案

注意芯片型号,常电IPC方案使用的芯片型号是 V821M2
  • VDD-SYS晚于3.3V上电
  • PMC_EN0/PL0:控制 VDD-SYS上电时序,建议不作为 GPIO 使用(限制较多)
  • PL1~PL7 用户可作为 GPIO 使用

image-20250520114857399

CDR 方案

注意芯片型号,CDR 方案使用的芯片型号是 V521D2-WXX
  • PMC_EN0/PL0:控制 VDD-SYS上电时序
  • PL1~PL7 具备唤醒/开机功能(唤醒电平只能为1.8V)
  • 唤醒源可支持做ACC DET,G-INT,VBUS-DET,PWRON(需接到PL口IO上)
  • 一路12V转5V DCDC+SOC三路DCDC供电(3.3V,0.92/1V,1.5V)+一路G-SENSOR LDO供电。若AHD/CMOS需1.2V则需增加一路LDO/DCDC供电
  • VBAT-RTC可直接电池或者纽扣电池供电,无需外挂LDO(电池需外挂charger芯片)
  • SOC 电源输入采用 MOS 管开关方式控制,关机下可断开 DCDC 输入源,避免 DCDC 漏电影响功耗
  • 关机下保持VBAT-RTC供电以及外设G-SENSOR供电其他均断电
  • VBUS-DET 和 ACC 需通过隔离转换到 1.8V 接入到 PL 口 IO 实现接入唤醒/开机功能,开机后可作为普通 IO,实现 VBUS 和 ACC 状态检测
  • VBAT-RTC输入电压范围 2.1~6V,单节锂电池方案,可直接接到 VBAT-RTC,实现常供 RTC 不掉电
  • 纽扣电池方案,可纽扣电池直接接 VBAT-RTC,无需外挂 LDO
注意
  • 当正常关机 (hibernation),VBAT-RTC 功耗 10uA 左右,若非正常关机,异常掉电状态,VBAT-RTC 功耗 40uA 左右
  • 如果对非正常关机功耗要求较高,需外挂RTC芯片降低功耗

电池IPC/门铃方案

注意芯片型号,电池IPC/门铃方案使用的芯片型号是 V821L2 系列的低功耗方案芯片

电池IPC/门铃方案需要 4 路 DCDC,包括 3 路低静态漏电 DCDC 3.3V,0.92V/1V,1.5V + 1路普通DCDC 1.5V + 1路LDO(唤醒外设PIR等供电)+ 1路PMOS开关(3.3V非唤醒源外设/IO供电)

  • DCDC1 为 RF 3.3V 供电(需低静态漏电)
  • DCDC2 为 VDD-SYS 0.92V/1V 供电(需低静态漏电)
  • DCDC3 为 DRAM 1.5V 供电
  • DCDC4 为 RF 1.5V 供电(需低静态漏电)
  • PMOS1 为 3.3V 非唤醒源外设/IO 供电
  • LDO1 为唤醒源外设供电,如 PIR,Gsensor 等
  • 电池为单节电池可直接接 VBAT-RTC,确保 VBAT-RTC 不掉电,若为多节电池,需额外增加降压电路,保证输入到 VBAT-RTC 在 2.1V~6V 范围内

image-20250520132335571

PWR-EN0 和 EN1为硬件控制,触发唤醒源,由硬件拉高IO,EN2(PL2)为软件控制,启动时可由软件控制拉高,不需要使用可做普通IO/唤醒IO使用:

  • PWR-EN0(PL0):控DCDC1-3V3(RF3.3V),DCDC4-1V5(RF1.5V),DCDC2-0V92/1V(VDD-SYS)
  • PWR-EN1(PL1):控DCDC3-1V5(VCC15-DRAM),PMOS1(非唤醒源外设和IO供电)
  • PWR-EN2(PL2):做双目控制DCDC2 (VDD-SYS)在休眠下调压达到休眠降功耗的作用(若无需做调压,PL2可释放出来做普通IO使用)

工作模式与电源供电方式:

  • 正常工作/唤醒状态模式:PL0,PL1,(PL2)都拉高,DCDC 均开启供电
  • Wi-Fi保活模式:PL0拉高,PL1,(PL2)拉低;保持VBAT-RTC(VCC18-RTC),RF供电(3.3V和1.5V),小核供电(0.92V/1V),不掉电;其他除唤醒源外电源(PMOS+DRAM1.5V)均掉电;支持 WIFI 唤醒,IO(PL2~PL7)唤醒,RTC定时唤醒
  • hibernation(关机)模式:PL0,PL1,(PL2)都拉低;只保持VBAT-RTC(VCC18-RTC)不掉电;其他电源都掉电;此模式只支持IO(PL2~PL7)唤醒,RTC定时唤醒
电源 DCDC 器件选型上,为保证休眠功耗,对应 DCDC 型号选型有特殊要求:
  • 休眠保活下需常供电的 DCDC 必须选用低静态漏电的 DCDC(quiescent current \le 5uA)
  • DCDC1-3V3 (RF3.3V) ---- 考虑 WIFI 瞬态峰值较高,以及 MOS 管开启抽电电流影响,建议选用 1A 以上的 DCDC
  • DCDC4-1V5 (RF1.5V) ---- 平均电流较小,瞬态较高,要求 DCDC 选择 500mA 以上
  • DCDC2-0V92/1V (VDD-SYS) ---- 电流稳定,瞬态不会太高,0.8A 以上 DCDC 可满足
  • DCDC3-1V5 (VCC15-DRAM) 休眠保活下常关,无静态漏电要求,带载选择 500mA 以上
  • 对于其他唤醒外设供电要求,建议选用低静态漏电的 LDO
  • DCDC 的分压电阻阻值建议选用百 K 级别以上,降低外围的静态漏电流

电池 WIFI AOV 方案

注意芯片型号,电池 WIFI AOV 方案使用的芯片型号是 V821L2-WXX 低功耗方案芯片

主要供电路径:

  • 单节电池无需要另外加 DCDC 转换,可直接到后级 DCDC 上
  • 唤醒外设中断需接到PL口IO上
  • 输入源做VBUS和VBAT电源输入切换选择,对二极管选型要求最大正向电压在350mV@1A以内,反向漏电要求小于5uA
  • 4 路 DCDC(3路低静态漏电DCDC 3.3V,0.92V/1V,1.5V+1路普通DCDC 1.5V)+3路LDO(1路LDO供唤醒外设PIR等和2路LDO供CMOS 1.8V和2.8V,若需1.2V需再增加1路LDO)+2路PMOS开关(3.3V非唤醒源外设/IO供电和CMOS供电)

其中电源方案如下:

  • DCDC1 为 RF 3.3V 供电(需低静态漏电)
  • DCDC2 为 VDD-SYS 0.92V/1V 供电(需低静态漏电)
  • DCDC3 为 DRAM 1.5V 供电
  • DCDC4 为 RF 1.5V 供电(需低静态漏电)
  • PMOS1为 3.3V 非唤醒源外设/IO供电
  • PMOS2 为 CMOS 供电 LDO 的 3.3V 输入源(LDO2~LDO4输入)
  • LDO1 为唤醒源外设供电,如 PIR 等
  • LDO2~LDO4 为 CMOS 独立供电 LDO 1.2V,1.8V,2.8V(通用设计,这里不体现)
  • 电池为单节电池可直接接 VBAT-RTC,确保 VBAT-RTC 不掉电,若为多节电池,需额外增加降压电路,保证输入到 VBAT-RTC 在 2.1~6V 范围内

需要控制外部电源的 PMC 与 IO 如下:

  • 电源上通过 PL0,PL1,PL2 和 PL6 控制,其中 PL0 和 PL1 为硬件控制,触发唤醒源,由硬件拉高 IO,PL2 和 PL6 为软件控制,启动时由软件控制拉高
    • PL0(PWR-EN0):控DCDC1-3V3(RF3.3V),DCDC4-1V5(RF1.5V),DCDC2-0V92/1V(VDD-SYS)
    • PL1(PWR-EN1):控PMOS1(非唤醒源外设和IO供电)
    • PL2(PWR-EN2):做双目控制DCDC2(VDD-SYS)在休眠下调压达到休眠降功耗的作用(若无需做调压,PL2可释放出来做普通IO使用)
    • PL6:控DCDC3-1V5(VCC15-DRAM),PMOS2

PMC 软件配置

SDK 版本注意

在 SDK 1.1 版本,仅支持配置开关 PMC 功能,在 SDK 1.2 版本支持精细化配置 PMC 各个管脚,下面请选择对应的 SDK 参考

BOOT0 相关配置 - SDK1.1

首先确认当前方案使用的配置文件,这里以 perf2b 板级为例,查看 BoardConfig_nor.mkBoardConfig.mk 中配置的 LICHEE_BOOT0_BIN_NAME,分布对应 SPI NOR 方案与 eMMC 方案下使用的 BOOT0 配置。

image-20250319103359452

如果 BoardConfig_nor.mkBoardConfig.mk中没有配置 LICHEE_BOOT0_BIN_NAME ,则标识方案使用默认配置,根据具体存储器件选择 mmc.mkspinor.mknand.mk 即可

软件方案存储器件配置文件
普通SPI NORbrandy/brandy-2.0/spl/board/sun300iw1p1/spinor.mk
普通SPI NANDbrandy/brandy-2.0/spl/board/sun300iw1p1/nand.mk
普通eMMC/SD NANDbrandy/brandy-2.0/spl/board/sun300iw1p1/mmc.mk
快起SPI NORbrandy/brandy-2.0/spl/board/sun300iw1p1/spinorfastboot.mk
快起eMMC/SD NANDbrandy/brandy-2.0/spl/board/sun300iw1p1/mmcfastboot.mk

前往 brandy/brandy-2.0/spl/board/sun300iw1p1 找到配置文件

image-20250319103533571

这里以 spinorpmc.mk 为例,配置项如下:

CFG_PM_ENABLE_PMC=y  # 启用 PMC 功能
CFG_SUNXI_PL_1V8=y # 配置 PL 使用 1.8V 电平
CFG_PM_PMC_PL6=y # 使用 PL6 控制 DRAM 供电,AOV 方案

image-20250520134454351

另外 fes 文件夹中的配置是执行 fes 时使用的,也需要配置,否则可能会出现 fes 烧录阶段无法启动的问题

image-20250430145041050

RTOS 相关配置

由于 V821 休眠唤醒需要 RTOS 参与,所以需要配置 RTOS 相关

输入 mrtos menuconfig 进入 RTOS 配置页面

System components  --->
aw components --->
[*] PowerManager Support --->
[*] pm enable pmc # 配置启用 PMC 功能
[ ] pm pmc using PL6 GPIO as power ctl # 配置启用 PL6 作为电源控制引脚

image-20250520140114534

开机唤醒源的获取

在 BOOT 阶段获取唤醒源

在硬件上支持三种唤醒源,包括

  • Wake UP IO
  • SYS RTC
  • RTC Timer

其中的唤醒源可以读取 0x4a000880 寄存器,其含义如下:

唤醒源描述使用场景寄存器位
Wake UP IOPL0~7 中任意一个引脚,IO 唤醒
使用示例:
1. 关机后按住 POWER ON按键,唤醒系统
2. 使用 GSensor 中断脚连接 Wake UP IO 唤醒系统
IO 按键唤醒
GSensor 唤醒
ACC 打火唤醒
BIT(2)
SYS RTC使用 RTC 进行唤醒
使用示例:
设置 10s 后唤醒系统:echo +10 > /sys/class/rtc/rtc0/wakealarm
定时唤醒记录
长时间闹钟唤醒
时间以秒为单位
BIT(1)
RTC Timer使用 Wake UP Timer 进行唤醒
使用示例:
设置休眠后 100ms 唤醒系统:echo 700 > /sys/class/ae350_standby/time_to_wakeup_ms
短时间唤醒
AOV 场景短时唤醒
时间以毫秒为单位
休眠开始时才计时
BIT(0)

在 BOOT0 中获取唤醒源

在 BOOT0 代码中可以用 readl 获取寄存器的值,并进行判断

#define SUNXI_PMU_RTC_BASE 0x4A000800

u32 startup_reg_data;

startup_reg_data = readl(SUNXI_PMU_RTC_BASE + 0x80);
if (startup_reg_data & BIT(0))
printf("wakeup_req: rtc timer\n");
if (startup_reg_data & BIT(1))
printf("wakeup_req: sysrtc\n");
if (startup_reg_data & BIT(2))
printf("wakeup_req: wakeup io\n");

启动时候也会打印日志

image-20250515155440995

在 U-BOOT 中获取唤醒源

在 U-Boot 代码中可以用 readl 获取寄存器的值,并进行判断

#define SUNXI_PMU_RTC_BASE 0x4A000800

u32 startup_reg_data;

startup_reg_data = readl(SUNXI_PMU_RTC_BASE + 0x80);
if (startup_reg_data & BIT(0))
printf("wakeup_req: rtc timer\n");
if (startup_reg_data & BIT(1))
printf("wakeup_req: sysrtc\n");
if (startup_reg_data & BIT(2))
printf("wakeup_req: wakeup io\n");

在 U-BOOT 命令行可以使用 md 命令获取寄存器的值

image-20250515155513658

在 RTOS 中获取唤醒源

在 RTOS 代码中可以用 readl 获取寄存器的值,并进行判断

注意

由于 Kernel 启动过程中会清除唤醒源,请在 RTOS 启动时就记录下唤醒源,例如 cpu0_app_entry 函数入口马上记录。

#define SUNXI_PMU_RTC_BASE 0x4A000800

u32 startup_reg_data;

startup_reg_data = readl(SUNXI_PMU_RTC_BASE + 0x80);
if (startup_reg_data & BIT(0))
printf("wakeup_req: rtc timer\n");
if (startup_reg_data & BIT(1))
printf("wakeup_req: sysrtc\n");
if (startup_reg_data & BIT(2))
printf("wakeup_req: wakeup io\n");

在 U-BOOT 命令行可以使用 md 命令获取寄存器的值

image-20250515155513658

在 Kernel 内获取开机&唤醒源

SDK 1.2 新增内核获取启动原因驱动 sunxi_startup_info

使用功能前需要勾选内核驱动

Allwinner BSP  --->
Device Drivers --->
Misc Devices Drivers --->
<*> Allwinner startup-info driver

image-20250529140001734

之后启动后便可在下面所示 SYSFS 路径查看开机唤醒源

/sys/class/sunxi_startup_info/startup_info/

image-20250529140541200

获取唤醒源

使用节点即可获取唤醒源,命令如下:

cat /sys/class/sunxi_startup_info/startup_info/wakeup_source
唤醒源描述使用场景
wakeup_ioPL0~7 中任意一个引脚,IO 唤醒
使用示例:
1. 关机后按住 POWER ON按键,唤醒系统
2. 使用 GSensor 中断脚连接 Wake UP IO 唤醒系统
IO 按键唤醒
GSensor 唤醒
ACC 打火唤醒
sysrtc使用 RTC 进行唤醒
使用示例:
设置 10s 后唤醒系统:echo +10 > /sys/class/rtc/rtc0/wakealarm
定时唤醒记录
长时间闹钟唤醒
时间以秒为单位
rtc_timer使用 Wake UP Timer 进行唤醒
使用示例:
设置休眠后 100ms 唤醒系统:echo 700 > /sys/class/ae350_standby/time_to_wakeup_ms
短时间唤醒
AOV 场景短时唤醒
时间以毫秒为单位
休眠开始时才计时
本次启动不是通过唤醒源启动的重置开机场景,查看 reset_source

例如这里使用 wakeup_io 唤醒,打印如下:

image-20250529140623695

获取开机源

若本次开机不是通过唤醒开机的,可以使用节点获取开机源,命令如下:

cat /sys/class/sunxi_startup_info/startup_info/reset_source
开机源描述使用场景
cold_boot冷启动
上电启动
插电开机
rtc_wdg_rst看门狗触发重置开机看门狗长时间未喂狗,导致重启开机
rtc_wdg_rst
user_reboot
用户主动执行 reboot 命令用户主动执行了 reboot 命令,导致开机
det_rst由于 3V3,1V8,0V9 中任意一路电源出现异常跌落或掉电,触发重置开机电源跌落掉电导致重置开机
pwron_rst使用内置 RESET 信号触发重置开机内部信号触发重置开机
本次开机并非重置开机唤醒场景,查看 wakeup_source

例如冷启动,可以获取当前为冷启动:

image-20250529142251022

输入 reboot 可以获取当前为 reboot 开机

image-20250529142736123

寄存器进入 USB 升级模式

若需要软件控制进入 USB 烧录模式,需要对寄存器 0x4a0001d0 写入 0x429b0001 使下一次启动进入烧录模式。

提示

这个寄存器写入后带电重启仍会保持,需要在烧录之前写入 0x429b0000 将其清零,否则会一直进入 USB 烧录模式

在 SPL 代码中,SPL 启动时会自动清除烧录位。

image-20250515151220081

快速启动功能

V821 每次启动镜像加载成功后,启动介质ID、以及备份ID等均会被记录到寄存器 0x4a000258 中。在 poweroff 唤醒、rtc_wdg 复位场景下,通过该寄存器获取到启动介质信息,直接访问、启动,达到快起目的。该流程亦成为“热启动”。

但是当需要带电池卡升级时,这个功能会导致无法正常卡升级,此时需要清除这个寄存器的数据再重启系统。

在 BOOT0,UBOOT,RTOS 中可以这样配置:

writel(0x0, 0x4a000258);

在 Linux 中可以通过 sunxi_dump 配置

echo 0x4a000258 0x0 > /sys/class/sunxi_dump/write

异常掉电保护

V821芯片内置异常掉电保护功能,且默认启用。该功能包括VCC_DET和VSYS_DET,用于低压保护,主要应用场景如下:

  1. 加快上电:电源正常时,可根据实际电压情况判断是否成功上电。
  2. 异常处理(初次上电):在初次上电时,默认启用 VSYS_DET 功能。如果 VCC_SYS 没有电源,系统将无法完成上电过程。
  3. 异常处理(掉电检测):当上电后突然拔掉电源,VCC_DET 和 VSYS_DET将检测到电压下降至特定阀值,并复位整个系统。

对于正常运行的产品,在突然断电的场景下,保护 Flash 数据尤为重要。由于断电后内部电压逐渐下降,当 Flash 工作电压接近 2V2.7V2\text{V} \sim 2.7\text{V} 时,可能会产生不稳定状态,特别是在 SPI Flash 正在访问时,可能会导致数据异常。因此,在此场景下,需要通过 VSYS_DET 和 VCC_DET 对芯片进行复位,确保系统正常运行。

默认情况下,软件配置异常掉电保护如下:

  • VSYS_DET 配置掉电阈值 600mV 复位系统
  • VCC15_DET 默认未启用
  • VCC33_DET 配置上电阈值3.1V,掉电阈值 2.9V 复位系统

配置异常掉电保护功能

危险

关闭异常掉电保护仅在调试过程中排查问题使用,量产产品使用会造成数据损坏等一系列问题,修改前请联系全志 FAE

配置异常掉电保护包括三个寄存器,包括配置 3V3 掉电阈值,和启用掉电检测功能。

  • 默认上电时,默认会启用 VSYS_DET 掉电检测复位功能,禁用 VCC33_DET 掉电检测复位功能。
  • 在 BOOT0 阶段,软件会配置该寄存器,启用 VSYS_DET 掉电检测复位功能,和 VCC33_DET 掉电检测复位功能。
brandy/brandy-2.0/spl/board/sun300iw1p1/board.c
void rtc_set_vccio_det_spare(void)
{
u32 val = 0;

/* set detection threshold to 2.9V */
val = readl(SUNXI_PMU_RTC_BASE + VCC33_DET_CTRL_REG);
val &= ~(VCCIO_THRESHOLD_MASK << 8);
val |= (VCCIO_THRESHOLD_VOLTAGE_2_9); // <- 修改这个宏
writel(val, SUNXI_PMU_RTC_BASE + VCC33_DET_CTRL_REG);

/* enable vccio debonce */
val = readl(SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
val &= ~VCC33_DET_RSTN_ENABLE;
writel(val, SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
}

修改 3V3 上电/掉电电压需要修改代码里的宏 VCCIO_THRESHOLD_VOLTAGE_2_9 配置如下:

#define VCCIO_THRESHOLD_VOLTAGE_2_7	  (0 << 8) // 上电阈值2.9V,掉电阈值2.7V
#define VCCIO_THRESHOLD_VOLTAGE_2_6 (1 << 8) // 上电阈值2.8V,掉电阈值2.6V
#define VCCIO_THRESHOLD_VOLTAGE_2_8 (2 << 8) // 上电阈值3.0V,掉电阈值2.8V
#define VCCIO_THRESHOLD_VOLTAGE_2_9 (3 << 8) // 上电阈值3.1V,掉电阈值2.9V
#define VCCIO_THRESHOLD_VOLTAGE_3_0 (4 << 8) // 上电阈值3.2V,掉电阈值3.0V
#define VCCIO_THRESHOLD_VOLTAGE_3_1 (5 << 8) // 上电阈值3.3V,掉电阈值3.1V
#define VCCIO_THRESHOLD_VOLTAGE_3_2 (6 << 8) // 上电阈值3.4V,掉电阈值3.2V
#define VCCIO_THRESHOLD_VOLTAGE_3_3 (7 << 8) // 上电阈值3.5V,掉电阈值3.3V

如果需要关闭这个功能,如下修改

brandy/brandy-2.0/spl/board/sun300iw1p1/board.c
void rtc_set_vccio_det_spare(void)
{
u32 val = 0;

/* set detection threshold to 2.9V */
val = readl(SUNXI_PMU_RTC_BASE + VCC33_DET_CTRL_REG);
val &= ~(VCCIO_THRESHOLD_MASK << 8);
val |= (VCCIO_THRESHOLD_VOLTAGE_2_9);
writel(val, SUNXI_PMU_RTC_BASE + VCC33_DET_CTRL_REG);

/* disable vcc33 debonce */
val = readl(SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
val |= VCC33_DET_RSTN_ENABLE;
writel(val, SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
}

如果需要关闭 VSYS_DET 掉电复位功能,增加如下代码关闭功能

brandy/brandy-2.0/spl/board/sun300iw1p1/board.c
void rtc_set_vccio_det_spare(void)
{
u32 val = 0;

/* set detection threshold to 2.9V */
val = readl(SUNXI_PMU_RTC_BASE + VCC33_DET_CTRL_REG);
val &= ~(VCCIO_THRESHOLD_MASK << 8);
val |= (VCCIO_THRESHOLD_VOLTAGE_2_9);
writel(val, SUNXI_PMU_RTC_BASE + VCC33_DET_CTRL_REG);

/* disable vcc33 debonce */
val = readl(SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
val |= VCC33_DET_RSTN_ENABLE;
writel(val, SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);

/* 关闭 VSYS_DET 掉电复位功能 */
val = readl(SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
val |= (1 << 0);
writel(val, SUNXI_PRCM_BASE + POR_RESET_CTRL_REG);
}

寄存器配置说明

  • VSYS_DET 掉电/上电检测阈值:0x4a000860
    • 这个寄存器软件默认没有配置,使用默认值 600mV 掉电阈值
寄存器位上电默认值软件配置值功能
31:11\\\
10:90x1软件未修改VSYS 掉电检测阈值电压选择
00: 550mV掉电阈值
01: 600mV掉电阈值
10: 650mV掉电阈值
11: 700mV掉电阈值
8:0\\\
  • VCC_DET 掉电/上电检测阈值:0x4a000864
寄存器位上电默认值软件配置值功能
31:27\\\
26:240x0软件未修改VCC15 掉电检测电压配置
000: 上电阈值1.4V,掉电阈值1.3V
001: 上电阈值1.3V,掉电阈值1.2V
010: 上电阈值1.5V,掉电阈值1.4V
011: 上电阈值1.6V,掉电阈值1.5V
100: 上电阈值1.7V,掉电阈值1.6V
101: 上电阈值1.8V,掉电阈值1.7V
110: 上电阈值1.8V,掉电阈值1.7V
111: 上电阈值1.8V,掉电阈值1.7V
23:17\\\
160x0软件未修改VCC15 掉电检测功能配置
0: 禁用 VCC15 掉电检测功能
1: 启用 VCC15 掉电检测功能
15:11\\\
10:80x00x3VCC33 掉电检测电压配置
000: 上电阈值2.9V,掉电阈值2.7V
001: 上电阈值2.8V,掉电阈值2.6V
010: 上电阈值3.0V,掉电阈值2.8V
011: 上电阈值3.1V,掉电阈值2.9V
100: 上电阈值3.2V,掉电阈值3.0V
101: 上电阈值3.3V,掉电阈值3.1V
110: 上电阈值3.4V,掉电阈值3.2V
111: 上电阈值3.5V,掉电阈值3.3V
7:0\\\
  • 掉电检测复位功能寄存器:0x4a000024
寄存器位上电默认值软件配置值功能
31:5\\\
40x10x0VCC33_DET 掉电检测触发时是否 RESET 系统
1: 不 RESET 系统
0: RESET 系统
3:1\\\
00x00x0VSYS_DET 掉电检测触发时是否 RESET 系统
1: 不 RESET 系统
0: RESET 系统