PAGE1
PAGE1
SAME系列的低功耗模式
低功耗模式概述
低功耗模式是SAME系列单片机中的一项重要功能,旨在通过减少功耗来延长电池寿命,提高系统的能效。这些模式在不同的应用场景中非常有用,尤其是在那些对功耗有严格要求的设备中,如传感器节点、便携式医疗设备和物联网设备等。SAME系列单片机提供了多种低功耗模式,每种模式都有其特定的功耗特性和唤醒机制。
低功耗模式的分类
SAME系列单片机的低功耗模式主要分为以下几种:
空闲模式(IdleMode)
掉电模式(Power-downMode)
深度掉电模式(DeepPower-downMode)
低功耗待机模式(LowPowerStandbyMode)
每种模式的功耗和唤醒时间各不相同,选择合适的低功耗模式需要根据具体的应用需求来决定。
空闲模式(IdleMode)
原理
空闲模式是最简单的低功耗模式之一。在这种模式下,CPU停止运行,但外设和中断系统仍然保持活动状态。这意味着在空闲模式下,单片机可以继续处理外设事件,如ADC采样、UART通信等。当有中断发生时,CPU会立即从空闲模式中唤醒并处理中断。
配置方法
在SAME系列单片机中,可以通过设置PM(PowerManagement)模块的相应寄存器来进入空闲模式。具体步骤如下:
配置PM模块:
设置PM_SLEEPCFG寄存器,选择进入空闲模式。
设置PM_SLEEP寄存器,使能进入低功耗模式。
进入空闲模式:
使用__WFI()(WaitForInterrupt)函数进入空闲模式。
代码示例
以下是一个简单的示例,展示如何配置并进入空闲模式:
#includesam.h
voidenter_idle_mode(void){
//配置PM模块进入空闲模式
PM-SLEEPCFG.bit.SLEEPMODE=SLEEPCFG_SLEEPMODE_IDLE_Val;//选择空闲模式
PM-INTENSET.bit.SLEEPREQ=1;//使能低功耗模式请求
//进入空闲模式
__WFI();//WaitForInterrupt
}
intmain(void){
//初始化系统
SystemInit();
//配置外设(例如UART)
//假设已经配置好UART
while(1){
//执行某些任务
//例如,读取传感器数据并发送
//进入空闲模式
enter_idle_mode();
}
}
详细说明
PM-SLEEPCFG.bit.SLEEPMODE:设置为SLEEPCFG_SLEEPMODE_IDLE_Val,表示选择空闲模式。
PM-INTENSET.bit.SLEEPREQ:使能低功耗模式请求,允许进入低功耗模式。
__WFI():这是一个内核提供的函数,用于等待中断。调用此函数后,CPU会进入空闲模式,直到有中断发生才会唤醒。
掉电模式(Power-downMode)
原理
掉电模式是一种更深层次的低功耗模式。在这种模式下,不仅CPU停止运行,大部分外设也停止工作,但保留RAM中的数据。掉电模式的功耗比空闲模式更低,但唤醒时间更长。掉电模式通常用于那些不需要频繁唤醒的应用场景。
配置方法
在SAME系列单片机中,可以通过设置PM模块的相应寄存器来进入掉电模式。具体步骤如下:
配置PM模块:
设置PM_SLEEPCFG寄存器,选择进入掉电模式。
设置PM_SLEEP寄存器,使能进入低功耗模式。
进入掉电模式:
使用__WFI()(WaitForInterrupt)函数进入掉电模式。
代码示例
以下是一个简单的示例,展示如何配置并进入掉电模式:
#includesam.h
voidenter_power_down_mode(void){
//配置PM模块进入掉电模式
PM-SLEEPCFG.bit.SLEEPMODE=SLEEPCFG_SLEEPMODE_PDWNLPM_Val;//选择掉电模式
PM-INTENSET.bit.SLEEPREQ=1;//使能低功耗模式请求
//进入掉电模式
__WFI();//WaitForInterrupt
}
intmain(void){
//初始化系统
SystemInit();
//配置外设(例如RTC)