23 KiB
MCU方案接入协议通讯文档
修订记录
| 文档版本 | 协议版本 | 日期 | 编写人 | 修订类型 | 修订内容 |
|---|---|---|---|---|---|
| V1.0.0 | V1.0 | 2026-07-08 | 麦田 | 新建 | 首次发布 MCU方案接入协议通讯文档 |
协议说明
-
通信接口:UART。
-
默认通信参数:9600bps,8数据位,1停止位,无校验,无流控。
-
数据采用大端模式(Big Endian)传输。
-
数据帧格式: 包头 + 包长度 + 命令 + 序列号 + 数据 + 校验和。
-
包头固定为
0x55AA。 -
包长度表示 命令开始至校验和结束 的数据长度。
-
命令字(Command)用于区分不同功能。
-
序列号(Seq)由请求方递增生成,ACK需原样返回,用于匹配请求与响应。
-
默认所有命令采用 一问一答机制,发送方发送命令后,接收方必须返回对应 ACK。
-
ACK 数据包包含 Result 字段,用于返回执行结果。
-
超时未收到 ACK 时,发送方可进行重试,最大重试次数建议为 3 次。
-
数据点标志(Bitmap)由 DP 配置文档自动生成,一个 Bit 对应一个 DP。
-
数据点值按照 Bitmap 中 Bit 置位顺序依次排列。
-
读取命令通过 Bitmap 指定需要读取的 DP,Bitmap 全 1 表示读取全部 DP。
-
BLE 模组主要负责数据透传、蓝牙连接及状态管理,业务数据由 MCU 处理。
-
校验方式:累加和校验(Sum Check),计算范围为 包长度字段至校验和前一个字节。
Result 定义:
| 值 | 含义 |
|---|---|
| 0x00 | 成功 |
| 0x01 | 参数错误 |
| 0x02 | 设备忙 |
| 0x03 | 不支持该操作 |
| 0x04 | 校验错误 |
| 0x05 | 执行失败 |
OTA 专用错误码
| 值 | 含义 |
|---|---|
| 0x20 | 无需升级(版本一致) |
| 0x21 | OTA 版本低于当前版本 |
| 0x22 | Flash 空间不足 |
| 0x23 | OTA 状态错误 |
| 0x24 | OTA文件检验失败 |
| 0x25 | 升级失败 |
基本通讯协议
BLE获取设备身份信息
BLE模组 => MCU
功能说明: BLE上电启动完成后,主动向MCU获取设备身份信息。 BLE需要获取产品类别、产品型号等信息,用于蓝牙广播及设备识别。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x01 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE模组
功能说明: MCU返回设备身份信息,BLE保存后用于蓝牙广播。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x02 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果 |
| 6 | Protocol Version | 2 | 通讯协议版本号 |
| 7 | Category Code | 8 | 产品类别,例如 CBCT |
| 8 | Product Code | 8 | 产品型号,例如 PICBCT |
| 9 | SN | 16 | 产品唯一序列号(预留) |
| 10 | Capability Bitmap | 8 | 产品能力信息(预留) |
| 11 | 校验和 | 1 | 和校验 |
Capability Bitmap定义
功能说明: 用于描述设备支持的功能能力,APP根据能力决定是否显示对应功能。
| Bit | 功能定义 | 说明 |
|---|---|---|
| Bit0 | BLE OTA | 支持BLE固件升级 |
| Bit1 | MCU OTA | 支持MCU固件升级 |
| Bit2 | APP直连BLE | 支持APP直接连接BLE |
| Bit3 | IPC网关连接 | 支持IPC作为BLE网关 |
| Bit4 | 产测模式 | 支持生产测试 |
| Bit5 | 参数配置 | 支持参数读写 |
| Bit6 | 日志功能 | 支持日志上传 |
| Bit7 | 预留 | |
| Bit8~63 | 扩展 | 后续功能扩展 |
BLE模组获取MCU信息
BLE模组绑定之后会向MCU获取版本号,并与自身的版本号进行组包发送给网关。
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x40(下发控制) |
| 4 | 序列号 | 1 | APP递增生成,ACK原样回传 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x41(应答下发控制) |
| 4 | 序列号 | 1 | 与请求的序列号一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | MCU Version | 3 | MCU固件版本号,格式:主版本号(1Byte)+次版本号(1Byte)+修订版本号(1Byte),显示格式为:Vx.x.x |
| 7 | Hardware Version | 3 | MCU硬件版本号,格式:硬件主版本号(1Byte)+硬件次版本号(1Byte)+硬件修订版本号(1Byte),显示格式:Vx.x.x |
| 8 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
Version版本格式说明
| 字节 | 字段名称 | 内容说明 |
|---|---|---|
| Byte0 | 主版本号 | 产品架构、通信协议等重大变化时递增 |
| Byte1 | 次版本号 | 新增功能或功能优化时递增 |
| Byte2 | 修订版本号 | Bug修复、参数调整、性能优化时递增 |
示例
| MCU Version | 版本号 |
|---|---|
| 0x01 0x02 0x05 | V1.2.5 |
| 0x05 0x02 0x21 | V5.2.33 |
BLE模块控制设备
数据部分BLE只是负责透传,所以实际上数据是APP与MCU的通讯,BLE后面会做成一个模块,为了后续嵌入式开发工程师不必关心APP端,所以这里写BLE,方便理解
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x03(下发控制) |
| 4 | 序列号 | 1 | APP递增生成,ACK原样回传 |
| 5 | 数据点标志 | x((DP数量+7)/8) | 一个字节可代表8个数据点 |
| 6 | 数据点值 | x | 数据值 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x04(应答下发控制) |
| 4 | 序列号 | 1 | 与请求的序列号一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模块读取设备
数据部分BLE只是负责透传,所以实际上数据是APP与MCU的通讯,BLE后面会做成一个模块,为了后续嵌入式开发工程师不必关心APP端,所以这里写BLE,方便理解
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x05(下发读取) |
| 4 | 序列号 | 1 | APP递增生成,ACK原样回传 |
| 5 | 数据点标志 | x((DP数量+7)/8) | 指定需要读取的 DP,Bitmap 全 1 表示读取全部 DP |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x06(应答读取) |
| 4 | 序列号 | 1 | 与请求的序列号一致 |
| 5 | 数据点标志 | x((DP数量+7)/8) | 返回的数据点标志 |
| 6 | 数据点值 | x | 数据值 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU主动向BLE模组上报数据
数据部分BLE只是负责透传,所以实际上数据是APP与MCU的通讯,BLE后面会做成一个模块,为了后续嵌入式开发工程师不必关心APP端,所以这里写BLE,方便理解
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x07(主动上报) |
| 4 | 序列号 | 1 | 设备递增生成 |
| 5 | 数据点标志 | x((DP数量+7)/8) | 一个字节可代表8个数据点 |
| 6 | 数据点值 | x | 数据值 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x08(应答主动上报) |
| 4 | 序列号 | 1 | 与上报的序列号一致 |
| 5 | Result | 1 | 执行结果(一般返回0x00) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU配置配网参数
MCU => BLE模组
功能说明: MCU 请求 BLE 进入配对(配网)模式。BLE 收到请求后进入配网状态,并返回执行结果。
这里预留了Param 字段,该字段仅对wifi模组有效,目前预留着,后续可能会用wifi模组。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x10 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 配网方式 | 1 | 1:纯蓝牙配网 2:WIFI/双模配网 |
| 6 | 配网超时时间 | 2 | 单位:秒,例如 120 |
| 7 | Param Len | 1 | 当配网方式为2时,存在该字段。 用于配置参数长度 |
| 8 | Param Data | Param Len | 当配网方式为2时,存在该字段。 用于配置参数数 |
| 9 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组 => MCU
功能说明: BLE 返回进入配对(配网)模式的执行结果。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x11 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
心跳
当BLE模组超过55秒没有收到MCU的数据包,应向MCU发送心跳包。MCU收到心跳包后马上应答。当BLE模组连续3次没有收到MCU 的心跳回复,可进行报警。
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x12 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU=>BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x13 |
| 4 | 序列号 | 1 | 与通知保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组推送工作状态
BLE模组 => MCU
功能说明: BLE 模组工作状态发生变化时,主动通知 MCU 当前工作状态,MCU 根据状态更新联网、配网及 OTA 状态。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x14 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 工作状态 | 1 | 工作状态 Bit 位定义见下表 |
| 6 | RSSI | 1 | 当前信号强度(单位:dBm,以 uint8_t 补码传输) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
工作状态定义
| Bit | 含义 |
|---|---|
| Bit0 | 已完成配网 |
| Bit1 | 已连接互联网(云) |
| Bit2 | APP 在线 |
| Bit3 | 手机已连接 BLE |
| Bit4 | OTA 升级中 |
| Bit5 | 配网模式中 |
| Bit6~Bit7 | Reserved |
RSSI 说明
-
RSSI 占 1 Byte。
-
协议传输类型为 uint8_t。
-
实际数值采用 int8_t 补码格式表示,单位为 dBm。
示例
| 接收数据(Hex) | 实际 RSSI |
|---|---|
| 0xD8 | -40 dBm |
| 0xC4 | -60 dBm |
| 0xB0 | -80 dBm |
| 0xA6 | -90 dBm |
RSSI 参考范围
| RSSI(dBm) | 信号质量 |
|---|---|
| ≥ -60 | 优秀 |
| -61 ~ -70 | 良好 |
| -71 ~ -80 | 一般 |
| -81 ~ -90 | 较差 |
| < -90 | 很差 |
MCU => BLE模组
功能说明:
MCU 收到 BLE 工作状态同步后返回执行结果,BLE 收到成功应答后认为 MCU 已完成状态更新。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x15 |
| 4 | 序列号 | 1 | 与通知保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU重置BLE模组
该命令预留,用于将BLE模组或者WiFi模组恢复出厂设置。
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x16 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x17 |
| 4 | 序列号 | 1 | 与通知保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU重启BLE模组
功能说明: MCU 请求 BLE 模组 重启。
MCU 发出命令后,BLE模组 需要回复ACK表示接受命令成功后再重启。
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x18 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x19 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组通知MCU重启
功能说明: BLE模组 请求 MCU 重启设备。
MCU 回复 BLE模组 后需等待600毫秒再进行重启,这是为了避免BLE模组没收到ACK而重复通知重启MCU。
BLE模组 => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x1A |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x1B |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU请求获取网络时间
当模组端没有获取到网络时间时,返回全0。
MCU => BLE模组
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x1C |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x1D |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 年 | 2 | 当前时区 |
| 7 | 月 | 1 | 当前时区 |
| 8 | 日 | 1 | 当前时区 |
| 9 | 时 | 1 | 当前时区 |
| 10 | 分 | 1 | 当前时区 |
| 11 | 秒 | 1 | 当前时区 |
| 12 | Unix 时间 | 4 | UTC 时间戳(秒) |
| 13 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
扩展通讯协议
MCU请求BLE模组进入产测模式
功能说明: MCU 请求 BLE 进入或退出产测模式。
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x20 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 模式 | 1 | 0x00:退出产测;0x01:进入产测 |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x21 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU通知BLE模组开启拍照
该指令发送给BLE模组后,BLE模组会通知摄像头网关开启拍照。
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x22 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 6 | 预留字段 | 2 | 预留两个字节的字段,后期可扩展 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x23 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU通知BLE模组开启录像
该指令发送给BLE模组后,BLE模组会通知摄像头网关开启录像。
录像时间为0时表示关闭录像
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x24 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 录像时间 | 2 | 单位:秒 |
| 6 | 预留字段 | 2 | 预留两个字节的字段,后期可扩展 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x25 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU通知BLE模组启动音频
该指令发送给BLE模组后,BLE模组会根据音频编号来播放flash中对应的音频。
录像时间为0时表示关闭录像
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x26 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 音频编号 | 1 | BLE模组中的音频编号 |
| 6 | 预留字段 | 2 | 预留两个字节的字段,后期可扩展 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x27 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组向MCU推送OTA升级
功能说明: BLE 将 升级相关的信息发送给 MCU,MCU 根据这些信息判断是否允许OTA升级,并返回升级准备结果。
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x30 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 固件版本(Firmware Version) | 3 | OTA 固件版本号 |
| 6 | 固件长度(Payload Length) | 4 | OTA Bin 数据长度 |
| 7 | 固件 CRC32(Payload CRC32) | 4 | OTA Bin 数据 CRC32 校验值 |
| 8 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x31 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result OTA 专用错误码定义) |
| 6 | Max Data Length | 2 | MCU 单次允许接收的最大 Payload 长度(Byte) |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组向MCU推送OTA数据
功能说明: BLE 根据 MCU 返回的 Max Data Length 对 OTA Bin 进行分片,并按顺序发送给 MCU。 MCU 每接收一包数据后立即返回应答,BLE 收到成功应答后继续发送下一包。
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x32 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 分片序号 | 2 | 当前数据包的分片序号,分片序号从1开始计算 |
| 6 | 总分片数 | 2 | |
| 7 | Payload Data | x | OTA Bin 数据,长度 ≤ Max Data Length |
| 8 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE
功能说明: MCU 成功接收并处理当前 OTA 数据包后返回 Result。 BLE 收到成功应答后继续发送下一包 OTA 数据;若返回失败,则停止本次 OTA 升级。
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x33 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU通知BLE模组OTA升级完成
功能说明: ** MCU完成OTA升级后,主动通知BLE当前升级结果及版本信息。 ** BLE收到后上传APP或服务器。
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x34 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | OTA Result | 1 | OTA结果 |
| 6 | MCU Version | 3 | 当前MCU固件版本 |
| 7 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x35 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE模组向MCU通知OTA停止
功能说明: BLE 主动通知 MCU 终止当前 OTA 升级流程。MCU 收到后立即停止 OTA 数据接收,释放 OTA 相关资源,并返回处理结果。
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x36 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x37 |
| 4 | 序列号 | 1 | 与请求保持一致 |
| 5 | Result | 1 | 执行结果(见 Result 定义) |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
MCU向BLE模组通知OTA停止
功能说明: MCU 在 OTA 过程中因内部异常无法继续升级时,主动通知 BLE 停止当前 OTA。BLE 收到通知后立即停止发送 OTA 数据,并返回应答。
MCU => BLE
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x38 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
BLE => MCU
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x39 |
| 4 | 序列号 | 1 | 与通知保持一致 |
| 5 | Result | 1 | 0x00:已收到并停止 OTA |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |