# 串口通信协议设计文档 - **帧结构**:`[起始标志: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 ```