.. _软关机Soft off和低功耗Power down: 软关机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) ^^^^^^^^^^^^^^^^^^^^ 关机与唤醒相关参数配置 ########################################################## 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 =============== ==================================== .. 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 =============== ================== ================== .. image:: vddio_introduce.png :alt: "VDDIO电压档位配置示意图“ :align: center .. centered:: VDDIO电压档位配置示意图 低功耗唤醒源配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 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:滤波使能; .. image:: wkup_param.png :alt: "唤醒源配置“ :align: center .. centered:: 唤醒源配置 *注意:配置好唤醒源后,还需要在低功耗流程中释放对应I/O引脚,芯片进入低功耗时会将除默认唤醒口外的I/O设置为高阻态;新添加的唤醒口需要单独释放,否则无法触发唤醒* *AD14N / AD15N / AC104N:* .. image:: ad14_15_104_softoff_wkup_io.png :alt: "AD14N_AD15N_AC104N低功耗释放新增唤醒引脚“ :align: center .. centered:: AD14N_AD15N_AC104N低功耗释放新增唤醒引脚 *AD17N:* .. image:: ad17_softoff_wkup_io.png :alt: "AD17N低功耗释放新增唤醒引脚“ :align: center .. centered:: AD17N低功耗释放新增唤醒引脚 *AD18N:* .. image:: ad18_softoff_wkup_io.png :alt: "AD18N低功耗释放新增唤醒引脚“ :align: center .. centered:: AD18N低功耗释放新增唤醒引脚 ^^^^^^^^^^^^^^^^^^^^ Soft off及Power down相关函数 ########################################################## 函数void sys_softoff() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此函数实现使系统进入软关机,唤醒后系统复位重新运行; 函数void sys_power_down(u32 usec) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此函数实现进入系统power down,可通过定时唤醒或IO触发唤醒,其中参数: :: 1、usec:唤醒时间(微秒); ①. -2:静态睡眠,需要等待按键唤醒; ②. 非-2:睡眠时间,单位us,如1000000即1s后唤醒,睡眠时间不可超过看门狗唤醒时间的一半 函数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函数 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Soft off及Power down唤醒源获取及其他函数 ########################################################## AD14N / AD15N / AC104N 相关接口 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数u32 power_wakeup_reason(void) *************************************************************** 此函数实现获取softoff唤醒源信息,该接口需要在系统初始化sys_power_init()之前调用,否则获取的唤醒源不准确,其中参数: :: 1、返回值:唤醒端口(对应wakeup_param中的port成员); AD17N与AD18N相关接口 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数u8 is_wakeup_source(enum WAKEUP_REASON index) *************************************************************** 此函数实现获取softoff和softoff唤醒源信息,外部可传参检查是否为本次唤醒的唤醒源; 获取softoff唤醒源需要在系统初始化sys_power_init()之前调用,否则获取的唤醒源不准确,其中参数: :: 1、index:唤醒源; 2、返回值:1:传入的参数时本次的唤醒源,0:传入的参数非本次唤醒源; 函数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即可;