Uart&SPP通用协议

一、标准帧格式

传输方向 帧头 方向位 设备类型 主命令 从命令 数据长度 数据位 帧尾
PC->IC 0x55 0xAA Device Type Main_CMD Sub_CMD Payload_Len Payload 0xFF
IC->PC 0x55 0xBB Device Type Main_CMD Sub_CMD Payload_Len Payload 0xFE

Device Type类型:Headset:0x10,Earbuds_L:0x11,Earbuds_R:0x12 , EarbudsL&R: 0x13 ,Charge Box:0x14,Dongle:0x15,Others:0x16。
帧头规则:SPP协议用0x55,BLE命令用0x68,Uart命令用0x7c

二、通用命令 Main_CMD = 0x01

2.1 蓝牙相关[0x00:0x2F]

功能 传输方向 帧头 方向 设备类型 主命令 从命令 数据长度 数据位 帧尾 备注
获取SPP连接状态 PC->IC 0x55 0xAA \ 0x01 0x00 0x00 0x00 0xFF
获取SPP连接状态 IC->PC 0x55 0xBB \ 0x01 0x00 0x00 0x00:未连接,0x11:已连接 0xFE 作为心跳包来判断SPP是否连接
获取软件版本号 PC->IC 0x55 0xAA \ 0x01 0x01 0x00 0x00 0xFF
获取软件版本号 IC->PC 0x55 0xBB \ 0x01 0x01 0x04 0x00 0x00 0x00 0x06 0xFE 示例版本号为V0.0.0.6
获取本地地址 PC->IC 0x55 0xAA \ 0x01 0x02 0x00 0x00 0xFF
获取本地地址 IC->PC 0x55 0xBB \ 0x01 0x02 0x06 0xaa 0x00 0x02 0x01 0x06 0xab 0xFE 示例地址为 aa:00:02:01:06:ab
获取对耳地址 PC->IC 0x55 0xAA \ 0x01 0x03 0x00 0x00 0xFF
获取对耳地址 IC->PC 0x55 0xBB \ 0x01 0x03 0x06 0xaa 0x00 0x02 0x01 0x06 0xac 0xFE 示例地址为 aa:00:02:01:06:ac
设置本地地址 PC->IC 0x55 0xAA \ 0x01 0x04 0x06 0xaa 0x00 0x02 0x01 0x06 0xab 0xFF
设置本地地址 IC->PC 0x55 0xBB \ 0x01 0x04 0x06 0xaa 0x00 0x02 0x01 0x06 0xab 0xFE 设置成功返回 aa:00:02:01:06:ab ,设置失败依旧返回本地地址
设置对耳地址 PC->IC 0x55 0xAA \ 0x01 0x05 0x06 0x00 0x02 0x01 0x06 0xac 0xFF
设置对耳地址 IC->PC 0x55 0xBB \ 0x01 0x05 0x06 0xaa 0x00 0x02 0x01 0x06 0xac 0xFE 设置成功返回 aa:00:02:01:06:ac,设置失败依旧返回本地地址
获取共享地址 PC->IC 0x55 0xAA \ 0x01 0x06 0x00 0x00 0xFF
获取共享地址 IC->PC 0x55 0xBB \ 0x01 0x06 0x06 0xaa 0x00 0x02 0x01 0x06 0xab 0xFE 共享地址一般是主耳的地址,也是对外暴露的地址
获取TWS连接状态 PC->IC 0x55 0xAA \ 0x01 0x07 0x00 0x00 0xFF
获取TWS连接状态 IC->PC 0x55 0xBB \ 0x01 0x07 0x01 0x?? 0xFE 0x00:TWS未连接,0x01:TWS已连接
获取双耳Role PC->IC 0x55 0xAA \ 0x01 0x08 0x00 0x00 0xFF
获取双耳Role IC->PC 0x55 0xBB \ 0x01 0x08 0x01 0x?? 0xFE 0x00:主耳,0x01:从耳
获取双耳声道 PC->IC 0x55 0xAA \ 0x01 0x09 0x00 0x00 0xFF
获取双耳声道 IC->PC 0x55 0xBB \ 0x01 0x09 0x01 0x?? 0xFE 0x00:左耳,0x01:右耳
获取耳机连接数量 PC->IC 0x55 0xAA \ 0x01 0x0a 0x00 0x00 0xFF
获取耳机连接数量 IC->PC 0x55 0xBB \ 0x01 0x0a 0x01 byte0: 0x00:未连接,0x01:连接一个,0x02:连接两个。byte1~byte6 :已连接第一个设备的地址,byte7~byte13:已连接第二个设备的地址。 0xFE 未连接会全返回0
获取最大连接数量 PC->IC 0x55 0xAA \ 0x01 0x0b 0x00 0x00 0xFF
获取最大连接数量 IC->PC 0x55 0xBB \ 0x01 0x0b 0x01 0x?? 0xFE 0x01:最多连接一个,0x02:最多连接两个
获取NV记忆最大数量 PC->IC 0x55 0xAA \ 0x01 0x0c 0x00 0x00 0xFF
获取NV记忆最大数量 IC->PC 0x55 0xBB \ 0x01 0x0c 0x01 0x?? 0xFE 一般最多记忆8个设备
获取NV记忆设备地址 PC->IC 0x55 0xAA \ 0x01 0x0d 0x00 0x00 0xFF
获取NV记忆设备地址 IC->PC 0x55 0xBB \ 0x01 0x0d 0x?? byte0:0x01 ,设备编号。byte1~6:设备地址。 byte7:0x02,设备编号。byte8~13:设备地址,其他以此类推 0xFE
获取双耳RSSI PC->IC 0x55 0xAA \ 0x01 0x0e 0x00 0x00 0xFF
获取双耳RSSI IC->PC 0x55 0xBB \ 0x01 0x0e 0x01 0x?? 0xFE 注意RSSI值为负数,越大信号越好
获取与设备RSSI PC->IC 0x55 0xAA \ 0x01 0x0f 0x00 0x00 0xFF
获取与设备RSSI IC->PC 0x55 0xBB \ 0x01 0x0f 0x01 0x?? 0xFE 注意RSSI值为负数,越大信号越好
耳机是否处于配对状态 PC->IC 0x55 0xAA \ 0x01 0x10 0x00 0x00 0xFF
耳机是否处于配对状态 IC->PC 0x55 0xBB \ 0x01 0x10 0x01 0x?? 0xFE 0x00:未处于配对状态。0x01:处于配对状态
TWS组队 PC->IC 0x55 0xAA \ 0x01 0x11 0x06 0x11 0x22 0x33 0x44 0x55 0x66 0xFF 交换左右耳地址
TWS组队 IC->PC 0x55 0xBB \ 0x01 0x11 0x06 0x11 0x22 0x33 0x44 0x55 0x66 0xFE
TWS解除组队 PC->IC 0x55 0xAA \ 0x01 0x12 0x00 0x00 0xFF
TWS解除组队 IC->PC 0x55 0xBB \ 0x01 0x12 0x00 0x00 0xFE
查询TWS组队状态 PC->IC 0x55 0xAA \ 0x01 0x13 0x00 0x00 0xFF
查询TWS组队状态 IC->PC 0x55 0xBB \ 0x01 0x13 0x07 byte0:0x00, 未组队。0x01:已组队。byte1~6:对耳地址 0xFE 未组队不会返回对耳地址
耳机与Dongle组队 PC->IC 0x55 0xAA \ 0x01 0x14 0x06 0x11 0x22 0x33 0x44 0x55 0x66 0xFF 将Dongle地址通过SPP发给耳机
耳机与Dongle组队 IC->PC 0x55 0xBB \ 0x01 0x14 0x06 0x11 0x22 0x33 0x44 0x55 0x66 0xFE
耳机与Dongle解除组队 PC->IC 0x55 0xAA \ 0x01 0x15 0x00 0x00 0xFF 将Dongle地址通过SPP发给耳机
耳机与Dongle解除组队 IC->PC 0x55 0xBB \ 0x01 0x15 0x00 0x00 0xFE
查询耳机与Dongle连接 PC->IC 0x55 0xAA \ 0x01 0x16 0x00 0x00 0xFF 6
查询耳机与Dongle连接 IC->PC 0x55 0xBB \ 0x01 0x16 0x0c byte0:连接耳机数量。byte1-6:已连接第一个耳机地址,byte7-12:已连接第二个耳机地址 0xFE
查询耳机与Dongle组队状态 PC->IC 0x55 0xAA \ 0x01 0x17 0x00 0x00 0xFF 6
查询耳机与Dongle组队状态 IC->PC 0x55 0xBB \ 0x01 0x17 0x0c byte0:组队耳机数量。byte1-6:已记忆组队的第一个耳机地址,byte7-12:已记忆组队的第二个耳机地址 0xFE
获取耳机蓝牙名 PC->IC 0x55 0xAA \ 0x01 0x18 0x00 0x00 0xFF
获取耳机蓝牙名 IC->PC 0x55 0xBB \ 0x01 0x18 0x04 0x4F 0x64 0x69 0x6F 0xFE 会返回ASCII码格式的蓝牙名,不支持中文
获取耳机PID PC->IC 0x55 0xAA \ 0x01 0x19 0x00 0x00 0xFF
查询耳机PID IC->PC 0x55 0xBB \ 0x01 0x19 0x02 byte0:PID_H byte1:PID_L 0xFE
获取耳机VID PC->IC 0x55 0xAA \ 0x01 0x1a 0x00 0x00 0xFF
查询耳机VID IC->PC 0x55 0xBB \ 0x01 0x1a 0x02 byte0:VID_H byte1:VID_L 0xFE

2.2 获取耳机硬件信息[0x30:0x3F]

功能 传输方向 帧头 方向 设备类型 主命令 从命令 数据长度 数据位 帧尾 备注
获取耳机硬件版本 PC->IC 0x55 0xAA \ 0x01 0x30 0x00 0x00 0xFF
获取耳机硬件版本 IC->PC 0x55 0xBB \ 0x01 0x30 0x02 0x00 0x03 0xFE 硬件版本号V03
获取耳机电量 PC->IC 0x55 0xAA \ 0x01 0x31 0x00 0x00 0xFF
获取耳机电量 IC->PC 0x55 0xBB \ 0x01 0x31 0x03 byte0:vbat_mv_h8,byte1:vbat_mv_l8,byte2:电量百分比 0xFE
获取NTC信息 PC->IC 0x55 0xAA \ 0x01 0x32 0x00 0x00 0xFF
获取NTC信息 IC->PC 0x55 0xBB \ 0x01 0x32 0x04 byte0:ntc_vol_h8,byte1:ntc_vol_l8,byte2:正负号,0是正,1是负,byte3:温度值 0xFE
获取按键状态 PC->IC 0x55 0xAA \ 0x01 0x33 0x00 0x00 0xFF
获取按键状态 IC->PC 0x55 0xBB \ 0x01 0x33 0x01 0x?? 0xFE 0x00:Released,0x01:Pressed
设置LED状态 PC->IC 0x55 0xAA \ 0x01 0x34 0x02 byte0:LED ID,byte1:0x01(on)/0x00(off) 0xFF
设置LED状态 IC->PC 0x55 0xBB \ 0x01 0x34 0x01 0x?? 0x?? 0xFE 返回上位机发送的数据
查询USB是否插入 PC->IC 0x55 0xAA \ 0x01 0x35 0x00 0x00 0xFF
查询USB是否插入 IC->PC 0x55 0xBB \ 0x01 0x35 0x01 0x00:Plug Out,0x01:Plug In 0xFE
查询AUX是否插入 PC->IC 0x55 0xAA \ 0x01 0x36 0x00 0x00 0xFF
查询AUX是否插入 IC->PC 0x55 0xBB \ 0x01 0x36 0x01 0x00:Plug Out,0x01:Plug In 0xFE
查询充电状态 PC->IC 0x55 0xAA \ 0x01 0x37 0x00 0x00 0xFF
查询充电状态 IC->PC 0x55 0xBB \ 0x01 0x37 0x01 0x00:No Charge,0x01:Charging,0x02:Charge Full 0xFE
设置充电电流 PC->IC 0x55 0xAA \ 0x01 0x38 0x02 byte0:current_h byte1:current_l 0xFF
设置充电电流 IC->PC 0x55 0xBB \ 0x01 0x38 0x02 返回上位机发送的数据 0xFE 若设置的电流超出范围,两个字节都会返回FF
设置限充电压 PC->IC 0x55 0xAA \ 0x01 0x39 0x02 byte0:vol_h byte1:vol_l 0xFF
设置限充电压 IC->PC 0x55 0xBB \ 0x01 0x39 0x02 返回上位机发送的数据 0xFE 若设置的电压超出范围,两个字节都会返回FF

2.3 耳机控制相关[0x40:0x5F]

功能 传输方向 帧头 方向 设备类型 主命令 从命令 数据长度 数据位 帧尾 备注
耳机关机 PC->IC 0x55 0xAA \ 0x01 0x40 0x00 0x00 0xFF
耳机关机 IC->PC 0x55 0xBB \ 0x01 0x40 0x00 0x00 0xFE
进船运 PC->IC 0x55 0xAA \ 0x01 0x41 0x00 0x00 0xFF
进船运 IC->PC 0x55 0xBB \ 0x01 0x41 0x00 0x00 0xFE
进DUT PC->IC 0x55 0xAA \ 0x01 0x42 0x00 0x00 0xFF
进DUT IC->PC 0x55 0xBB \ 0x01 0x42 0x00 0x00 0xFE
恢复出厂设置 PC->IC 0x55 0xAA \ 0x01 0x43 0x01 0x00:恢复出厂设置并重启,0x01:恢复出厂设置并关机 0xFF
恢复出厂设置 IC->PC 0x55 0xBB \ 0x01 0x43 0x01 0x?? 0xFE 数据位返回上位机发送过来的值
设置BT配对状态 PC->IC 0x55 0xAA \ 0x01 0x44 0x01 0x00:关闭配对,0x01:打开配对 0xFF
设置BT配对状态 IC->PC 0x55 0xBB \ 0x01 0x44 0x01 0x?? 0xFE 数据位返回上位机发送过来的值
工作模式切换 PC->IC 0x55 0xAA \ 0x01 0x45 0x01 0x01:BT 模式;0x02:Mesh模式;0x03:2.4G模式;0x04:AUX模式 0xFF
工作模式切换 IC->PC 0x55 0xBB \ 0x01 0x45 0x00 0x?? 0xFE 数据位返回上位机发送过来的值,切换失败返回FF
断开与设备连接 PC->IC 0x55 0xAA \ 0x01 0x46 0x00 0x00 0xFF
断开与设备连接 IC->PC 0x55 0xBB \ 0x01 0x46 0x00 0x00 0xFE
获取耳机工作模式 PC->IC 0x55 0xAA \ 0x01 0x47 0x00 0x00 0xFF
获取耳机工作模式 IC->PC 0x55 0xBB \ 0x01 0x47 0x01 0x?? 0xFE 0x01:BT 模式;0x02:Mesh模式;0x03:2.4G模式;0x04:AUX模式
清除与设备配对 PC->IC 0x55 0xAA \ 0x01 0x48 0x00 0x00 0xFF
清除与设备配对 IC->PC 0x55 0xBB \ 0x01 0x48 0x00 0x00 0xFE
耳机软复位 PC->IC 0x55 0xAA \ 0x01 0x49 0x00 0x00 0xFF
耳机软复位 IC->PC 0x55 0xBB \ 0x01 0x49 0x00 0x00 0xFE

2.4 声学控制类[0x60:0x7F]

功能 传输方向 帧头 方向 设备类型 主命令 从命令 数据长度 数据位 帧尾 备注
获取A2DP音量 PC->IC 0x55 0xAA \ 0x01 0x60 0x00 0x00 0xFF
获取A2DP音量 IC->PC 0x55 0xBB \ 0x01 0x60 0x01 0x?? 0xFE A2DP音量等级0~15
获取HFP音量 PC->IC 0x55 0xAA \ 0x01 0x61 0x00 0x00 0xFF
获取HFP音量 IC->PC 0x55 0xBB \ 0x01 0x61 0x01 0x?? 0xFE HFP音量等级0~15
设置A2DP音量 PC->IC 0x55 0xAA \ 0x01 0x62 0x01 0x?? 0xFF 发送0~15以内的值
设置A2DP音量 IC->PC 0x55 0xBB \ 0x01 0x62 0x01 0x?? 0xFE 返回用户发送的值
设置HFP音量 PC->IC 0x55 0xAA \ 0x01 0x63 0x01 0x?? 0xFF 发送0~15以内的值
设置HFP音量 IC->PC 0x55 0xBB \ 0x01 0x63 0x01 0x?? 0xFE 返回用户发送的值
设置TT状态 PC->IC 0x55 0xAA \ 0x01 0x64 0x00 0x00:Close,0x01:Open 0xFF
设置TT状态 IC->PC 0x55 0xBB \ 0x01 0x64 0x00 0x?? 0xFE 返回用户发送的值
设置TT等级 PC->IC 0x55 0xAA \ 0x01 0x65 0x01 0x?? 0xFF 可选参数1~3
设置TT等级 IC->PC 0x55 0xBB \ 0x01 0x65 0x01 0x?? 0xFE 返回用户发送的值
设置ANC状态 PC->IC 0x55 0xAA \ 0x01 0x66 0x00 0x00:Close,0x01:Open 0xFF
设置ANC状态 IC->PC 0x55 0xBB \ 0x01 0x66 0x00 0x?? 0xFE 返回用户发送的值
设置ANC等级 PC->IC 0x55 0xAA \ 0x01 0x67 0x01 0x?? 0xFF 可选参数1~3
设置ANC等级 IC->PC 0x55 0xBB \ 0x01 0x67 0x01 0x?? 0xFE 返回用户发送的值
设置Talk Mic状态 PC->IC 0x55 0xAA \ 0x01 0x68 0x01 0x00:Close,0x01:Open 0xFF
设置Talk Mic状态 IC->PC 0x55 0xBB \ 0x01 0x68 0x01 0x?? 0xFE 返回用户发送的值
设置FF Mic状态 PC->IC 0x55 0xAA \ 0x01 0x69 0x01 0x00:Close,0x01:Open 0xFF
设置FF Mic状态 IC->PC 0x55 0xBB \ 0x01 0x69 0x01 0x?? 0xFE 返回用户发送的值
设置FB Mic状态 PC->IC 0x55 0xAA \ 0x01 0x6a 0x01 0x00:Close,0x01:Open 0xFF
设置FB Mic状态 IC->PC 0x55 0xBB \ 0x01 0x6a 0x01 0x?? 0xFE 返回用户发送的值
设置AUX状态 PC->IC 0x55 0xAA \ 0x01 0x6b 0x0 byte0: left channel open(01)/close(00), byte1: right channelopen(01)/close(00) 0xFF
设置AUX状态 IC->PC 0x55 0xBB \ 0x01 0x6b 0x02 0x?? 0x?? 0x?? 0x?? 0xFE 返回用户发送的值
获取AUX 音量 PC->IC 0x55 0xAA \ 0x01 0x6c 0x00 \ 0xFF
获取AUX 音量 IC->PC 0x55 0xBB \ 0x01 0x6c 0x01 0x?? 0xFE Line音量等级
设置AUX 音量 PC->IC 0x55 0xAA \ 0x01 0x6d 0x01 0x?? 0xFF 要设置的音量等级0-15
设置AUX 音量 IC->PC 0x55 0xBB \ 0x01 0x6d 0x01 0x?? 0xFE 返回用户发送的值
获取Mesh 音量 PC->IC 0x55 0xAA \ 0x01 0x6e 0x00 \ 0xFF
获取Mesh 音量 IC->PC 0x55 0xBB \ 0x01 0x6e 0x01 0x?? 0xFE Mesh音量等级
设置Mesh 音量 PC->IC 0x55 0xAA \ 0x01 0x6f 0x01 0x?? 0xFF 要设置的音量等级0-15
设置Mesh 音量 IC->PC 0x55 0xBB \ 0x01 0x6f 0x01 0x?? 0xFE 返回用户发送的值

三、Mesh相关命令 Main_CMD = 0x02

功能 传输方向 帧头 方向 设备类型 主命令 从命令 数据长度 数据位 帧尾 备注
获取Mesh芯片软件版本 PC->IC 0x55 0xAA \ 0x02 0x01 0x00 \ 0xFF
获取Mesh芯片软件版本 IC->PC 0x55 0xBB \ 0x02 0x01 0x03 0x01 0x00 0x01 0xFE 软件版本号是V1.0.1
获取Mesh分组 PC->IC 0x55 0xAA \ 0x02 0x02 0x00 \ 0xFF
获取Mesh分组 IC->PC 0x55 0xBB \ 0x02 0x02 0x01 0x?? 0xFE Mesh芯片所处分组
获取Mesh频道 PC->IC 0x55 0xAA \ 0x02 0x03 0x00 \ 0xFF
获取Mesh频道 IC->PC 0x55 0xBB \ 0x02 0x03 0x01 0x?? 0xFE Mesh芯片所处频道
获取Mesh发射功率 PC->IC 0x55 0xAA \ 0x02 0x04 0x00 \ 0xFF
获取Mesh发射功率 IC->PC 0x55 0xBB \ 0x02 0x04 0x01 0x?? 0xFE Mesh发射功率
允许Mesh芯片版本回退 PC->IC 0x55 0xAA \ 0x02 0x05 0x01 0x00:禁止回退,0x01:允许回退 0xFF 是否允许mesh芯片从新版本降回老版本
允许Mesh芯片版本回退 IC->PC 0x55 0xBB \ 0x02 0x05 0x01 0x?? 0xFE Odio项目的Mesh芯片是Nordic,bes可通过uart给nrf升级
获取嵌入的MESH固件版本 PC->IC 0x55 0xAA \ 0x02 0x06 0x00 \ 0xFF 给Nrf芯片升级要把固件放在BES的固件里面
获取嵌入的MESH固件版本 IC->PC 0x55 0xBB \ 0x02 0x06 0x03 0x01 0x00 0x02 0xFE 获取到BES内部存放的Nrf固件版本号是V1.0.2
开始/停止NRF升级 PC->IC 0x55 0xAA \ 0x02 0x07 0x01 0x00:停止升级,0x01:开始升级 0xFF 客户自定义的复位指令
开始/停止NRF升级 IC->PC 0x55 0xBB \ 0x02 0x07 0x00 返回上位机发送的数据 0xFE
Mesh芯片软复位 PC->IC 0x55 0xAA \ 0x02 0x08 0x00 \ 0xFF zephry官方的复位指令
Mesh芯片软复位 IC->PC 0x55 0xBB \ 0x02 0x08 0x00 \ 0xFE
Mesh芯片软复位 PC->IC 0x55 0xAA \ 0x02 0x09 0x00 \ 0xFF 客户自定义的复位指令
Mesh芯片软复位 IC->PC 0x55 0xBB \ 0x02 0x09 0x00 \ 0xFE
设置Mesh芯片供电 PC->IC 0x55 0xAA \ 0x02 0x0a 0x01 0x00:Close,0x01:Open 0xFF Nordic的供电是由Bes的一个引脚控制的
设置Mesh芯片供电 IC->PC 0x55 0xBB \ 0x02 0x0a 0x01 0x?? 0xFE
获取Mesh状态 PC->IC 0x55 0xAA \ 0x02 0x0b 0x00 0x00 0xFF
获取Mesh状态 IC->PC 0x55 0xBB \ 0x02 0x0b 0x01 0x?? 0xFE 返回值:0x00:未处于Mesh,0x01:处于Mesh,0x02:Mesh芯片升级中,0x03:Mesh Setting模式
设置Mesh状态 PC->IC 0x55 0xAA \ 0x02 0x0c 0x01 0x00:退出mesh,0x01:进入mesh 0xFF
设置Mesh状态 IC->PC 0x55 0xBB \ 0x02 0x0c 0x01 0x?? 0xFE
获取Mesh连接状态 PC->IC 0x55 0xAA \ 0x02 0x0d 0x00 0xFF
获取Mesh连接状态 IC->PC 0x55 0xBB \ 0x02 0x0d 0x01 0x00:mesh未连接,0x01:mesh已连接 0xFE
获取Mesh最大组网数 PC->IC 0x55 0xAA \ 0x02 0x0e 0x00 0x00 0xFF
获取Mesh最大组网数 IC->PC 0x55 0xBB \ 0x02 0x0e 0x01 0x?? 0xFE 最多可以组网的设备数
获取当前Mesh组网设备数 PC->IC 0x55 0xAA \ 0x02 0x0f 0x00 0x00 0xFF
获取当前Mesh组网设备数 IC->PC 0x55 0xBB \ 0x02 0x0f 0x01 0x?? 0xFE 当前已经组网的设备数,本机除外

posted on 2026-10-16 16:48  lyrics12138  阅读(11)  评论(0)    收藏  举报

导航