# 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|和校验(包长度\.\.\.校验和前一个字节)|