低功耗测试说明

重要

  • 低压休眠和深度休眠的区别:

  1. 唤醒后的状态: 深度睡眠唤醒后系统将会复位,低压睡眠唤醒后系统将在挂起处继续运行。

  2. 睡眠电流功耗: 深度睡眠电流在10UA,低压睡眠电流在75uA。

1. GPIO作为唤醒源

1.1. 系统进入深度睡眠调用说明

  • 设置 GPIO 作为唤醒源

PS_DEEP_CTRL_PARAM deep_sleep_param;
deep_sleep_param.wake_up_way            = PS_DEEP_WAKEUP_GPIO;
  • 2 设置 GPIO20 为唤醒管脚

deep_sleep_param.gpio_index_map          = 0x1 << GPIO20;
  • 设置 GPIO20 上升沿、下降沿唤醒方式

deep_sleep_param.gpio_edge_map           = 0x1 << GPIO20;  //下降沿唤醒

deep_sleep_param.gpio_edge_map           = 0x0 << GPIO20;  //上升沿唤醒
  • 设置 GPIO21 在睡眠期间电压保持

deep_sleep_param.gpio_stay_lo_map       =  0x1 << GPIO21;
  • 其他参数未使用的,默认赋值0

//这几个参数是GPIO32-GPIO39 的配置,BK7238 没有这些管脚,故不需要设置
deep_sleep_param.gpio_last_index_map    = 0;
deep_sleep_param.gpio_last_edge_map     = 0;
deep_sleep_param.gpio_stay_hi_map       = 0;

//这些参数是RTC 作为唤醒源的,不需要设置
deep_sleep_param.sleep_time             = 0;
deep_sleep_param.lpo_32k_src            = 0;
  • 6 开始调用深度睡眠API,进入睡眠

bk_enter_deep_sleep_mode(&deep_sleep_param);

1.2 系统进入低压睡眠调用说明

  • 设置 GPIO 作为唤醒源 ,并且设置睡眠模式为低压睡眠

PS_DEEP_CTRL_PARAM deep_sleep_param;
deep_sleep_param.wake_up_way            = 1;  //PS_DEEP_WAKEUP_GPIO;
deep_sleep_param.sleep_mode             = 1;  //MCU_LOW_VOLTAGE_SLEEP
  • 设置 GPIO20 为唤醒管脚

deep_sleep_param.gpio_index_map          = 0x1 << GPIO20;   //0x1 << 20 = 0x100000
  • 设置 GPIO20 上升沿、下降沿唤醒方式

deep_sleep_param.gpio_edge_map           = 0x1 << GPIO20;  //0x1 << 20 = 0x100000 下降沿唤醒

deep_sleep_param.gpio_edge_map           = 0x0 << GPIO20;  //上升沿唤醒
  • 其他参数未使用的,默认赋值0

//这几个参数是GPIO32-GPIO39 的配置,BK7238 没有这些管脚,故不需要设置
deep_sleep_param.gpio_last_index_map    = 0;
deep_sleep_param.gpio_last_edge_map     = 0;
deep_sleep_param.gpio_stay_hi_map       = 0;

deep_sleep_param.gpio_stay_lo_map       = 0;

//这些参数是RTC 作为唤醒源的,不需要设置
deep_sleep_param.sleep_time             = 0;
deep_sleep_param.lpo_32k_src            = 0;
  • 5 开始调用低压睡眠API,进入睡眠

bk_wlan_instant_lowvol_sleep(&deep_sleep_param);

2. RTC作为唤醒源

2.1. 系统进入深度睡眠调用说明

  • 设置 RTC 作为唤醒源

PS_DEEP_CTRL_PARAM deep_sleep_param;
deep_sleep_param.wake_up_way            = PS_DEEP_WAKEUP_RTC;
  • 设置 RTC 睡眠时间

deep_sleep_param.sleep_time             = 5;     //5s
deep_sleep_param.lpo_32k_src            = 0;     //LPO_SELECT_ROSC
  • 其他参数未使用的,默认赋值0

//这些参数是GPIO 作为唤醒源的,不需要设置
deep_sleep_param.gpio_index_map         = 0;
deep_sleep_param.gpio_index_map         = 0;
deep_sleep_param.gpio_stay_lo_map       = 0;
deep_sleep_param.gpio_last_index_map    = 0;
deep_sleep_param.gpio_last_edge_map     = 0;
deep_sleep_param.gpio_stay_hi_map       = 0;
  • 开始调用深度睡眠API,进入睡眠

bk_enter_deep_sleep_mode(&deep_sleep_param);

2.2. 系统进入低压睡眠调用说明

  • 设置 RTC 作为唤醒源,并设置为低压睡眠模式

PS_DEEP_CTRL_PARAM deep_sleep_param;
deep_sleep_param.wake_up_way            = PS_DEEP_WAKEUP_RTC;
deep_sleep_param.sleep_mode             = 1;  //MCU_LOW_VOLTAGE_SLEEP
  • 设置 RTC 睡眠时间

deep_sleep_param.sleep_time             = 5;     //5s
deep_sleep_param.lpo_32k_src            = 0;     //LPO_SELECT_ROSC
  • 其他参数未使用的,默认赋值0

//这些参数是GPIO 作为唤醒源的,不需要设置
deep_sleep_param.gpio_index_map         = 0;
deep_sleep_param.gpio_index_map         = 0;
deep_sleep_param.gpio_stay_lo_map       = 0;
deep_sleep_param.gpio_last_index_map    = 0;
deep_sleep_param.gpio_last_edge_map     = 0;
deep_sleep_param.gpio_stay_hi_map       = 0;
  • 开始调用深度睡眠API,进入睡眠

bk_wlan_instant_lowvol_sleep(&deep_sleep_param);