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供电配置“

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电压档位配置示意图“

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函数“

图2 close_gpio函数

备注

用户若使用到audio部分或已初始化audio部分,进入powerdown前需要关闭audio,避免功耗过高。
具体操作可参考gpio_config_soft_poweroff()函数。(该函数为进入softoff的回调函数)