docs: 根据架构.odg重新设计重构手环系统的分层事件驱动APP框架设计文档
This commit is contained in:
@@ -1,34 +1,31 @@
|
||||
# 模块拆分 - 极低功耗与电源管理 (Docs/50_module-breakdown/mod-power.md)
|
||||
|
||||
本模块描述手环的低功耗管理、AMOLED 供电 PMIC 控制以及中断睡眠/唤醒时序。
|
||||
本模块描述手环的低功耗休眠策略、OLED PMIC 供电控制、中断挂起以及安全唤醒初始化时序。
|
||||
|
||||
## 1. 模块职责说明
|
||||
|
||||
* **职责范围**:
|
||||
1. 在系统上电时使能 SGM3833 升压芯片,为 OLED 屏提供稳定的显示电源。
|
||||
2. **低功耗决策判定**:
|
||||
当主系统处于非警报状态,且连续 10 秒(`inactivity_timer >= 1000`)无任何按键或无线包事件时,判定系统进入 `STATE_SLEEP` 极低功耗睡眠。
|
||||
3. **彻底切断 PMIC**:
|
||||
为消除 OLED 的静态负压漏电流,休眠前拉低 `SGM_CTRL = 0`,使 SGM3833 彻底断电。
|
||||
4. **睡眠挂起配置**:
|
||||
使能 `INT2`(外部中断 2,接射频接收引脚)以及 P0 口引脚电平变化中断,然后将 STC32G 写入 `PCON |= 0x02` 进入停机(Power-Down)挂起状态,关闭主高频振荡时钟,全板功耗降至微安级。
|
||||
5. **安全唤醒重初始化时序**:
|
||||
发生按键或无线信号中断时,CPU 瞬间被唤醒。由于升压 PMIC 的输入电容充电及负压稳压需要时间,唤醒后**严禁立即写屏**。必须首先拉高 `SGM_CTRL = 1`,接着**软件强行阻塞延时 50ms**,等电网稳定后,再次完整初始化 RM69310 的寄存器参数,最后恢复待机屏幕重绘。
|
||||
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)`:配置 `P3.4` (SGM_CTRL) 为推挽输出,默认输出高电平 `SGM_CTRL = 1`。
|
||||
* `void Power_Init(void)`:配置 Pin 28 为推挽输出,默认 `SHUT = 1` 开启屏幕 PMIC。
|
||||
* `void Enter_Low_Power_Sleep(void)`:
|
||||
1. 向 RM69310 屏幕控制器发送关闭显示命令(寄存器 0x28)。
|
||||
2. 拉低 `SGM_CTRL = 0` 彻底切断 PMIC。
|
||||
3. 配置并使能按键端口中断与 RF 中断。
|
||||
4. 执行 `PCON |= 0x02` 挂起 CPU。
|
||||
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. 拉高 `SGM_CTRL = 1` 开启 SGM3833 供电。
|
||||
2. 执行 `delay_ms(50)` 阻塞式等待电平平稳,过滤冲击电流。
|
||||
3. 调用 `LCD_Init()` 重新对 RM69310 进行整套初始化配置,恢复写屏 GRAM 通道。
|
||||
4. 状态机切回 `STATE_CLOCK` 并置 `Redraw = 1`。
|
||||
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 V2 -->
|
||||
|
||||
Reference in New Issue
Block a user