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供电配置
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电压档位配置示意图
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低功耗释放新增唤醒引脚
- AD17N:
AD17N低功耗释放新增唤醒引脚
- 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函数
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即可;