2026-07-09 18:42:00 +08:00
|
|
|
|
# 模块拆分 - 极低功耗与电源管理 (Docs/50_module-breakdown/mod-power.md)
|
2026-07-09 10:31:36 +08:00
|
|
|
|
|
2026-07-10 09:17:27 +08:00
|
|
|
|
本模块描述手环的低功耗休眠策略、OLED PMIC 供电控制、中断挂起以及安全唤醒初始化时序。
|
2026-07-09 10:31:36 +08:00
|
|
|
|
|
|
|
|
|
|
## 1. 模块职责说明
|
|
|
|
|
|
|
|
|
|
|
|
* **职责范围**:
|
2026-07-10 09:17:27 +08:00
|
|
|
|
1. **低功耗决策与断电**:
|
2026-07-10 10:47:00 +08:00
|
|
|
|
当应用管理层判定 10 秒无按键且无无线事件时,PM 模块向 AMOLED 发送 Display OFF 命令,随后拉低 `SHUT = 0` (Pin 23 / P2.2),**彻底切断 SGM3833 供电**。
|
2026-07-10 09:17:27 +08:00
|
|
|
|
2. **挂起 CPU (Power-Down)**:
|
2026-07-10 10:47:00 +08:00
|
|
|
|
使能 GPIO 按键沿中断和无线接收沿中断,写入 `PCON |= 0x02` 关闭高频振荡器,使 MCU 进入深度停机挂起。
|
2026-07-10 09:17:27 +08:00
|
|
|
|
3. **防浪涌安全唤醒初始化**:
|
|
|
|
|
|
发生中断唤醒后,PM 必须遵循安全上电时序:首先拉高 `SHUT = 1` 开启 SGM3833,随后**执行 50ms 强阻塞延时**避开冲击电流并等待电源轨稳定,最后调用 `LCD_Init()` 完整重新配置 RM69310 寄存器,方可恢复应用绘制。
|
2026-07-09 10:31:36 +08:00
|
|
|
|
|
2026-07-09 18:42:00 +08:00
|
|
|
|
---
|
2026-07-09 10:31:36 +08:00
|
|
|
|
|
2026-07-09 18:42:00 +08:00
|
|
|
|
## 2. 接口与函数说明
|
|
|
|
|
|
|
2026-07-10 10:47:00 +08:00
|
|
|
|
* `void Power_Init(void)`:配置 Pin 23 为推挽输出,默认 `SHUT = 1` 开启屏幕 PMIC。
|
2026-07-09 17:42:55 +08:00
|
|
|
|
* `void Enter_Low_Power_Sleep(void)`:
|
2026-07-10 09:17:27 +08:00
|
|
|
|
1. 向 RM69310 写入关屏指令 (0x28)。
|
|
|
|
|
|
2. 拉低 `SHUT = 0` 关断 SGM3833 PMIC。
|
2026-07-10 10:47:00 +08:00
|
|
|
|
3. 使能端口引脚沿中断并进入 `PCON |= 0x02` 停机状态。
|
2026-07-09 17:42:55 +08:00
|
|
|
|
* `void Wakeup_Restore(void)`:
|
2026-07-10 09:17:27 +08:00
|
|
|
|
1. 拉高 `SHUT = 1` 重新开启 SGM3833。
|
|
|
|
|
|
2. 执行 `delay_ms(50)` 硬件稳压阻塞等待。
|
|
|
|
|
|
3. 重新调用 `LCD_Init()` 完成屏幕控制寄存器复位和 GRAM 开启。
|
|
|
|
|
|
4. 路由通知应用管理器切回时钟应用重新绘制。
|
2026-07-09 11:03:18 +08:00
|
|
|
|
|
2026-07-10 10:04:40 +08:00
|
|
|
|
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V3 -->
|