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

3.0 KiB
Raw Blame History

串口通信协议设计文档

  • 帧结构[起始标志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] 即熄灭
        • 用于开发/产线检查灯光颜色是否满足需求
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