test_led_strip/doc/通讯协议.md
zhangyisong 27ae21bbea Add UID management, LED strip debug, and MCUboot signing updates
- Add UID encoding/decoding with flash storage and CRC16 validation
- Add write UID (0x07) and LED strip color (0x08) protocol commands
- Add debug LED strip configuration option
- Switch MCUboot signing from RSA-2048 to ECDSA-P256
- Add SMP serial client for firmware upload over UART
- Add firmware version output on boot
- Update upgrade documentation with ECDSA key generation steps
2026-08-20 21:16:30 +08:00

76 lines
3.0 KiB
Markdown
Raw Permalink 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.

# 串口通信协议设计文档
- **帧结构**`[起始标志16bit][数据指令类型][数据字节数8bit][数据][CRC]`
- CRC从[数据指令类型]到[数据]结束
- 温度0x00指令
- 主板请求0x[7ee7][00][00][crc16]
- 小板回0x[7ee7][00][02][2411][crc16]
- 主板请求时,小板回复温度
- id0x01指令
- 主板发 0x[7ee7][01][00][crc16]
- 小板发 0x[7ee7][01][03][989680][crc16]
- 主板请求时小板回复id
- 小板在系统上电时主动发一次id
- 运行状态0x02指令
- 主板发 0x[7ee7][02][01][状态值][crc16]
- 主板在运行状态变化时,主动向小板上报状态
- 状态值定义:
- 0x00待机中
- 0x01运行中
- 0x02暂停中
- 0x03故障中
- 写UID0x07指令生产烧录自定义UID替代MCU芯片UID
- 主板发 0x[7ee7][07][0a][uid 10字节][crc16]
- 将10字节UID写入小板storage分区flash掉电不丢失
- 写入后0x01读ID指令返回的是该UID
- UID编码规则见《UID编码规则.md》
`[设备类型 1B][产品代次 1B][生产年月 4B][序列号 4B]`
- 主板发 0x[7ee7][07][00][crc16]
- 清除自定义UID恢复使用MCU芯片UID
- 小板回 0x[7ee7][07][01][状态][crc16]
- 状态值定义:
- 0x00成功
- 0x01写入失败flash擦除/写入/校验错误)
- 0x02长度错误UID必须为10字节或0字节=清除)
- 说明UID在storage分区0x7000064KB起始处记录格式
`[magic "UID1" 4B][ver 1B][uid 10B][crc16 2B][pad 7B]`
含CRC16-Modbus校验损坏/未写入时自动回退芯片UID
- 灯带调色(调试)0x08指令仅调试固件 CONFIG_APP_DEBUG_LED_STRIP=y 时存在,
生产固件不编译此命令)
- 主板发 0x[7ee7][08][03][R][G][B][crc16]
- 灯带整体设为该 RGB 颜色R/G/B 各 0~255
- [0,0,0] 即熄灭
- 用于开发/产线检查灯光颜色是否满足需求
```mermaid
sequenceDiagram
participant S as 小板 (传感器)
participant M as 主板 (控制板)
Note over S: 系统上电
S ->> M: 【主动】发送 ID 信息 (0x01 指令帧)
Note over S, M: 周期性温度上报 (每 20ms 一次)
loop 每 20ms
S ->> M: 【主动】发送温度数据帧 (0x00 指令)
end
Note over M, S: CRC 校验范围:从帧第 3 字节开始至 CRC 前
Note over M: 主板运行状态变化
M ->> S: 【主动】发送运行状态 (0x02 指令帧)
opt 主板查询
M ->> S: 请求 ID 信息 (0x01 指令帧)
S -->> M: 回复 ID 序列号
M ->> S: 请求 温度 信息 (0x00 指令帧)
S -->> M: 回复 温度 数据
end
Note over M, S: 生产烧录 UID (0x07 指令)
M ->> S: 写入 12 字节 UID (0x07 指令帧)
S -->> M: 回复状态 (0x00 成功)
M ->> S: 请求 ID 验证 (0x01 指令帧)
S -->> M: 回复写入后的 UID
```