更新时间:2025-08-08 05:52:24下载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 7C0x01 获取 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-蓝牙设备开发 版块进行沟通咨询。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈