docs: 根据架构.odg重新设计重构手环系统的分层事件驱动APP框架设计文档

This commit is contained in:
2026-07-10 09:17:27 +08:00
parent 52d84dfc97
commit 53b859b1c1
9 changed files with 657 additions and 914 deletions

View File

@@ -1,43 +1,27 @@
# 模块拆分 - WS2812B 可编程 RGB 灯效 (Docs/50_module-breakdown/mod-led.md)
# 模块拆分 - WS2812B 幻彩 LED 控制驱动 (Docs/50_module-breakdown/mod-led.md)
本模块管理双级联幻彩 RGB 灯珠WS2812B/FCOB-2.7)的硬件 SPI 通道、防抖抗噪切换以及指示闪烁逻辑
本模块描述双级联可编程幻彩 RGB 灯珠的时序写驱动及异步闪烁处理。本模块由当前活跃应用或后台监测进程在报警时调度执行
## 1. 模块职责说明
* **职责范围**
1. 管理物理引脚 `P2.3`(复用硬件 SPI 的 MOSI作为单线纳秒级高速数据流输出
2. 实现对级联的两个 RGB 灯珠(上灯 DOUT 串接下灯 DIN输出相同的 24-bit × 2 色彩数据。
3. **硬件 SPI 复用防噪隔离处理**
由于单片机引脚紧缺SPI 引脚与马达控制可能存在轻微高频串扰。在每次发送 48-bit (GRB) 灯光控制字之前,**必须临时关闭全局中断 (EA=0)**,并将马达引脚配置为高阻输入以彻底隔离噪声。发送完成后立即恢复引脚模式并使能全局中断 (EA=1)。
4. **软件异步闪烁控制**
在 1ms 中断中自增计时器控制报警状态下不同防区灯光的异步闪烁500ms 亮、500ms 灭,或本地 SOS 下的 50ms 红光快速交替爆闪)。
1. **响应指示请求**:提供底层硬件 SPI 写接口,受前台应用(如对码指示)或后台警报进程的控制,点亮特定色彩
2. **隔离抗干扰时序**
WS2812B 的单线纳秒级控制数据流极易受到地线高频噪声干扰。在每次调用 `WS2812_WriteRGB` 之前,必须执行 **临时关闭全局中断 (EA=0) 并切换马达引脚 (P2.4) 为高阻输入** 状态,发送完毕后恢复 `EA=1`,以屏蔽共地杂噪。
3. **软件定时器异步更新**
提供 `LED_Flash_Process` 中断分频函数,由 Timer1 (1ms) 定期回调自增,以非阻塞方式改变闪烁标志电平,避免软件 `delay` 阻塞 CPU。
---
## 2. LED 报警色彩矩阵
## 2. 接口与函数说明
根据防区传感器类型及报警动作亮起指示灯:
* **门磁/窗磁 (PORTE)**:红色闪烁。
* **PIR 人体红外 (PIR)**:橙色闪烁
* **烟雾传感器 (FUMEE)**:绿色闪烁
* **紧急按钮 (URGENCE)**:蓝色闪烁
* **气体泄漏 (GAZ)**:紫色闪烁
* **水浸传感器 (INOND.)**:黄色闪烁
* **振动传感器 (VIBRA.)**:青色闪烁。
* **本地主动 SOS**:双红灯以 50ms 周期高速交替闪烁。
---
## 3. 接口与函数说明
* `void WS2812_Init(void)`:初始化物理引脚 `P2.3` 状态,复用硬件 SPI 通道,配置时钟展宽 LUT 码表。
* `void WS2812_WriteRGB(u8 led1_g, u8 led1_r, u8 led1_b, u8 led2_g, u8 led2_r, u8 led2_b)`
1. 临时保存并拉低 `EA = 0`
2. 切换 `P2.5` (MOTOR) 引脚为高阻输入以防共地噪声。
3. 通过 SPI 控制寄存器高速连发 48 字节的时序宽展码,驱动两个灯珠亮起对应颜色。
4. 发送完毕后发送 >80us 的低电平复位脉冲。
5. 恢复马达引脚为推挽输出,并还原 `EA`
* `void LED_Set_Color(u8 g, u8 r, u8 b)`:同步设置双级联灯亮起特定颜色。
* `void LED_Flash_Process(void)`:在 1ms 中断中调用,控制指示灯处于交替爆闪或间歇闪烁的状态机更新。
* `void WS2812_Init(void)`:初始化物理引脚 `P2.6` (LED_RGB) 复用硬件 SPI 功能。
* `void WS2812_WriteRGB(u8 l1_g, u8 l1_r, u8 l1_b, u8 l2_g, u8 l2_r, u8 l2_b)`
1. 保存并拉低 `EA = 0`
2. 临时设置马达控制脚 `P2.4` 为高阻输入
3. 通过 SPI 数据寄存器连续发送两个灯珠的 GRB 控制字节
4. 发送完毕后发出 >80us 低电平复位脉冲
5. 恢复马达引脚模式并还原 `EA`
* `void LED_Flash_Process(void)`:中断更新闪烁标志位状态,用于驱动交替闪烁。
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V2 -->