跳转至

CI14LP低功耗方案说明

概述

CI14LP芯片支持低功耗方案,低功耗方案需要从硬件和软件两个方面一起协同工作实现。以下从硬件和软件两个方面详细说明实现方法。


低功耗硬件方案

CI14LP系列芯片支持低功耗方案的硬件方案是采用效率更高的DCDC电源替换芯片内部的LDO电源,DCDC电源效率可以达到95%以上,而LDO的效率只有30%,因此采用DCDC电源可以有效降低功耗。DCDC电源采用5v输入,1.1v输出接芯片的VDD11管脚输入。

CI14LP芯片的电源管理由SCU(System Control Unit)模块负责,支持多种电源模式(scu_power_mode_t):

电源模式 值 说明
SCU_POWER_MODE_NORMAL 0x1 正常工作模式(AON域正常,NPU域正常)
SCU_POWER_MODE_SLEEP 0x0 低功耗模式(AON域正常,NPU域下电)
SCU_POWER_MODE_NOT_LOWPOWER 0x5 退出低功耗时,硬件正在自动上电
SCU_POWER_MODE_LOWPOWER 0x2 进入低功耗时,硬件正在自动下电

低功耗软件方案

电源模式切换

CI14LP系列芯片的电源管理驱动位于 driver\ci14lp_chip_driver\inc\ci14lp_lowpower.h,支持以下电源模式(power_mode_t):

电源模式 值 说明
POWER_MODE_ERR -1 错误
POWER_MODE_NORMAL 0 正常模式
POWER_MODE_DOWN_FREQUENCY 1 降频模式
POWER_MODE_OSC_FREQUENCY 2 晶振时钟模式
POWER_MODE_SLEEP 998 休眠模式(暂不使用)
POWER_MODE_DEEP_SLEEP 999 深度休眠模式(暂不使用)

可通过 power_mode_switch() 接口切换电源模式,通过 get_curr_power_mode() 查询当前模式:

#include "ci_lowpower.h"

/* 切换到降频模式(仅保证识别功能) */
power_mode_switch(POWER_MODE_DOWN_FREQUENCY);

/* 切换到正常全速模式 */
power_mode_switch(POWER_MODE_NORMAL);

/* 查询当前所处的模式 */
power_mode_t mode = get_curr_power_mode();

注册进出低功耗用户扩展函数

可通过 register_lowpower_user_fn() 注册进入/退出低功耗模式的用户扩展回调函数,在模式切换时执行自定义操作(如关闭/打开外部器件电源):

#include "ci_lowpower.h"

void my_enter_lowpower(void)
{
    /* 进入低功耗前的自定义操作,如关闭外部功放电源 */
}

void my_exit_lowpower(void)
{
    /* 退出低功耗后的自定义操作,如打开外部功放电源 */
}

void app_init(void)
{
    register_lowpower_user_fn(my_enter_lowpower, my_exit_lowpower);
}

系统级低功耗请求

CI14LP系列芯片在 system\ci14lp_system.h 中提供系统级低功耗请求接口:

#include "ci_system.h"

/* 请求进入超低功耗模式 */
enter_low_power_mode(SYS_REQ_ENTER_DEEP_POWER_MODE);

/* 请求进入低功耗模式 */
enter_low_power_mode(SYS_REQ_ENTER_LOW_POWER_MODE);

/* 判断系统是否从低功耗模式唤醒 */
int from_lowpower = is_from_lowpower_mode();

低功耗相关SCU配置

CI14LP系列芯片低功耗方案还包括以下SCU配置接口(位于 driver\ci14lp_chip_driver\inc\ci14lp_scu.h):

  • PDN域电源控制(NPU域供电模式):
scu_pdn_power_en(ENABLE);    //NPU域上电
scu_pdn_power_en(DISABLE);   //NPU域下电
  • 读取低功耗状态:
uint8_t status = scu_get_lowpower_status(PDN_SLEEP_VALUE);  //PDN睡眠输出信号
uint8_t status = scu_get_lowpower_status(PDN_WFI_MODE);     //PDN wfi输出信号
  • 读取当前系统工作状态:
scu_power_mode_t mode = scu_get_power_mode();
  • 低功耗模式下LDO1输出电压调整(该值只有在硬件自动下电时才会加载):
scu_enter_lowpower_ldo1_lv(SCU_LDO1_LV_2_5V);   //低功耗模式下LDO1输出电压为2.5V
scu_exit_lowpower_ldo1_lv(SCU_LDO1_LV_3_3V);    //非低功耗模式下LDO1输出电压为3.3V
  • SRAM/ROM/IIS低功耗配置:
scu_sram_config(SCU_SELECT_SRAM0, SCU_SRAM_LOWERPOWER_EN, ENABLE);  //使能SRAM低功耗
scu_rom_lowpower_en(ENABLE);    //使能ROM低功耗
scu_iis_lowpower_en(ENABLE);    //使能IIS低功耗

注意

  • 系统初始化完成后应处于normal正常模式。
  • 降频模式仅保证识别功能,主频降为12.288M。
  • 晶振时钟模式仅保证VAD功能,需要在VAD START后切换到可以正常识别的模式。