更新时间:2024-06-24 08:13:31下载pdf
蓝牙 LE 标准协议接入支持低功耗服务,以满足低功耗产品的开发需求。
蓝牙 LE 通用模组有正常模式和低功耗模式两种工作模式,两种工作模式的特性如下:
正常模式:蓝牙广播间隔约为 100 毫秒,目前暂不提供 MCU 设置的选项。串口同时支持上行和下行通信。
低功耗模式:
该模式下,蓝牙模组根据蓝牙事件或串口等外设事件自动在睡眠和运行状态之间切换。
蓝牙模组能够在低功耗状态下保持广播或维持连接。广播间隔约为 1 秒,MCU 可通过提供的接口设置,若设为 0
则关闭广播,否则按设置的间隔进行广播。
模组会在周期性的广播事件或连接事件发生时自动切换到运行状态,并执行其他仅在运行状态下执行的必要操作,例如串口数据的发送。
注意,在低功耗模式下,不支持串口数据的接收。因此,在模组处于低功耗模式时,MCU 需要通过唤醒引脚将模组唤醒,然后才能向模组发送串口数据。
BK3432 在进入低功耗模式后,将主动断开蓝牙连接并关闭蓝牙广播。
在模组低功耗唤醒以及唤醒 MCU 功能上,不同芯片不同品类的固件存在一些差异,具体参考以下功能特性对照表:
模组的低功耗工作状态由模组低功耗控制引脚的电平决定,MCU 可以通过低功耗控制引脚输出不同电平,控制模组的功耗状态。Lowpower_module_enable
表示是否需要通过 CMD-0xE5 使能低功耗功能模组,具体参考下表:
芯片(category) | Lowpower_module_enable | Module_wakeup_pin | Wakeup_level | Idle_level |
---|---|---|---|---|
TLSR825x (all) | Need | TL_B5 | High | Low |
PHY6222 (all) | Need | P26 | High | Low |
BK3432 (all) | Need | P03 (configurable) | High | Low |
BK3431q (lock) | Not need | P03 | High | Low |
NRF52832 (lock) | Not need | IO11 | Low | High |
FR8016 (all) | Need | PA0 | High | Low |
建议在唤醒模组后,延时 100ms 再使用串口。特殊情况下,对于 Telink 芯片在深度休眠后可能需要 1 秒的唤醒启动时间。
当模组需要发送数据给外部 MCU 时,模组会在 MCU 唤醒脚的电平切换至 wakeup_level
一定时间后,才发送数据给 MCU。发送完成后,恢复为 Idle_level
,具体参考下表:
芯片(category) | Lowpower_module_enable | Wakeup_mcu_pin | Wakeup_level | Idle_level |
---|---|---|---|---|
TLSR825x (all) | Need | TL_D2 | High | Low |
PHY6222 (all) | Need | P31 | High | Low |
BK3432 (all) | Need | / | / | / |
BK3431q (lock) | Not need | P10 | High | Low |
NRF52832 (lock) | Not need | IO14 | Low | High |
FR8016 (all) | Need | PA1 | High | Low |
唤醒时间见 CMD-0xB0 说明部分。
唤醒脚各平台默认上下拉情况可能存在差异,MCU 端与模组唤醒脚对接的引脚不要使用悬空状态。
该章节协议适用于所有蓝牙 LE 通用固件,部分协议接口仅在新固件上支持,以实际固件功能为准。
Lowpower_module_enable
字段为 Need
的固件,需要先通过该指令使能低功耗功能,然后才能通过 Module_wakeup_pin
控制模组的工作模式。MCU 发送
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xE5 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | Data | 是否使能低功耗功能
|
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
模组返回
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xE5 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | State | 返回的状态值
|
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
对于 Telink 模组,当计时功能和广播功能都关闭后,拉低模组低功耗引脚后会进入深度睡眠,功耗降低至 3 μA。在唤醒后,模组将重启并重新运行。
MCU 发送
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xE4 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | Data | 是否使能系统计时器
|
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
模组返回
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xE4 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | State | 返回的状态值
|
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
适用模组:目前仅适用于 BK3432 通用固件。
主要用于芯片对接您的自定义模组低功耗唤醒引脚。如果您需要使用非默认引脚外的引脚来唤醒模组,建议在 MCU 初始化 UART 后,立即通过该指令对模组低功耗唤醒引脚进行配置。
该设置永久存储。
由于模组进入低功耗后串口不可上行,所以 MCU 需要在模组上电 1s 内(模组上电 1s 内不会进入低功耗)进行设置或者在开启低功耗使能之前设置(模组默认是关闭低功耗使能的)。
MCU 发送
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xE3 |
4 5 |
2 | 数据长度 | 0x00 0x06 |
6~11 | 6 | 数据内容 CFG | 见下表 |
12 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
数据内容 CFG 格式
4 字节 | 1 字节 | 1 字节 |
---|---|---|
PIN_NUM | 保留 | 保留 |
PIN_NUM
大端传输,保留字段不解析,填写 0xff
/0x00
即可。如果对 PIN_NUM
不清楚,可联系您的涂鸦技术支持工程师或客户经理,来确认配置指令。
示例:
设置 BK3432 P03 为模组低功耗唤醒引脚,P03 对应 PIN_NUM
为 0x03
:
55 AA 00 E3 00 06 00 00 00 03 00 00 EB
设置 BK3432 P11 为模组低功耗唤醒引脚,P11 对应 PIN_NUM
为 0x11
:
55 AA 00 E3 00 06 00 00 00 11 00 00 F9
BK3432 目前有 P02、P03、P04、P05、P10、P11、P12、P13、P34、P14、P35、P32、P31 可配置。BK 的 Pxx 对应 PIN_NUM
为 0xxx
。
模组返回
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xE3 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | State | 返回的状态值
|
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
MCU 可以通过该接口配置自身从低功耗唤醒所需的时间 t
。
模组向 MCU 发送串口数据时,将会在发送前拉高或拉低 MCU 唤醒引脚,持续时间约为 t
。
在 MCU 进行修改后,需要测试唤醒时间是否足以正常唤醒 MCU。如果不能,可能需要调大唤醒时间。
调用时机建议为 MCU 在接收到 CMD-0x02 指令(55 aa 00 02 00 00 01
)后,调用该接口进行 MCU 低功耗唤醒配置。请注意,此设置非永久存储,模组上电/重启后将恢复默认值。
MCU 发送
序号 | 字节数 | 字段 | 说明 |
---|---|---|---|
0 1 |
2 | 帧头 | 0x55 0xAA |
2 | 1 | 版本号 | 0x00 |
3 | 1 | 命令字 CMD | 0xB0 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | interval | 见说明 |
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
interval
表示间隔单位,为 10ms。取值范围为 1~20,即最小支持 10ms,最大支持 200ms。
示例:
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 | 0xB0 |
4 5 |
2 | 数据长度 | 0x00 0x01 |
6 | 1 | State | 返回的状态值
|
7 | 1 | CRC8 | 从帧头开始按字节求和得出的结果对 256 求余 |
A:低功耗产品对接通常需要注意以下事项:
模组将在每次连接到手机 App 或网关后,自动获取云端时间,以便校准蓝牙模组内部时间。模组内部时钟系统的精度取决于晶振的质量。如果您需要模组提供高精度的时间,请务必测量模组内部时钟的精度。
请联系您的涂鸦技术支持工程师或客户经理,获取测试程序。请注意,模组内部时钟在掉电时将被重置。
当供电电压低于正常工作电压时,芯片内部 Flash 操作将有出错的风险,可能导致固件或用户数据异常修改。为了保护在此使用场景中的模组,可采取以下方法:
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈