.. _低功耗休眠: 低功耗休眠 ========================================= AD14N / AD15N / AC104N / AD17N / AD24N 支持多种低功耗模式,同时支持多种唤醒方式。具体每颗芯片对低功耗的支持情况如下: +------------------------------------+--------------+--------------+--------------+ | 玩具系列芯片对低功耗模式支持情况 | +====================================+==============+==============+==============+ | 芯片 | powerdown | softoff | poweroff | +------------------------------------+--------------+--------------+--------------+ | AD14N/AC104N | √ | √ | × | +------------------------------------+--------------+--------------+--------------+ | AD15N | √ | √ | × | +------------------------------------+--------------+--------------+--------------+ | AD17N | √ | √ | × | +------------------------------------+--------------+--------------+--------------+ | AD18N | √ | √ | × | +------------------------------------+--------------+--------------+--------------+ | AD24N | √ | √ | √ | +------------------------------------+--------------+--------------+--------------+ 各种低功耗模式的区别如下: =============== ====================================================================================== 模式 区别 =============== ====================================================================================== Softoff Softoff唤醒后芯片需要从MASKROM开始重新跑流程; Powerdown Powerdown唤醒后芯片会原地唤醒开始跑。 Poweroff Poweroff休眠时,CPU和寄存器都会掉电,但ram会保持。唤醒从MASKROM跳转到出poweroff的函数 =============== ====================================================================================== 功耗水平: =============== ================== ========= ========= ========= ========= 模式 / CPU AD14N / AC104N AD15N AD17N AD18N AD24N =============== ================== ========= ========= ========= ========= Softoff 1.7uA+ 1.7uA+ 1.4uA+ 3.3uA+ 2uA+ Powerdown 27uA+ 27uA+ 23uA+ 33uA+ 50uA+ Poweroff / / / / 约20uA+ 支持最多唤醒口 8个 12个 8个 8个 8个 =============== ================== ========= ========= ========= ========= 启动速度: - *注1:启动速度测试方法为上电/触发唤醒到运行main.c第一行的时间。* - *注2:软关机快速启动不会运行uboot流程,可以加快启动时间,但无法进行uboot升级操作。* - *注3:冷启动(快速启动)需要使用烧写器烧快速启动功能才能使用,烧写后会无法使用强制下载工具升级,请谨慎使用。* ======================= ================== ========= ========= ========= ========= 启动方式 AD14N / AC104N AD15N AD17N AD18N AD24N ======================= ================== ========= ========= ========= ========= 冷启动(首次上电) 40ms 36ms 31ms 39ms 37ms 冷启动(快速启动) / / / / 16ms 软关机唤醒(正常启动) 35ms 32ms 23ms 32ms 26ms 软关机唤醒(快速启动) 无快速启动 20ms 9ms 15ms 5ms ======================= ================== ========= ========= ========= ========= 快速启动对flash的要求: - 1.flash启动时间小于1ms。 - 2.flash不需要发soft reset,就可以启动。 Soft off及Power down有以下相关函数: :: void sys_softoff(void) void sys_power_down(u32 usec); 唤醒相关函数: :: int power_wakeup_reason(void); u8 is_wakeup_source(enum WAKEUP_REASON index) ^^^^^^^^^^^^^^^^^^^^ 关机与唤醒相关参数配置 ########################################################## A0芯片flash使用VDDIO供电配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 在使用A0封装的芯片,即存放代码的系统flash由VDDIO供电时,需要将该宏置1,否则可能会出现休眠功耗大的问题; =============== ==================================== 芯片 A0芯片使用VDDIO给系统flash供电配置宏 =============== ==================================== AD14N / AC104N TCFG_KEEP_FLASH_POWER_GATE AD15N TCFG_KEEP_FLASH_POWER_GATE AD17N FLASH_POWER_GATE_VDDIO AD18N FLASH_POWER_GATE_VDDIO AD24N PCONTROL_FLASH_PG_VDDIO =============== ==================================== .. image:: a0_flash_power_gate_introduce.png :alt: "A0芯片flash使用VDDIO供电配置“ :align: center .. centered:: A0芯片flash使用VDDIO供电配置 VDDIO电压档位配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 芯片的VDDIO电压会随着系统状态的变化而不同;正常运行时使用强VDDIO档位(MVDDIO),Powerdown/Softoff时使用弱VDDIO档位(WVDDIO); - 修改power_param结构体中的vddiom_lev成员,可以配置芯片的强VDDIO电压; - 修改power_param结构体中的vddiow_lev成员,可以配置芯片的弱VDDIO电压; - power_param的vddio_keep参数置为1时,进入powerdown前后的VDDIO电压不会发生变化,仅AD14N / AD15N / AC104N有效; - AD17N默认保持VDDIO电压档位; =============== ================== ================== 芯片 默认强VDDIO档位 默认弱VDDIO档位 =============== ================== ================== AD14N / AC104N 3.2v 2.8v AD15N 3.2v 2.8v AD17N 3.2v 3.2v AD18N 3.2v 3.2v AD24N 3.0v 2.8v =============== ================== ================== .. image:: vddio_introduce.png :alt: "VDDIO电压档位配置示意图“ :align: center .. centered:: VDDIO电压档位配置示意图 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 低功耗休眠相关函数 ########################################################## 函数void sys_softoff() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 此函数实现使系统进入软关机,唤醒后系统复位重新运行; | 内有gpio_config_soft_poweroff()函数,该函数为进入softoff前关闭相关影响功耗的功能,如audio; 函数void sys_power_down(u32 usec) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此函数实现进入系统Powerdown或者Poweroff,可通过定时唤醒或IO触发唤醒,其中参数: :: 1、usec:唤醒时间(微秒); ①. -2:静态睡眠,需要等待按键唤醒; ②. 非-2:睡眠时间,单位us,如1000000即1s后唤醒,睡眠时间不可超过看门狗唤醒时间的一半 ..note :: 用户若使用到audio部分或已初始化audio部分,进入powerdown前需要关闭audio,避免功耗过高。 具体操作可参考sys_idle_deal()函数。 **注:调用该函数时进入powerdown还是poweroff,取决于TCFG_LOWPOWER_LOWPOWER_SEL。该宏等于SLEEP_EN时,休眠会进入powerdown;等于DEEP_SLEEP_EN时休眠会进入poweroff。** 函数void board_set_soft_poweroff(void) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此函数实现在进入软关机之前将IO口设置成高阻,若需要保留原来状态可修改该函数。 设置对应引脚之后,需要在close_gpio()函数中,将对应的I/O不设置为高阻态; .. image:: 1_sp_close_gpio.png :alt: "图2 close_gpio函数“ :align: center .. centered:: 图2 close_gpio函数 .. note:: | 用户若使用到audio部分或已初始化audio部分,进入powerdown前需要关闭audio,避免功耗过高。 | 具体操作可参考gpio_config_soft_poweroff()函数。(该函数为进入softoff的回调函数)