CC2340-低功耗模式下进行授权的原理

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
User avatar
逻辑的院子
Posts: 341
Contact:

原理介绍

蓝牙设备进入低功耗模式后,串口的RX是不能正常工作的,所以在低功耗模式下无法进行授权操作(授权需要使用串口通信)。详细的授权步骤参考 链接

我们采用如下方案可以实现低功耗模式下的授权操作:

  • 在设备上电的前500ms内,如果收到进入授权模式的命令,则进入授权模式(非低功耗),否则进入正常的产品模式(低功耗)。

实现步骤

  • 注意:以下介绍基于 SDK 的默认例程,实际产品由于外设使用情况不同,请参考该逻辑实现即可。

如果只是进入低功耗,而不考虑授权,可以直接在 tuya_init_last 接口的末尾添加如下代码即可(跟使用Logic上位机指令进入低功耗一样的逻辑):

Code: Select all

tal_sdk_test_enter_sleep_handler(0, NULL);

如果希望产品工作在低功耗模式下,同时需要支持授权,则按照以下步骤操作:

  1. 设备初始化完成后(至少在串口初始化之后,保证串口的工作),创建一个定时器(此处复用app_led.c里面的定时器),在 tuya_init_last 接口的末尾添加如下代码:

Code: Select all

    app_led_timer_init();
    app_led_timer_start();
  1. 修改 app_led_timer_start 接口内的代码为(修改超时时间为500ms,修改超时模式为单次超时):

Code: Select all

    tal_sw_timer_start(app_led_timer_id, 500, TAL_TIMER_ONCE);
  1. 修改 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 例程支持在低功耗模式下也支持串口授权过程。
Post Reply