1. 软关机Soft off和低功耗Power down

AD14N / AD15N / AC104N / AD17N 支持Soft off和Power down,同时支持多种唤醒方式;

模式

区别

Soft off

Soft off唤醒后芯片需要从MASKROM开始重新跑流程;

Power down

Power down唤醒后芯片会原地唤醒开始跑。

功耗水平:

模式 / CPU

AD14N / AC104N

AD15N

AD17N

AD18N

Soft off

1.7uA+

1.7uA+

1.4uA+

3.3uA+

Power down

27uA+

27uA+

23uA+

33uA+

支持最多唤醒口

8个

12个

8个

8个

启动速度:
  • 注1:启动速度测试方法为上电/触发唤醒到运行main.c第一行的时间。

  • 注2:软关机快速启动不会运行uboot流程,可以加快启动时间,但无法进行uboot升级操作。

启动方式

AD14N / AC104N

AD15N

AD17N

AD18N

冷启动(首次上电)

40ms

36ms

31ms

39ms

软关机唤醒(正常启动)

35ms

32ms

23ms

32ms

软关机唤醒(快速启动)

无快速启动

20ms

9ms

15ms

Soft off及Power down有以下相关函数:

void sys_softoff(void)
void sys_power_down(u32 usec);
void board_set_soft_poweroff(void);

唤醒相关函数:

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

"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

"VDDIO电压档位配置示意图“

VDDIO电压档位配置示意图

1.1.3. 低功耗唤醒源配置

  • Soft off与Power down共用唤醒模块。可以在power_api.c的wkup_param中增加port_wakeup类型成员来增加唤醒源。(AD17N为power_config.c文件)

  • 唤醒前需要先配置唤醒参数结构体wakeup_param,内容包含PORT_FLT唤醒滤波和port_wakeup单个唤醒源配置:

  • port_wakeup单个唤醒源配置可选择唤醒I/O口、唤醒边沿以及是否使能内部上下拉:

PORT_FLT:边沿唤醒选择过滤掉的脉冲时长

① PORT_FLT_NULL;
② PORT_FLT_32us;
③ PORT_FLT_64us;
④ PORT_FLT_128us;
⑤ PORT_FLT_256us;
⑥ PORT_FLT_512us;
⑦ PORT_FLT_1ms;
⑧ PORT_FLT_2ms;

port_wakeup结构体:唤醒端口的参数配置

① pullup_down_enable:上/下拉使能;
② edge:边沿触发方式;
③ attribute:保留参数;
④ iomap:I/O口选择;
⑤ filter_enable:滤波使能;
"唤醒源配置“

唤醒源配置

注意:配置好唤醒源后,还需要在低功耗流程中释放对应I/O引脚,芯片进入低功耗时会将除默认唤醒口外的I/O设置为高阻态;新添加的唤醒口需要单独释放,否则无法触发唤醒

AD14N / AD15N / AC104N:
"AD14N_AD15N_AC104N低功耗释放新增唤醒引脚“

AD14N_AD15N_AC104N低功耗释放新增唤醒引脚

AD17N:
"AD17N低功耗释放新增唤醒引脚“

AD17N低功耗释放新增唤醒引脚

AD18N:
"AD18N低功耗释放新增唤醒引脚“

AD18N低功耗释放新增唤醒引脚


1.2. Soft off及Power down相关函数

1.2.1. 函数void sys_softoff()

此函数实现使系统进入软关机,唤醒后系统复位重新运行;

1.2.2. 函数void sys_power_down(u32 usec)

此函数实现进入系统power down,可通过定时唤醒或IO触发唤醒,其中参数:

1、usec:唤醒时间(微秒);
    ①. -2:静态睡眠,需要等待按键唤醒;
    ②. 非-2:睡眠时间,单位us,如1000000即1s后唤醒,睡眠时间不可超过看门狗唤醒时间的一半

1.2.3. 函数void board_set_soft_poweroff(void)

此函数实现在进入软关机之前将IO口设置成高阻,若需要保留原来状态可修改该函数。

设置对应引脚之后,需要在close_gpio()函数中,将对应的I/O不设置为高阻态;

"图2 close_gpio函数“

图2 close_gpio函数


1.3. Soft off及Power down唤醒源获取及其他函数

1.3.1. AD14N / AD15N / AC104N 相关接口

1.3.1.1. 函数u32 power_wakeup_reason(void)

此函数实现获取softoff唤醒源信息,该接口需要在系统初始化sys_power_init()之前调用,否则获取的唤醒源不准确,其中参数:

1、返回值:唤醒端口(对应wakeup_param中的port成员);

1.3.2. AD17N与AD18N相关接口

1.3.2.1. 函数u8 is_wakeup_source(enum WAKEUP_REASON index)

此函数实现获取softoff和softoff唤醒源信息,外部可传参检查是否为本次唤醒的唤醒源;

获取softoff唤醒源需要在系统初始化sys_power_init()之前调用,否则获取的唤醒源不准确,其中参数:

1、index:唤醒源;
2、返回值:1:传入的参数时本次的唤醒源,0:传入的参数非本次唤醒源;

1.3.2.2. 函数void gpio_longpress_pin0_reset_config(u32 pin, u32 level, u32 time, u8 release, u8 protect)

此函数实现长按复位初始化,该接口需要在电源初始化的最后调用,其中参数:

1、pin:复位I/O;
2、level:触发方式
    ①、0:下降沿触发;
    ②、1:上升沿触发;
3、time:时间
    ①、0:disable;
    ②、1:1s复位;
    ③、2:2s复位;
    ④、4:4s复位;
    ⑤、8:8s复位;
    ⑥、16:16s复位
3、release:系统释放方式
    ①、0:等待电平翻转后复位;
    ②、1:立即复位;
4、protect:该参数给0即可;