OM6629配置低功耗休眠电流一直有100uA左右

xxx · 21次点击 · 3天前
static void power_init(void) {
    drv_pmu_dcdc_enable(true);
    drv_pmu_xtal32m_startup();
    drv_pmu_select_32k(PMU_32K_SEL_RC);
}

int main(void)
{
    power_init();

    static const pin_config_t pin_config[] = {
        {5, {PINMUX_PAD5_UART1_TRX_CFG}, PMU_PIN_MODE_PU, PMU_PIN_DRIVER_CURRENT_NORMAL},
        {6, {PINMUX_PAD6_UART1_RX_CFG},  PMU_PIN_MODE_PU, PMU_PIN_DRIVER_CURRENT_NORMAL},
    };
    drv_wdt_init(0);
    drv_pin_init(pin_config, sizeof(pin_config)/sizeof(pin_config[0]));
    static const uart_config_t uart_cfg = {
        .baudrate     = 115200,
        .flow_control = UART_FLOW_CONTROL_NONE,
        .data_bit     = UART_DATA_BIT_8,
        .stop_bit     = UART_STOP_BIT_1,
        .parity       = UART_PARITY_NONE,
    };
    drv_uart_init(OM_UART1, &uart_cfg);


    om_printf("Example project\r\n");

    /* 3. ?? GPIO ??????(?????) */
    for (uint8_t i = 0; i < 39; i++) {
        drv_pmu_pin_mode_set(i, PMU_PIN_MODE_FLOAT);
        drv_pmu_pin_input_enable(i, 0);
        drv_pmu_pin_driven_current_set(i, PMU_PIN_DRIVER_CURRENT_NORMAL);
        drv_pmu_wakeup_pin_set(i, PMU_PIN_WAKEUP_DISABLE);
    }
    OM_PMU->GPIO_WAKEUP[0] = 0;
    OM_PMU->GPIO_WAKEUP[1] = 0;
		pm_init();
    pm_sleep_enable(true);
    pm_sleep_ultra_sleep_mode_enable(true);  
		DRV_RCC_CLOCK_ENABLE(RCC_CLK_UART1, 0);     
    DRV_RCC_CLOCK_ENABLE(RCC_CLK_AES, 0);
    DRV_RCC_CLOCK_ENABLE(RCC_CLK_EFUSE, 0);
		
//    drv_pmu_dump();
		pm_power_manage();
		drv_pmu_sleep_enter(1, false);
    while(1) {
        __WFI();
    }
}

void om_putchar(char character)
{
    drv_uart_write(OM_UART1, (uint8_t *)&character, 1, DRV_MAX_DELAY);
}

这是修改ble_app_simple例程,仅修改上电进入休眠,打印如下

[17:48:18.441]收←◆Example project
sleep_enable is true
ultra_sleep_enable is false
min_sleep_time is 98 ms
prevent sleep reason is 0x00000000, if reason is not 0, you can look pm_id_t enum
[PMU] GPIO0 GROUP wakeup pin: 0x00000000(cur_level: 0x00000000 sleep_level: 0x00000000)
[PMU] GPIO0 GROUP pull up: 0x00000000(cur_level:0x00000000) pull down: 0x00000000(cur_level:0x00000000) all cur_level: 0x00000000
[PMU] GPIO1 GROUP wakeup pin: 0x00000000(cur_level: 0x00000000 sleep_level: 0x00000000)
[PMU] GPIO1 GROUP pull up: 0x00000000(cur_level:0x00000000) pull down: 0x00000000(cur_level:0x00000000) all cur_level: 0x00000000
[PMU] clocking CPU[32MHZ]
 SF UART1

测试休眠电流一直是100uA左右,降不下去


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

请先登录网站