更新时间:2025-11-27 08:36:44下载pdf
蓝牙单点通用模组支持通过命令的方式,访问或控制蓝牙相关功能,包括广播、连接和设备信息等。
蓝牙单点通用模组提供以下协议指令,用于访问和控制蓝牙相关功能:
| 命令字 | 命令说明 |
|---|---|
| 0xE7 | 控制蓝牙模组主动断开蓝牙连接。 |
| 0xA3 | 控制蓝牙模组的广播开关。 |
| 0xBC | 集成蓝牙模组广播开关控制逻辑的高级功能,用于配网窗口的配置。 |
| 0xA5 | 通过广播设置标志位,请求网关对蓝牙模组发起连接。 |
| 0xE2 | 修改蓝牙模组在低功耗状态时的广播间隔。 |
| 0xB1 | 修改蓝牙模组在连接维持状态时的连接间隔。 |
| 0xBA | 与 HID 靠近解锁方案相关的功能。 |
| 0xBB | 设置蓝牙广播名称。 |
| 0xBD | 修改蓝牙发射功率。 |
| 0xBE | 查询蓝牙模组的 MAC 地址。 |
断开蓝牙连接并进入广播状态。
MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xE7 |
| 4 5 |
2 | 数据长度 | 0x00 0x00 |
| 6 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xE7 |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | State | 返回的状态值 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
State 返回值说明:
0x00:成功默认配网模式下,模组工作在非低功耗状态时以固定的 100ms 间隔广播,工作在低功耗状态时下默认以 1000ms 间隔广播(MCU 可设置范围为 0~2000ms,其中 0 表示不广播)。
App 配网或连接设备都需要首先扫描到广播信号,以便发现设备,才可以继续下一动作。如果希望配网时机完全由 MCU 控制,可调用该接口来实现。
广播使能状态会记录在 Flash 中。如果希望配网时间由 MCU 控制,需在串口初始化后调用该接口,调整至 MCU 期望的默认使能状态。MCU 应在允许设备被配网或连接时开启使能,在不允许设备被配网或连接时关闭使能。
模组默认处于广播使能状态,通过该接口可以关闭模组广播使能。无论是低功耗还是非低功耗模式,关闭广播使能后,模组将不会广播。
如果模组在关闭广播使能之前处于广播状态,关闭后模组会立即停止广播。
打开广播使能后,模组会立即启动广播。
通过修改低功耗模式下的广播间隔只能控制低功耗状态下的广播。而通过该接口可以控制非低功耗模式下的广播,因此需要使用使能广播接口来控制配网时机。
如果模组支持高级功能——触发配网(CMD-0xBC),建议使用触发配网功能进行配网窗口的控制。
MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xA3 |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | Data | 见下表 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
Data 取值说明:
0x00:关闭广播使能0x01:打开广播使能模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xA3 |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | State | 返回的状态值 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
State 返回值说明:
0x00:成功MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 01 | 2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBC |
| 45 | 2 | 数据长度 Len | Len 高 8 位 Len 低 8 位 |
| 6~6+Len-1 | Len | Data | 见说明 |
| 6+Len | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
Data 说明:
| ENABLE | ON_OFF | TIME |
|---|---|---|
| 1 字节 | 1 字节 | 2 字节 |
ENABLE:
0x00:关闭触发配网模式,使用默认配网模式。当该字段为 0x00 时,后面字段无意义,模组不解析。0x01:启用触发配网模式。ON_OFF:
0x00:立即退出配网状态。当该字段为 0x00 时,后面字段无意义,模组不解析。0x01:立即进入配网状态。TIME:触发配网超时停止时间,单位秒,可设置范围 10~600(S)。模组返回
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBC |
| 4 5 |
2 | 数据长度 Len | Len 高 8 位 Len 低 8 位 |
| 6~6+Len-1 | Len | Status | 见说明 |
| 6+Len | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
Status:
0x00:成功0x01:参数错误0x02:请求失败0x03:状态错误(设备非未绑定状态)0xE0 上报。如果 MCU 检测到模组为绑定未连接状态,则调用该接口请求上线,模组上线后会自动释放通过 0xE0 上报的数据。0xE0 的 0x02 格式上报实时数据,模组上线后会将数据释放给 App(不建议使用)。MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xA5 |
| 4 5 |
2 | 数据长度 | 0x00 0x00 |
| 6 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xA5 |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | State | 返回的状态值 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
State 返回值说明:
0x00:成功BK3432 共享类通用固件暂不支持该接口。
为了降低休眠时的功耗,可以通过该指令修改广播间隔,广播参数将永久保存。当设置为 0 时,将关闭广播。该设置将永久储存。
低功耗下广播间隔默认 1s。广播间隔越大,连接所需要的时间越长,甚至某些性能差的手机可能很难连接上,因此不建议您修改成更大的广播间隔值。
MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xE2 |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | Adv_interval | 见下表 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
Adv_interval:可设置数值范围为 0 到 20,单位为 100ms,即实际广播间隔范围为 100ms 到 2 秒。当设置数值为 0 时将关闭广播。
示例:
55 aa 00 E2 00 01 00 E2:设置低功耗模式下关闭广播55 aa 00 E2 00 01 06 E8:设置低功耗下广播间隔为 600ms模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xE2 |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | State | 返回的状态值 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
State 返回值说明:
0x00:成功MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xB1 |
| 4 5 |
2 | 数据长度 | 0x00 0x0B |
| 6~16 | 11 | CFG | 见说明 |
| 17 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
CFG 格式:
| 1 字节 | 1 字节 | 1 字节 | 2 字节 | 2 字节 | 2 字节 | 2 字节 |
|---|---|---|---|---|---|---|
| cfg_type | cfg_ack | mode | min_interval | max_interval | latency | timeout |
cfg_type:配置方式
0x00:按模式配置,根据 mode 字段选择连接参数,min_interval、max_interval、latency、timeout 字段不生效。一般建议使用这种方式。0x01:自定义配置方式,支持自定义连接参数,即根据 min_interval~timeout 字段参数配置连接间隔,该方式供蓝牙设备使用。cfg_ack:配置响应
0x00:不需要配置成功响应0x01:需要配置成功响应。连接参数主要由主节点指定,有的情况会更新不成功。如果配置需要响应,则会在成功更新连接参数后,将使用的连接参数下发给 MCU。mode:
0x00:快速模式,蓝牙交互响应快,但功耗较高。适用于功耗要求一般,要求快速响应的产品。0x01:均衡模式,功耗和蓝牙交互响应速度适中。适用于对功耗要求一般的产品。0x02:低速模式,响应慢但功耗低。适用于对功耗要求高,但交互频率低的产品,例如传感类产品。min_interval:最小连接间隔,单位:1.25ms。范围参考 GAP 连接参数限制。
max_interval:最大连接间隔,单位:1.25ms。范围参考 GAP 连接参数限制。
latency:连接事件数量中的从属延迟。范围参考 GAP 连接参数限制。
timeout:连接超时时间,单位 10 ms。范围参考 GAP 连接参数限制。
大于两字节字段按大端传输。若无必要,cfg_type 和 cfg_ack 建议使用 0x00。
模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xB1 |
| 4 5 |
2 | 数据长度 | 0x00 0x09 |
| 6~14 | 1 | State | 返回的状态值 |
| 15 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
State 说明
| 1 字节 | 2 字节 | 2 字节 | 2 字节 | 2 字节 |
|---|---|---|---|---|
| result | min_interval | max_interval | latency | timeout |
result 说明
0x00:收到连接参数更新请求,模组将向主节点发起连接参数更新请求。min_interval、max_interval、latency、timeout 字段表示目标连接参数。
0x01:更新连接参数成功,min_interval、max_interval、latency、timeout 字段表示实际更新到的连接参数。
0x02:更新连接参数失败,min_interval、max_interval、latency、timeout 字段表示目标的连接参数。
0x03:非法状态,一般表示当前模组状态为非绑定已连接状态。
0x06:无效参数。
其他:失败
当 cfg_ack 配置为 0x01 的时候,模组才会在实际更新连接参数成功后,同步当前连接参数给 MCU。即只有 cfg_ack 设置为 0x01,result 0x01 和 0x02 才会收到,否则模组不会同步结果给 MCU。
示例:
设置为低速模式:
55 AA 00 B1 00 0B 00 00 02 00 00 00 00 00 00 00 00 BD55 AA 00 B1 00 09 00 01 90 01 A0 00 00 01 90 7C设置为均衡模式:
55 AA 00 B1 00 0B 00 00 01 00 00 00 00 00 00 00 00 BC55 AA 00 B1 00 09 00 00 90 00 A0 00 00 01 90 7A设置为快速模式:
55 AA 00 B1 00 0B 00 00 00 00 00 00 00 00 00 00 00 BB55 AA 00 B1 00 09 00 00 32 00 3C 00 00 01 90 B8设置为自定义参数:
55 AA 00 B1 00 0B 01 00 00 01 90 01 A0 00 00 01 90 7F55 AA 00 B1 00 09 00 01 90 01 A0 00 00 01 90 7C设置蓝牙不同连接间隔:
55 AA 00 B1 00 0B 01 01 00 00 08 00 08 00 00 02 58 2755 AA 00 B1 00 0B 01 01 00 00 0C 00 0C 00 00 02 58 2F55 AA 00 B1 00 0B 01 01 00 00 18 00 18 00 00 02 58 470x01 获取 MCU 信息中上传 TLD 字段,以使能 SMP 功能模组。否则,模组将拒绝该指令。MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBA |
| 4 5 |
2 | 数据长度 Len | Len 高 8 位 Len 低 8 位 |
| 6 | 1 | SubCmd | 见说明 |
| 7~7+Len-1 | Len | Data | 见说明 |
| 7+Len | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
SubCmd(子命令)
0x00:SMP 使能配置
暂不支持动态配置 SMP,请在 CMD-0x01(获取 MCU 信息)中上报 SMP 使能状态。默认不使能 SMP 模组,使能状态发生改变时蓝牙模组将会自重启一次,并清空配对信息,以完成相关初始化。该配置支持断电记忆。
0x01:请求 HID 配对
0x02:请求 HID 配对连接下的 RSSI
0x03:查询 HID 配对状态
SubCmd 不同,Data 字段的格式不一样,模组端依据 SubCmd 及下面 Data 的格式进行解析。
Data(数据格式)
SubCmd 为 0x01 和 0x03 时,Data 字段为空。
示例 1:请求 HID 配对
MCU > 模组:55 aa 00 BA 00 01 01 BB
示例 2:查询 HID 配对状态
MCU > 模组:55 aa 00 BA 00 01 03 BD
SubCmd 为 0x02 时 Data 字段填充的数据格式如下:
| 1 | 2 | 3 |
|---|---|---|
| op | num | interval |
op:操作。
0x00:停止获取。0x01:开始获取。num:需要获取 RSSI 的数量。
interval:下发 RSSI 的间隔,单位 100ms,限制可设置范围为 1~20。
55 AA 00 BA 00 04 02 01 0A 02 CC模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBA |
| 4 5 |
2 | 数据长度 Len | Len 高 8 位 Len 低 8 位 |
| 6 | 1 | SubCmd | 见下表 |
| 7~7+Len-1 | Len | Data | 见说明 |
| 7+Len | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
SubCmd(子命令)
0x00:SMP 使能配置
0x01:请求 HID 配对
0x02:请求 HID 配对连接下的 RSSI
0x03:查询 HID 配对状态/HID 配对状态通知
SubCmd 不同,Data 字段的格式不一样,MCU 请依据 SubCmd 及下面 Data 的格式进行解析。
SubCmd 为 0x00 时 Data 字段填充的数据为 1 个字节的状态码 Status,其含义如下:
Status:
0x00:SMP 使能成功0x01:SMP 使能失败SubCmd 为 0x01 时 Data 字段填充的数据为 1 个字节的状态码 Status,其含义如下:
Status:
0x00:已发送 HID 配对请求0x01:HID 配对失败0x02:HID 配对成功0x03:状态错误0x04:拒绝SubCmd 为 0x02 时 Data 字段填充的数据格式如下:
| 1 | 2 |
|---|---|
| Status | rssi_raw |
rssi_raw:status 非 0 的情况下,rssi_raw 的值为 0xff。rssi_real:= rssi_raw - 110。假设 rssi_raw 返回值为 50,则 rssi_real 为 -60 dB。Status:
0x00:成功0x02:参数错误0x03:非 HID 连接配对状态0x04:拒绝SubCmd 为 0x03 时 Data 字段填充的数据为 1 个字节的状态码 Status,其含义如下:
Status:
0x00:未连接0x01:已连接0x02:HID 配对已连接0x04:拒绝0x05:HID 配对已连接且校验通过仅允许处于未绑定状态时设置,其他状态模组将拒绝。
MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBB |
| 4 5 |
2 | 数据长度 Len | Len 高 8 位 Len 低 8 位 |
| 6~6+Len-1 | Len | Data | 见说明 |
| 6+Len | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
Data 格式
| 1 | 2~2+ADV_LOCAL_NAME_LEN-1 |
|---|---|
| ADV_LOCAL_NAME_LEN | ADV_LOCAL_NAME |
ADV_LOCAL_NAME_LEN:广播名的字符串长度。基于 V2.1.2 以下基线的固件最大支持 5 个字节,V2.1.2(含)以上的最大支持 14 个字节。ADV_LOCAL_NAME:广播名字,ASCII 码。模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBB |
| 4 5 |
2 | 数据长度 | 0x00 0x01 |
| 6 | 1 | State | 返回的状态值 |
| 7 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
State 返回值说明:
0x00:成功0x01:超出长度0x02:拒绝MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBD |
| 4 5 |
2 | 数据长度 | 0x00 0x02 |
| 6 | 1 | OP | 见说明 |
| 7 | 1 | TX_POWER | 见说明 |
| 8 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
OP:
0x00:获取0x01:设置TX_POWER:
当 OP 为 0x00 时,该字段仅占位作用,无实际意义。
当 OP 为 0x01 时,发射功率寄存器配置,请联系涂鸦技术支持人员获取。
模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBD |
| 4 5 |
2 | 数据长度 | 0x00 0x02 |
| 6 | 1 | OP | 见说明 |
| 7 | 1 | Value | 见说明 |
| 8 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
OP:同 MCU 发送。
Value:
OP 为 0x00 时,Value 值表示 TX_POWER。OP 为其他,Value 值表示设置结果,0x00 表示成功,其他表示失败。若 MCU 需要获取蓝牙模组的 MAC 地址信息,可通过该接口查询。
MCU 发送
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBE |
| 4 5 |
2 | 数据长度 | 0x00 0x00 |
| 6 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
模组回复
| 序号 | 字节数 | 字段 | 说明 |
|---|---|---|---|
| 0 1 |
2 | 帧头 | 0x55 0xAA |
| 2 | 1 | 版本号 | 0x00 |
| 3 | 1 | 命令字 CMD | 0xBE |
| 4 5 |
2 | 数据长度 | 0x00 0x06 |
| 6~11 | 6 | MAC | 见下表 |
| 12 | 1 | CRC8 | 从帧头开始按字节求和,得出的结果对 256 求余 |
示例:模组的 MAC 地址为 DC:23:66:11:22:33
MCU 发送:55 AA 00 BE 00 00 BD
模组回复:55 AA 00 BE 00 06 DC 23 66 11 22 33 8E
A:
0xA3)用于控制蓝牙模组的广播开关,所有广播相关的功能都依赖于此使能状态,可以理解为蓝牙广播的总开关。0xBC)则是集成了蓝牙模组广播开关逻辑的高级功能,侧重于配网窗口的控制,是蓝牙广播使能的一个具体应用。更多信息,请参考 蓝牙通用串口协议。
如果在开发过程遇到问题,您可以登录 TuyaOS 开发者论坛 TuyaOS-蓝牙设备开发 版块进行沟通咨询。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈