docs: optimize all module breakdown files with architect-level details

This commit is contained in:
2026-07-09 18:42:00 +08:00
parent 9f54220e27
commit 039029ab20
7 changed files with 183 additions and 160 deletions

View File

@@ -1,19 +1,22 @@
# 模块拆分 - WS2812B 可编程 RGB 灯效 (Docs/50_module-breakdown/mod-led.md)
本模块描述可编程幻彩 RGB 灯珠WS2812B/FCOB-2.7)的单线级联数据流驱动与报警色彩反馈
本模块管理双级联幻彩 RGB 灯珠WS2812B/FCOB-2.7)的硬件 SPI 通道、防抖抗噪切换以及指示闪烁逻辑
## 1. 模块职责说明
* **职责范围**
1. 在系统启动时,配置 WS2812 的物理输出引脚 `P2.3` (MOSI)
2. 支持一上一下级联Daisy-chained的双 WS2812B/FCOB-2.7 灯珠驱动。上灯 DOUT 串行连接至下灯 DIN。
3. 提供高速的硬件 SPI 发送驱动,配合 LUT 查表展宽算法,连续发送 48-bit (24-bit × 2) 的 GRB 级联数据流,输出满足单线纳秒级精度的 WS2812 时序波形,使两个灯珠同步亮起相同的颜色。
4. 在硬件 SPI 传输 48位灯效数据时采取临时关闭中断并把复用的 `P2.5` 配置为高阻输入的隔离防噪处理
5. 维护软件定时闪烁状态机,提供报警状态下的指示灯颜色与特定频率闪烁效果。
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 红光快速交替爆闪)。
---
## 2. LED 报警色彩矩阵
根据 7 种不同的外部传感器类型及本地主动求救,亮起对应的 LED 灯:
根据防区传感器类型及报警动作亮起指示灯:
* **门磁/窗磁 (PORTE)**:红色闪烁。
* **PIR 人体红外 (PIR)**:橙色闪烁。
* **烟雾传感器 (FUMEE)**:绿色闪烁。
@@ -21,14 +24,20 @@
* **气体泄漏 (GAZ)**:紫色闪烁。
* **水浸传感器 (INOND.)**:黄色闪烁。
* **振动传感器 (VIBRA.)**:青色闪烁。
* **本地主动 SOS**红色快速交替闪烁。
* **本地主动 SOS**双红灯以 50ms 周期高速交替闪烁。
---
## 3. 接口与函数说明
* `void WS2812_Init(void)`配置 `P2.3` 引脚为推挽输出模式
* `void WS2812_Write24Bit(u8 g, u8 r, u8 b)`:使用硬件 SPI 方式串行发送 24-bit 颜色数据给级联灯珠。发送前后进行 `P2.5` 引脚高阻/推挽切换屏蔽马达时钟抖动。
* `void WS2812_Reset(void)`:发送大于 80us 的低电平复位脉冲使颜色锁存生效
* `void LED_Set_Color(u8 g, u8 r, u8 b)`:立即设置 RGB 灯亮起特定颜色
* `void LED_Flash_Process(void)`:在 1ms 定时器中断中累加,控制报警状态下指示灯的交替闪烁(如 500ms 亮、500ms 灭)
* `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 中断中调用,控制指示灯处于交替爆闪或间歇闪烁的状态机更新。
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V2 -->