6621CxB deep sleep功耗(2S广播间隔)

yangzh · 523次点击 · 2023-04-26

SDK工程下simple Server工程,程序修改如下:

\examples\ble_app_simple_server\keil_hs6621x_flash_xip_armclang

1)使能DCDC/Deep Sleep(main.c)

static void ble_stack_config(void)
{
    // Disable WDT
    wdt_enable(0);
    // Enable DCDC
    pmu_dcdc_enable(true);
    // Power down xtal32k in deep sleep mode
    pmu_32k_enable_in_deep_sleep(true);//使能deep sleep
    // Select 32k clock for stack
    //pmu_xtal32k_change_param(15, 1);
    pmu_select_32k(PMU_32K_SEL_RC);
    // xtal32m param
    pmu_xtal32m_change_param(15);
    // ultra sleep mode enable
    co_power_ultra_sleep_mode_enable(false);//关闭ultra sleep
    // Enable sleep, SWD will be closed.
    co_power_sleep_enable(true);
}


2)广播间隔修改 (app.c)

快速广播间隔 0x0028*0.625=25ms

慢速广播间隔 0x0c80*0.625 =2000ms

#define APP_ADV_FAST_INTERVAL     0x0028   /**< Fast advertising interval (in units of 0.625 ms. This value corresponds to 25 ms.). */
#define APP_ADV_SLOW_INTERVAL     0x0C80   /**< Slow advertising interval (in units of 0.625 ms. This value corrsponds to 2 seconds). */
#define APP_ADV_FAST_TIMEOUT      1       /**< The duration of the fast advertising period (in seconds). max 655, or 0 is no timeout*/
#define APP_ADV_SLOW_TIMEOUT      0       /**< The duration of the slow advertising period (in seconds). max 655. or 0 is no timeout*/



3)使能慢广播

static void appm_advertising_init(void)
{
    struct app_adv_modes_config_tag adv_config;
    adv_config.whitelist_enabled = false;
    adv_config.directed_enabled = false;
    adv_config.directed_timeout = APP_ADV_DIRECTED_TIMEOUT;
    adv_config.fast_enabled = true;
    adv_config.fast_interval = APP_ADV_FAST_INTERVAL;
    adv_config.fast_timeout = APP_ADV_FAST_TIMEOUT;
    adv_config.slow_enabled = true;//false;
    adv_config.slow_interval = APP_ADV_SLOW_INTERVAL;
    adv_config.slow_timeout = APP_ADV_SLOW_TIMEOUT;
    appm_adv_init(NULL, &adv_config);
    uint8_t default_adv_data[ADV_DATA_LEN - 3];
    uint16_t adv_len = 0;
    appm_build_adv_data(ADV_DATA_LEN - 3, &adv_len, (uint8_t*)default_adv_data);
    appm_adv_set_adv_data((uint8_t*)default_adv_data, adv_len);
    //uint8_t res_data[APP_ADV_MAX_LEN];
    //uint8_t res_data_len = APP_SCNRSP_DATA_LEN;
    //memcpy(res_data, APP_SCNRSP_DATA, sizeof(APP_SCNRSP_DATA));
    //appm_adv_set_res_data(res_data, res_data_len);
}


4)关闭其它软件定时器 (main.c)

int main(void)
{
    ble_stack_config();
    hardware_init();
    rwip_init(RESET_NO_ERROR);
    co_power_register_sleep_event(power_sleep_event_handler);
    log_debug("running %d\n", pmu_reboot_reason());
    dbg_mmi_enable();
    appm_init();
    //co_timer_set(&simple_timer, 100, TIMER_REPEAT, simple_timer_handler, NULL);
    while(1)
    {
        rwip_schedule();
    }
}




EVB板图片如下:

6621CGB

image.png

6621CMB

image.png


固件烧录后,电流如下:

1)6621CGB 底电流

image.png


2)6621CGB 平均电流

image.png


3)6621CMB 底电流

image.png



4)6621CMB 平均电流

image.png


被收藏 0  ∙  0 赞  
加入收藏
点赞
1 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站