2.6. 唤醒系统

PMU 结构独立于系统,可以在系统睡眠或者软关机的情况下继续工作,提供多种唤醒功耗,所有PMU唤醒信号通过P33传给主系统。

"运行与低功耗“

运行与低功耗

rtc,有以下唤醒源(本芯片没有硬件rtc):

enum {
    R3_WKUP_SRC_ALM = 0,         //闹钟唤醒
    R3_WKUP_SRC_PORT = 3,        //rtc io唤醒
    R3_WKUP_SRC_256HZ,           //频率256HZ唤醒
    R3_WKUP_SRC_64HZ,            //频率64HZ唤醒
    R3_WKUP_SRC_2HZ,             //频率2HZ唤醒
    R3_WKUP_SRC_1HZ,             //频率1HZ唤醒
};

p33有以下唤醒源:

enum {
    P3_WKUP_SRC_PCNT_OVF = 0,    //pcnt计数溢出
    P3_WKUP_SRC_PORT_EDGE,       //普通io唤醒
    P3_WKUP_SRC_ANA_EDGE,        //模拟信号唤醒(本芯片没有模拟信号唤醒)
    P3_WKUP_SRC_VDDIO_LVD = 4,   //LVD唤醒
};

2.6.1. 查唤醒源

2.6.1.1. 软关机查询唤醒源

power_wakeup_reason_dump

软关机复位之后打印及记录唤醒源,调用此函数之后才能够使用判断唤醒源接口。

原型:

void power_wakeup_reason_dump();

2.6.1.2. is_wakeup_source

软关机判断是否为指定唤醒源。

原型:

enum WAKEUP_REASON {
    //WAKEUP
    PWR_WK_REASON_PLUSE_CNT_OVERFLOW,           //pcnt唤醒复位
    PWR_WK_REASON_P11,                          //P11唤醒复位
    PWR_WK_REASON_LPCTMU,                       //触摸唤醒复位
    PWR_WK_REASON_LPNFC,                        //NFC唤醒复位
    PWR_WK_REASON_PORT_EDGE,                    //数字io输入边沿唤醒复位
    PWR_WK_REASON_ANA_EDGE,                     //模拟io输入边沿唤醒复位(本芯片不支持模拟io唤醒)
    PWR_WK_REASON_VDDIO_LVD,                    //vddio lvd唤醒复位
    PWR_WK_REASON_EDGE_INDEX0,                  //p33 index0  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX1,                  //p33 index1  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX2,                  //p33 index2  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX3,                  //p33 index3  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX4,                  //p33 index4  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX5,                  //p33 index5  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX6,                  //p33 index6  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX7,                  //p33 index7  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX8,                  //p33 index8  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX9,                  //p33 index9  io唤醒复位
    PWR_WK_REASON_EDGE_INDEX10,                 //p33 index10 io唤醒复位
    PWR_WK_REASON_EDGE_INDEX11,                 //p33 index11 io唤醒复位
    PWR_ANA_WK_REASON_FALLINIG_EDGE_LDOIN,      //LDO5V上升沿唤醒复位
    PWR_ANA_WK_REASON_RISING_EDGE_LDOIN,        //LDO5V下降沿唤醒复位
    PWR_ANA_WK_REASON_FALLING_EDGE_VBATCH,      //VBATCH上升降沿唤醒复位
    PWR_ANA_WK_REASON_RISING_EDGE_VBATCH,       //VBATCH下降沿唤醒复位
    PWR_RTC_WK_REASON_ALM,                      //RTC闹钟唤醒复位
    PWR_RTC_WK_REASON_256HZ,                    //RTC 256Hz时基唤醒复位
    PWR_RTC_WK_REASON_64HZ,                     //RTC 64Hz时基唤醒复位
    PWR_RTC_WK_REASON_2HZ,                      //RTC 2Hz时基唤醒复位
    PWR_RTC_WK_REASON_1HZ,                      //RTC 1Hz时基唤醒复位

    PWR_WKUP_REASON_RESERVE = 63,
};


u8 is_wakeup_source(enum WAKEUP_REASON index);

参数:

index

唤醒源

返回值

是否为指定唤醒源

2.6.1.3. 运行状态唤醒源

系统在运行状态或sleep模式唤醒之后,能够进入中断回调注册的函数,具体配置回调函数的方法在对应模块章节,支持以下模块。

  • 边沿唤醒

  • rtc唤醒