低功耗测试说明
重要
低压休眠和深度休眠的区别:
唤醒后的状态: 深度睡眠唤醒后系统将会复位,低压睡眠唤醒后系统将在挂起处继续运行。
睡眠电流功耗: 深度睡眠电流在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);