请教低功耗管理



  • 使用本周的SDK

    使用 example/dev1.0/ble_multi_role 工程
    编译使用 GNU ARM GCC 6.2

    为了测试低功耗,把如下函数做了屏蔽,也就是软件不做任何事
    void user_entry_after_ble_init(void)
    {
    co_printf("BLE Multi Role\r\n");

        co_printf("POWER SAMVE EN:%d\r\n", __jump_table.system_option&SYSTEM_OPTION_SLEEP_ENABLE);
    
    
    
    // User task initialization, for buttons.
    //user_task_init();
    
    // Application layer initialization, can included bond manager init, 
    // advertising parameters init, scanning parameter init, GATT service adding, etc.    
    //multi_role_init();
    

    }

    硬件板子采用电池供电,拔掉 3V3_LDO的跳线,因为我还不知道如何关闭这个LDO,软件默认是打开的

    运行结果:
    1)系统重启后能进入低功耗,电流为 7uA左右
    2)过上20s左右,系统会退出低功耗,电流为 3mA左右,再也进入不了低功耗

    问题:为什么会出现2)

    测试2:如果让BLE进入广播模式,系统无法进入低功耗模式,使用原始的广播配置。

    问题:为什么这个时候无法进入低功耗?


  • Global Moderator

    此回复已被删除!

  • Global Moderator

    问题1:请确认下,在user_entry_after_sleep_imp中有没有调用system_sleep_disable;
    0_1582948508410_1582948256(1).jpg
    问题2:如果你用multi_role工程测试低功耗的话,请确认下scan有没有打开,你可以把mr_central_init屏蔽掉,只保留slave,再测试低功耗



  • 上述已经解决,是system_sleep_disable引起的,注释掉可以到7个uA

    新问题:系统如何进入POWER OFF mode呢?


  • Global Moderator

    软关机配置可做如下处理0_1582960346714_1582960190(1).jpg
    deepsleep之后可用按键唤醒复位



  • 按照描述,直接增加上述代码,没有测试成功,我要等些时间再测试,当前调试其他模块