1、喷淋器 P1/P2功能实现

2、红灯按连接态慢闪
This commit is contained in:
2026-09-09 19:57:00 +08:00
parent 074960eb02
commit 0dd65e1552
31 changed files with 2805 additions and 258 deletions
+22 -15
View File
@@ -7,7 +7,7 @@
| 工程 | `喷淋器_soc_JieLi-JL7016` |
| 产品码 | ProdtCode=`CBR2`productCode=`PRCBR2` |
| 协议 | 见宝 SOC 55AAV1.0.0 |
| 文档版本 | V1.0.0 |
| 文档版本 | V1.0.2 |
| 日期 | 2026.09.09 |
| 作者 | cyWu |
| 读者 | WorkBuddy / 固件开发 |
@@ -15,6 +15,10 @@
| 框架源头 | `D:\Jianbao\Project\产品\爬宠\温湿度风扇\温湿度风扇_soc_JieLi-JL7016`20ms + 500ms、按键分级、扫描时隙) |
| 灯驱参考 | `D:\Jianbao\Project\产品\宠物\门夹弹力绳\门夹弹力绳_soc_JieLi-JL7016`(红绿双通道硬件;**事件表不要抄加热垫互斥灯**) |
> **V1.0.22026-09-09):** 红灯跟 **BLE 连接态**:已连接常亮;已配对未连接(上电重连 / 断连)500ms 慢闪。避免上电把「已绑定」当成「已联网」。
>
> **V1.0.12026-09-09):** 灯脚改为与加热垫相同:**PA8 绿 / PA7 红**(低亮)。红绿通道独立语义不变。
>
> **V1.0.02026-09-09):** 首版共同理解。5V 常电双脚水泵;两键两灯;红绿通道独立;单击按上次配置跑「时长 × 次数 + 间隔」;APP 写 DP7 立刻开喷;湿度联动回差;7 条计划到点触发一轮(不是时间窗);运行记录计水泵实际转动秒;`MAX_PACKAGE_LEN=512`。
本文是 **已拍板的共同理解**,不是草稿。实现时以本文为准;DP 表以 `dp_definition.json` + 本文第 10.2 / 11.2 / 12.1 / 14.1 / 16 章为准。
@@ -36,7 +40,7 @@
11. 编码风格对齐风扇 + 工程师规范:文件小写+下划线,`g_` / `s_` 前缀,枚举 `Pascal_t`,接口 `xxx_init` / `xxx_run` 或 tick / `xxx_get_status`
12. **现有工程是协议骨架。** 没有 `apps/usr_app`、没有 `board_pin.h``app_main.c` 里上电强制 `usr_goto_pair=1` **必须删掉**,改为上电进工作态(已配对走重连广播)。
13. 调试 UART TX = **PC5**。关掉会与 PA8 / PA7 / PB1 / PA0 / PC2 / PA6 冲突的 demo 外设(IR 键、PWM LED、demo I2C 等)。
14. **红灯 PA8、绿灯 PA7** 加热垫PA8 绿 / PA7 红)**相反**,禁止照抄加热垫 `board_pin.h` 灯脚
14. **红灯 PA7、绿灯 PA8** 加热垫灯脚相同。禁止再把两灯脚写反
15. **灯是两路独立通道。** 喷淋 / 空闲只改绿灯,不要去关红灯;配网闪红灯时不要去关绿灯。只有 OTA 和配对失败动画临时占用双灯。禁止抄加热垫「开红关绿、互斥」事件表。
16. **上电绝不自动喷。** 不从 VM 恢复 DP1。泵两脚上电默认低。
17. **遵守第 0.1 节编码与注释。** 散落 static、把排障过程复制进每个函数、只写不读的计数,一律视为未完成。
@@ -69,8 +73,8 @@
| 功能 | MCU | 电平 / 说明 |
|---|---|---|
| 红灯 | **PA8** `IO_PORTA_08` | **低电平亮**(与加热垫灯脚相反 |
| 绿灯 | **PA7** `IO_PORTA_07` | **低电平亮**(与加热垫灯脚相反 |
| 红灯 | **PA7** `IO_PORTA_07` | **低电平亮**(与加热垫相同 |
| 绿灯 | **PA8** `IO_PORTA_08` | **低电平亮**(与加热垫相同 |
| 喷淋键 | **PB1** `IO_PORTB_01` | 低电平按下 |
| 配网键 | **PA0** `IO_PORTA_00` | 低电平按下 |
| 水泵总供电 | **PC2** `IO_PORTC_02` | **高电平**把 5V 导到泵 VCC |
@@ -185,7 +189,7 @@ P0 建议先 `LINKAGE/TIMER/TH_SCAN/RUNREC/NVM=0`,台上只验双键、双灯
- 设备工作态恒开机。DP0 本版忽略。DP1 是 **喷淋作业开关**
- 无电池、无充电逻辑。
- **冷启动水泵:** GPIO 先保持关。VM 恢复配置 / 联动 / 计划 / 运行记录,**不恢复 DP1,不开泵**。湿度没到之前联动不改它(第 13 章)。
- 上电灯:绿灯常亮;配对红灯常亮,未配对红灯灭
- 上电灯:绿灯常亮;配对红灯灭;已配对未连接红灯 500ms 慢闪;BLE 连上后红灯常亮。
### 5.2 两键分工(运行态)
@@ -222,7 +226,7 @@ P0 建议先 `LINKAGE/TIMER/TH_SCAN/RUNREC/NVM=0`,台上只验双键、双灯
## 6. LED(红绿独立通道,低亮)
灯脚:**PA8 红、PA7 绿**。两路独立,固件改其中一个 GPIO 时禁止顺手改另一个,除非命中下面的「双灯例外」。
灯脚:**PA7 红、PA8 绿**(与加热垫相同)。两路独立,固件改其中一个 GPIO 时禁止顺手改另一个,除非命中下面的「双灯例外」。
### 6.1 绿灯(喷淋通道)
@@ -239,9 +243,10 @@ P0 建议先 `LINKAGE/TIMER/TH_SCAN/RUNREC/NVM=0`,台上只验双键、双灯
| 状态 | 红灯 |
|---|---|
| 未配对 / 配对失败收尾后 | 灭 |
| 已配对(含断连重连、上电已配对) | **常亮**粘住;空闲 / 喷淋都不要关它) |
| 配网键满 5s 仍按住、以及配对进行中 | 100ms 亮 / 100ms 灭(此时即使已配对也改成闪) |
| 配对成功 | 常亮(接着当「已配对」 |
| 已配对、BLE **未连接**(上电重连 / 断连) | **500ms 慢闪**(空闲 / 喷淋都不要关它) |
| 已配对、BLE **已连接** | **常亮** |
| 配网键满 5s 仍按住、以及配对进行中 | 100ms 亮 / 100ms 灭(此时即使已配对也改成快闪 |
| 配对成功 | 若当时已连接则常亮,否则先慢闪,连上再常亮 |
配网闪红灯期间,绿灯继续按 6.1 闪或常亮,不要关绿灯。
@@ -252,7 +257,7 @@ P0 建议先 `LINKAGE/TIMER/TH_SCAN/RUNREC/NVM=0`,台上只验双键、双灯
| OTA | 红绿交替,200ms 半周期,直到升级结束 / 复位 | — |
| 配对失败 / 超时 | 红绿交替 3s | 红灯灭;绿灯回到空闲或喷淋 |
优先级高→低:**OTA → 配对失败动画 → 各走各的通道(红=配对态,绿=作业态)**。
优先级高→低:**OTA → 配对失败动画 → 各走各的通道(红=连接/配网态,绿=作业态)**。
---
@@ -672,7 +677,7 @@ apps/usr_app/
**目标:** 双键、双灯、双脚泵可独立验证。
- [ ] `board_pin.h` + UART TX=PC5,打印正常
- [ ] 插电即开机(不按键,绿灯常亮,泵两脚低;未配对红灯灭)
- [ ] 插电即开机(不按键,绿灯常亮,泵两脚低;未配对红灯灭;已配对未连接红灯 500ms 慢闪
- [ ] 单击 PB1:泵两脚同时高,按默认 10s × 3 次、间隔 3s 跑完;作业中绿灯 500ms 闪;结束后绿灯常亮、泵关
- [ ] 作业中再点 PB1:立刻双脚低、绿灯回常亮
- [ ] 示波器 / 逻辑:禁止出现「只高一只脚」
@@ -682,7 +687,7 @@ apps/usr_app/
- [ ] 满 5s 不松手到 12s → 不进配对,红绿交替进 OTA
- [ ] 长按进配对 / OTA 后不复位(动作走任务上下文)
- [ ] 上电强制 `usr_goto_pair=1` 已删除
- [ ] 灯脚确认:PA8=、PA7=绿(不要抄加热垫)
- [ ] 灯脚确认:PA8=绿、PA7=红(与加热垫相同
**P0 关闭:** `BOARD_LINKAGE/TIMER/TH_SCAN/RUNREC/NVM_ENABLE=0`
@@ -737,8 +742,8 @@ apps/usr_app/
#define BOARD_UART_TX_PIN IO_PORTC_05
#define BOARD_KEY_SPRAY_PIN IO_PORTB_01 /* 喷淋键,只短按 */
#define BOARD_KEY_PAIR_PIN IO_PORTA_00 /* 配网键,5s / 12s */
#define BOARD_LED_RED_PIN IO_PORTA_08 /* 红灯,低亮;与加热垫相 */
#define BOARD_LED_GREEN_PIN IO_PORTA_07 /* 绿灯,低亮;与加热垫相 */
#define BOARD_LED_RED_PIN IO_PORTA_07 /* 红灯,低亮;与加热垫相 */
#define BOARD_LED_GREEN_PIN IO_PORTA_08 /* 绿灯,低亮;与加热垫相 */
#define BOARD_PUMP_PWR_PIN IO_PORTC_02 /* 泵 5V 供电,高导通 */
#define BOARD_PUMP_SW_PIN IO_PORTA_06 /* 泵开关,高导通 */
@@ -752,6 +757,8 @@ apps/usr_app/
#define BOARD_LED_FAST_ON_MS 100 /* 配网红灯快闪 */
#define BOARD_LED_FAST_OFF_MS 100
#define BOARD_LED_RECONN_ON_MS 500 /* 已配对未连接:红灯慢闪 */
#define BOARD_LED_RECONN_OFF_MS 500
#define BOARD_LED_SPRAY_ON_MS 500 /* 作业绿灯闪 */
#define BOARD_LED_SPRAY_OFF_MS 500
#define BOARD_LED_OTA_ON_MS 200
@@ -777,7 +784,7 @@ apps/usr_app/
|---|---|
| 只开 PC2 或只开 PA6 | 禁止。泵接口必须成对 |
| 上电按 VM 自动喷 | 禁止。水会喷出来 |
| 抄加热垫灯脚(PA8 绿 / PA7 | 禁止。本机 PA8 / PA7 绿 |
| 灯脚写反PA8 / PA7 绿 | 禁止。本机与加热垫相同:PA8 绿 / PA7 |
| 抄加热垫互斥灯(开红关绿) | 禁止。红绿独立,空闲不要关红灯 |
| 抄加热垫时间窗定时 | 禁止。本机是到点触发一轮 |
| 抄加热垫过零 / 继电器 | 禁止 |