1. 低功耗休眠
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)
1.1. 关机与唤醒相关参数配置
1.1.1. 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
![]()
A0芯片flash使用VDDIO供电配置
1.1.2. 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
![]()
VDDIO电压档位配置示意图
1.2. 低功耗休眠相关函数
1.2.1. 函数void sys_softoff()
此函数实现使系统进入软关机,唤醒后系统复位重新运行;内有gpio_config_soft_poweroff()函数,该函数为进入softoff前关闭相关影响功耗的功能,如audio;
1.2.2. 函数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。
1.2.3. 函数void board_set_soft_poweroff(void)
此函数实现在进入软关机之前将IO口设置成高阻,若需要保留原来状态可修改该函数。
设置对应引脚之后,需要在close_gpio()函数中,将对应的I/O不设置为高阻态;
![]()
图2 close_gpio函数
备注