低功耗服务

更新时间: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 通用固件,部分协议接口仅在新固件上支持,以实际固件功能为准。

使能低功耗功能(CMD-0xE5)

  • 在功能特性对照表部分,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 是否使能低功耗功能
  • 0x00:关闭低功耗功能
  • 0x01:打开低功耗功能
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

模组返回

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xE5
4
5
2 数据长度 0x00
0x01
6 1 State 返回的状态值
  • 0x00:成功
  • 其他:失败
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

系统计时器配置(CMD-0xE4)

  • 该功能主要影响的是模组在低功耗模式下的系统计时保持能力。
  • 为了降低芯片低休眠时的功耗,可通过该指令关闭蓝牙模组时钟系统在低功耗模式下的一些行为,即使关闭,模组在正常模式下仍具有必要的计时能力。
  • 在不同芯片上,关闭时钟系统所降低的功耗可能存在差异。有些平台或许能够降低几微安,而有些平台可能降低的功耗相对较有限。
  • 默认为关闭状态,该设置永久存储。

对于 Telink 模组,当计时功能和广播功能都关闭后,拉低模组低功耗引脚后会进入深度睡眠,功耗降低至 3 μA。在唤醒后,模组将重启并重新运行。

MCU 发送

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xE4
4
5
2 数据长度 0x00
0x01
6 1 Data 是否使能系统计时器
  • 0x00:关闭系统计时器
  • 0x01:打开系统计时器
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

模组返回

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xE4
4
5
2 数据长度 0x00
0x01
6 1 State 返回的状态值
  • 0x00:成功
  • 其他:失败
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

模组唤醒引脚配置(CMD-0xE3)

  • 适用模组:目前仅适用于 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_NUM0x03

    55 AA 00 E3 00 06 00 00 00 03 00 00 EB

  • 设置 BK3432 P11 为模组低功耗唤醒引脚,P11 对应 PIN_NUM0x11

    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_NUM0xxx

模组返回

序号 字节数 字段 说明
0
1
2 帧头 0x55
0xAA
2 1 版本号 0x00
3 1 命令字 CMD 0xE3
4
5
2 数据长度 0x00
0x01
6 1 State 返回的状态值
  • 0x00:成功
  • 其他:失败
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

MCU 低功耗唤醒配置(CMD-0xB0)

  • 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 返回的状态值
  • 0x00:成功
  • 其他:失败
7 1 CRC8 从帧头开始按字节求和得出的结果对 256 求余

常见问题

Q:有哪些常见注意事项?

A:低功耗产品对接通常需要注意以下事项:

  • 模组将在每次连接到手机 App 或网关后,自动获取云端时间,以便校准蓝牙模组内部时间。模组内部时钟系统的精度取决于晶振的质量。如果您需要模组提供高精度的时间,请务必测量模组内部时钟的精度。

    请联系您的涂鸦技术支持工程师或客户经理,获取测试程序。请注意,模组内部时钟在掉电时将被重置。

  • 当供电电压低于正常工作电压时,芯片内部 Flash 操作将有出错的风险,可能导致固件或用户数据异常修改。为了保护在此使用场景中的模组,可采取以下方法:

    • MCU:当 MCU 检测到电池电压过低时,可切断模组的工作电源或关闭广播,并控制芯片进入睡眠模式。
    • 模组:当模组检测到工作电压低于正常工作电压时,模组主动进入睡眠模式。