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

2.2 KiB
Raw Blame History

模块拆分 - WS2812B 可编程 RGB 灯效 (Docs/50_module-breakdown/mod-led.md)

本模块描述可编程幻彩 RGB 灯珠WS2812B/FCOB-2.7)的单线级联数据流驱动与报警色彩反馈。

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. 维护软件定时闪烁状态机,提供报警状态下的指示灯颜色与特定频率闪烁效果。

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 灭)。