原理介绍
蓝牙设备进入低功耗模式后,串口的RX是不能正常工作的,所以在低功耗模式下无法进行授权操作(授权需要使用串口通信)。详细的授权步骤参考 链接。
我们采用如下方案可以实现低功耗模式下的授权操作:
- 在设备上电的前500ms内,如果收到进入授权模式的命令,则进入授权模式(非低功耗),否则进入正常的产品模式(低功耗)。
实现步骤
- 注意:以下介绍基于 SDK 的默认例程,实际产品由于外设使用情况不同,请参考该逻辑实现即可。
如果只是进入低功耗,而不考虑授权,可以直接在 tuya_init_last 接口的末尾添加如下代码即可(跟使用Logic上位机指令进入低功耗一样的逻辑):
Code: Select all
tal_sdk_test_enter_sleep_handler(0, NULL);
如果希望产品工作在低功耗模式下,同时需要支持授权,则按照以下步骤操作:
- 设备初始化完成后(至少在串口初始化之后,保证串口的工作),创建一个定时器(此处复用app_led.c里面的定时器),在 tuya_init_last 接口的末尾添加如下代码:
Code: Select all
app_led_timer_init();
app_led_timer_start();
- 修改 app_led_timer_start 接口内的代码为(修改超时时间为500ms,修改超时模式为单次超时):
Code: Select all
tal_sw_timer_start(app_led_timer_id, 500, TAL_TIMER_ONCE);
- 修改 app_led_timeout_handler 接口内的代码为(上电500ms后判断是否已进入授权模式,如果未进入授权模式则进入产品模式,即低功耗状态):
Code: Select all
// not enter production test mode
if (tuya_ble_internal_production_test_with_ble_flag_get() == 0) {
tal_sdk_test_enter_sleep_handler(0, NULL);
}
操作步骤
将上述代码烧录到设备后,通过以下步骤进行授权(详细的授权步骤参考 链接):
- 在点击运行按钮后复位设备即可成功授权
注意
- 由于 tuyaos_demo_ble_cc2340 例程需要支持各种串口测试命令,所以默认工作在非低功耗模式,可以通过 Logic 上位机发送命令进入低功耗,操作方式详见:CC340 - 低功耗测试方法。
- 通过上述 实现步骤 的修改可以使 tuyaos_demo_ble_cc2340 例程支持在低功耗模式下也支持串口授权过程。