基本信息
文件名称:Microchip 系列:SAM L 系列_(3).SAM L系列的低功耗特性.docx
文件大小:23.33 KB
总页数:23 页
更新时间:2025-06-12
总字数:约1.07万字
文档摘要

PAGE1

PAGE1

SAML系列的低功耗特性

1.低功耗模式概述

1.1低功耗模式的种类

SAML系列单片机提供了多种低功耗模式,这些模式允许开发者根据应用需求选择合适的功耗级别。常见的低功耗模式包括:

SleepMode(休眠模式):在休眠模式下,CPU停止运行,但外设可以继续工作。根据是否保留RAM和外设的状态,休眠模式又分为多个子模式。

StandbyMode(待机模式):在待机模式下,系统时钟停止,但某些低功耗外设可以继续运行,如RTC(实时时钟)。

BackupMode(备份模式):在备份模式下,系统时钟完全停止,只有备份寄存器和RTC等关键外设保持运行。

OffMode(关机模式):在关机模式下,系统完全断电,所有状态丢失,但可以通过外部中断或RTC唤醒。

1.2低功耗模式的选择

选择合适的低功耗模式需要考虑以下几个因素:

功耗:不同模式下的功耗差异显著,选择最低功耗的模式可以延长电池寿命。

唤醒时间:不同模式下的唤醒时间不同,选择唤醒时间较短的模式可以减少系统的响应时间。

保留状态:某些模式下可以保留RAM和外设状态,选择合适的模式可以减少唤醒后的初始化时间。

唤醒源:不同的模式支持不同的唤醒源,选择支持所需唤醒源的模式可以提高系统的灵活性。

2.休眠模式详解

2.1休眠模式的工作原理

在休眠模式下,CPU停止运行,但外设可以继续工作。系统时钟可以保留或关闭,具体取决于所选择的子模式。休眠模式通过减少CPU的活动来降低功耗,同时保留必要的外设功能以响应外部事件。

2.2休眠模式的配置

配置休眠模式需要设置相应的寄存器。以下是一个配置休眠模式的示例代码:

#includesam.h

voidenter_sleep_mode(void){

//禁用全局中断

__DMB();//数据内存屏障

__DSB();//指令内存屏障

__disable_irq();//禁用全局中断

//设置休眠模式

SCB-SCR|=SCB_SCR_SLEEPDEEP_Msk;//设置待机模式

//保留RAM和外设状态

PM-SLEEP.reg=PM_SLEEPCFG_SleepMode|PM_SLEEPCFG_CPUOFF_Msk;

//进入休眠模式

__WFI();//等待中断

}

intmain(void){

//初始化系统

SystemInit();

//进入休眠模式

enter_sleep_mode();

//唤醒后继续执行

while(1){

//应用程序代码

}

}

2.3休眠模式的唤醒

休眠模式可以通过外部中断或RTC等唤醒源唤醒。以下是一个通过外部中断唤醒的例子:

#includesam.h

voidconfigure_ext_interrupt(void){

//配置外部中断

EIC-INTENSET.reg=EIC_INTENSET_EXTINT0;//使能外部中断0

EIC-CTRL.reg|=EIC_CTRL_ENABLE;//启用EIC

}

voidenter_sleep_mode(void){

//禁用全局中断

__DMB();//数据内存屏障

__DSB();//指令内存屏障

__disable_irq();//禁用全局中断

//设置休眠模式

PM-SLEEP.reg=PM_SLEEPCFG_SleepMode|PM_SLEEPCFG_CPUOFF_Msk;

//进入休眠模式

__WFI();//等待中断

}

voidext_interrupt_handler(void){

//处理外部中断

if(EIC-INTFLAG.regEIC_INTFLAG_EXTINT0){

EIC-INTFLAG.reg=EIC_INTFLAG_EXTINT0;//清除中断标志

//唤醒处理代码

}

}

intmain(void){

//初始化系统

SystemInit();

//配置外部中断

configure_ext_interrupt();