forked from EmbeddedTeam/app_photomagnetic
- 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
76 lines
3.0 KiB
Markdown
76 lines
3.0 KiB
Markdown
# 串口通信协议设计文档
|
||
|
||
- **帧结构**:`[起始标志:16bit][数据指令类型][数据字节数:8bit][数据][CRC]`
|
||
- CRC从[数据指令类型]到[数据]结束
|
||
- 温度:0x00指令
|
||
- 主板请求:0x[7ee7][00][00][crc16]
|
||
- 小板回:0x[7ee7][00][02][2411][crc16]
|
||
- 主板请求时,小板回复温度
|
||
- id:0x01指令
|
||
- 主板发 0x[7ee7][01][00][crc16]
|
||
- 小板发 0x[7ee7][01][03][989680][crc16]
|
||
- 主板请求时,小板回复id
|
||
- 小板在系统上电时,主动发一次id
|
||
- 运行状态:0x02指令
|
||
- 主板发 0x[7ee7][02][01][状态值][crc16]
|
||
- 主板在运行状态变化时,主动向小板上报状态
|
||
- 状态值定义:
|
||
- 0x00:待机中
|
||
- 0x01:运行中
|
||
- 0x02:暂停中
|
||
- 0x03:故障中
|
||
- 写UID:0x07指令(生产烧录自定义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分区(0x70000,64KB)起始处,记录格式
|
||
`[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
|
||
```
|