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

34 lines
2.0 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.

# 模块拆分 - WS2812B 可编程 RGB 灯效 (Docs/50_module-breakdown/mod-led.md)
本模块描述可编程幻彩 RGB 灯珠WS2812B/FCOB-2.7)的单线级联数据流驱动与报警色彩反馈。
## 1. 模块职责说明
* **职责范围**
1. 在系统启动时,配置 WS2812 的物理输出引脚 `P2.3` (MOSI)。
2. 提供高速的硬件 SPI 发送驱动,配合 LUT 查表展宽算法,输出满足单线纳秒级精度的 WS2812 时序波形。
3. 在硬件 SPI 传输 24位灯效数据时采取临时关闭中断并把复用的 `P2.5` 配置为高阻输入的隔离防噪处理。
4. 维护软件定时闪烁状态机,提供报警状态下的指示灯颜色与特定频率闪烁效果。
## 2. LED 报警色彩矩阵
根据 7 种不同的外部传感器类型及本地主动求救,亮起对应的 LED 灯:
* **门磁/窗磁 (PORTE)**:红色闪烁。
* **PIR 人体红外 (PIR)**:橙色闪烁。
* **烟雾传感器 (FUMEE)**:绿色闪烁。
* **紧急按钮 (URGENCE)**:蓝色闪烁。
* **气体泄漏 (GAZ)**:紫色闪烁。
* **水浸传感器 (INOND.)**:黄色闪烁。
* **振动传感器 (VIBRA.)**:青色闪烁。
* **本地主动 SOS**:红色快速交替闪烁。
## 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 灭)。
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->