1. 问题现象与背景分析
最近在调试杰理AC63系列芯片时,遇到了一个颇为棘手的问题:当系统进入软关机模式后,VDDIO电源域无法按预期掉电。具体表现为:
- 系统执行软关机流程后,主电源VDD正常下电
- 但VDDIO(IO口供电电源)仍保持高电平
- 导致部分外设仍处于供电状态,整体功耗无法降至设计目标(<10μA)
这种情况在需要电池供电的便携设备中尤为致命。以我们正在开发的蓝牙耳机方案为例,关机后VDDIO持续供电会导致:
- 按键检测电路保持工作状态
- LED指示灯存在漏电流
- 整体待机电流高达200-300μA
- 电池续航时间缩短30%以上
2. 软关机流程与电源域管理
2.1 杰理芯片的电源架构
AC63系列采用三级电源域设计:
- VDD(1.8V):核心数字电路供电
- VDDIO(1.8V-3.3V):GPIO和外围接口供电
- VBAT(2.5-4.2V):RTC和备份域供电
在正常工作时,三个电源域均由PMU统一管理。但进入软关机模式后,电源管理策略会发生变化:
| 电源域 | 正常工作 | 软关机模式 |
|---|---|---|
| VDD | 开启 | 关闭 |
| VDDIO | 开启 | 可配置 |
| VBAT | 开启 | 保持开启 |
2.2 软关机的标准流程
根据AC63技术参考手册,完整的软关机应包含以下步骤:
- 系统检测关机条件(长按按键/低电量等)
- 保存关键寄存器状态到备份域
- 关闭所有外设时钟
- 配置GPIO状态(模拟输入/下拉)
- 设置PMU_CTRL寄存器的PWR_DOWN位
- 执行WFI指令进入待机模式
- PMU自动关闭VDD电源
问题就出在第5步——默认情况下PMU不会主动关闭VDDIO电源,需要开发者显式配置。
3. 问题根因定位
3.1 寄存器配置验证
通过J-Link读取PMU相关寄存器,发现关键配置异常:
c复制// 问题状态下的寄存器值
PMU_CTRL = 0x00000001; // 仅PWR_DOWN置位
PWR_IO_CFG = 0x00000000; // VDDIO保
