Files
stc32g128k/Docs/50_module-breakdown/mod-power.md

32 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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