这款主控有四种低功耗模式:
1:空闲模式
特征 :外设正常供电,内核停止运行,时钟系统运转,但可以通过外设时钟控制位选择关闭各个外设时钟,
进入条件:设置内核控制位SCR=0,设置唤醒条件执行WFI_()或WFE()。
唤醒选择:I/O或者RTC或BAT或USB或ETH。
功耗 :1.15mA-1.5mA.
2:暂停模式
特征 : 外设正常供电内核停止运行,时钟系统停止(PLL/HSE/HSI)停止,可以选择Flash ROM待机或停用。
进入条件:设置内核控制位SCR=1;设置唤醒条件后执行WFI()或WFE()。
唤醒选择:I/O或RTC或BAT或USB或ETH。
功耗 :420uA-470uA
3:睡眠模式
特征 :主LDO关闭,超低功耗ULP-LDO维持PMU,内核和基本外设供电,LSE或LSI可以选择是否开启,RAM2K,RAM14K,USB和RF配置可以选择是否维持供电。
进入条件:设置内核控制位SCR=1;设置POWER_PLAN,设置唤醒体哦阿健后执行_WFI()或WFE()。
唤醒选择:I/O或RTC或BAT。芯片唤醒后会继续运行
功耗 :0.6uA -2.6uA
4:下电模式
特征 :超低功耗LDO维持PMU供电,LSE或LSI可以选择是否开启,RAM2K,RAM14K可以选择是否维持供电,用于保持数据。
进入条件:设置内核控制位SCR=1,设置POWER_PLAN,设置唤醒条件后执行_WFI()或_WFE().
唤醒条件:I/O或RTC或BAT。芯片唤醒或会自动复位。
功耗 :0.2uA-1.5uA
例程代码
/*****************************************************************************************************
* 函数名称: Open_Close_LowPower(UINT8 select)
* 功能说明: 开启或关闭低功耗
* 输 入: 关闭陀螺仪,屏幕背光,主控下电模式
* 输 出: 无
* 注 释: 1:使用HSI/5=6.4M睡眠,唤醒时间大概需要 2048Tsys≈330us
* HSE起振一般不超过1.2ms(500us-1200us),所以切换到外部HSE,
* 需要 1.2ms-330us 这个时间可以保证HSE足够稳定,一般用于蓝牙
* DelayUs()函数时基于32M时钟的书写,此时主频为6.4M,所以 DelayUs((1200-330)/5)
* 2:注意要确保系统睡下去再唤醒才是唤醒复位,否则有可能变成IDLE等级唤醒
******************************************************************************************************/
void Open_Close_LowPower(UINT8 select)
{
if(select)
{
LCD_BLK_Clr(); // 屏幕背光关闭
Write_MXC6655XA(ADDRESS, CONTROL, Low_power_Eed); // 陀螺仪低功耗打开
DelayMs(1);
GPIOA_ModeCfg( GPIO_Pin_All, GPIO_ModeIN_PU );
GPIOB_ModeCfg( GPIO_Pin_All, GPIO_ModeIN_PU );
LowPower_Shutdown( NULL ); //下电模式,全部断电,唤醒后复位
}
else
{if(!(R8_HFCK_PWR_CTRL&RB_CLK_XT32M_PON)){ // 是否HSE上电
PWR_UnitModCfg(ENABLE,UNIT_SYS_HSE); // HSE上电
DelayUs((1200)/5);
}
else if(!(R16_CLK_SYS_CFG&RB_CLK_OSC32M_XT)){ // 是否选择 HSI/5 做时钟源
DelayUs((1200-330)/5);
}
HSECFG_Current( HSE_RCur_100 ); // 降为额定电流(低功耗函数中提升了HSE偏置电流)
DelayUs(5/5); // 等待稳定 1-5us
SetSysClock( CLK_SOURCE_HSE_32MHz ); //主频重新配置
DelayMs(500);
Write_MXC6655XA(ADDRESS, CONTROL, Low_power_Dis); //陀螺仪关闭低功耗
LCD_BLK_Set(); //恢复屏幕背光}
}