docs: 建立马达和 RGB 灯效的模块拆分及编码实现设计文档,并整理 UI 画册路径
This commit is contained in:
33
Docs/50_module-breakdown/mod-led.md
Normal file
33
Docs/50_module-breakdown/mod-led.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 模块拆分 - 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 -->
|
||||
32
Docs/50_module-breakdown/mod-motor.md
Normal file
32
Docs/50_module-breakdown/mod-motor.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# 模块拆分 - 振动马达驱动与反馈 (Docs/50_module-breakdown/mod-motor.md)
|
||||
|
||||
本模块描述手环告警与按键反馈的振动马达驱动逻辑。手环通过控制特定的振动时长与周期,向用户提供直观的物理触觉告警反馈。
|
||||
|
||||
## 1. 模块职责说明
|
||||
|
||||
* **职责范围**:
|
||||
1. 系统初始化时,将马达控制管脚 `P2.5` 配置为推挽输出模式。
|
||||
2. 提供底层的开关控制,使能或禁止马达供电(高电平振动,低电平静止)。
|
||||
3. 在 1ms 中断(Timer 1)中执行异步振动控制时序(Pulse Process),实现不阻塞 CPU 的各种复杂振动波形(如短振、长振、连续多次振动)。
|
||||
4. 根据接收到的 7 类传感器报警类型或本地主动 SOS 呼救状态,自动触发对应的振动模式。
|
||||
|
||||
## 2. 振动模式设计 (周期 5 秒)
|
||||
|
||||
* **门磁/窗磁 (PORTE)**:1 次短振 300ms。
|
||||
* **PIR 红外 (PIR)**:2 次短振 300ms (间隔 200ms)。
|
||||
* **烟雾传感器 (FUMEE)**:3 次短振 200ms (间隔 150ms)。
|
||||
* **紧急按钮 (URGENCE)**:1 次长振 800ms。
|
||||
* **气体泄漏 (GAZ)**:4 次短振 200ms (间隔 100ms)。
|
||||
* **水浸传感器 (INOND.)**:2 次长振 600ms (间隔 300ms)。
|
||||
* **振动传感器 (VIBRA.)**:连续 3 次短振 150ms (间隔 100ms)。
|
||||
* **本地主动 SOS**:持续性间歇长振(振 1000ms,停 200ms 循环)。
|
||||
|
||||
## 3. 接口与函数说明
|
||||
|
||||
* `void Motor_Init(void)`:初始化配置引脚 `P2.5` 为推挽输出,默认输出低电平(马达静止)。
|
||||
* `void Motor_Set_State(bit state)`:立即开关马达(直接写入 `P2.5` 引脚)。
|
||||
* `void Motor_Start_Alarm_Pattern(u8 pattern_type)`:传入传感器类型,装载对应的振动计数器和阶段标志,启动异步振动模式。
|
||||
* `void Motor_Pulse_Process(void)`:在 1ms 中断中调用(通常每 10ms 调度一次),更新振动时间计数器,切换各阶段电平以输出指定波形。
|
||||
* `void Motor_Stop(void)`:清空所有计数器并立即关闭马达,用以清除告警。
|
||||
|
||||
<!-- Checked and verified with always-on screen, sleep removal, screen replacement and battery/charge pins update changes -->
|
||||
Reference in New Issue
Block a user