历史上的今天
今天是:2025年04月28日(星期一)
2021年04月28日 | MSP430省电方式的两种唤醒方法
2021-04-28 来源:eefocus
1MSP430省电方式简介
MSP430以其低功耗著称于世,它可以外接2个时钟源——XIN、XT2IN,内部还有1个DC0振荡器,可以产生高达8 MHz的内部时钟。一般XT2IN的频率为高频,按实际应用时的要求来选用;XIN为低频,可以是32 768Hz。XIN的用途主要是在低功耗时使系统保持“活着”。MSP430共有5种省电方式,即LPM0~4。其中,
LPM0:CPU、MCLK关闭,SMCLK、ACLK打开,功耗79uA;
LPM1:CPU、MCLK、DCO关闭,SMCLK、ACLK打开,功耗4luA;
LPM2:CPU、MCLK、SMCLK、DC0关闭,DC产生器、ACLK打开,功耗17uA;
LPM3:CPU、MCLK、SMCLK、DC0、DC产生器关闭,ACLK打开。功耗2uA;
LPM4:CPU及所有模块都关闭,功耗0.1 uA。
系统在LPMO-3方式下可以被唤醒,LPM4则不能。大多数应用场合都希望MSP430平时进入睡眠状态,降低功耗,而后定时或被外界中断唤醒,执行相应的程序后再次进入睡眠状态,然后再次被唤醒,其中因为LPM3是满足要求且功耗最低的一种方式,所以它被使用得最多。本文就来讨论这种方式下的睡眠与唤醒。
2 睡眠与唤醒
主程序循环运行的流程如图1所示。

每一次循环中都要判断睡眠条件是否成立,若成立则切换时钟,进入睡眠方式。至此,CPU不再执行任何程序,直到CPU被唤醒后才继续执行。唤醒条件可以是定时中断、外部I/O中断,或串行口中断。下面的PowerManagement代码为进入睡眠前后和被唤醒后执行的相应操作。SerialReceiveInterrupt代码为串行口接收到1个字符中断后进行的相应操作,TimerBInterrupt代码为定时器B5定时时间到后进行的相应操作。2个中断程序中,在唤醒CPU之前均将时钟调整到正常工作时的高速时钟源上,设置相应的标志,然后再执行唤醒子程序clrLPM3。编译软件为IAR embedded workbench 1.26。


3 睡眠时长
如果睡眠是靠串行口中断来唤醒,则睡眠时长为不定长,什么时候来了中断,什么时候醒来。所以在此只讨论定时器产生中断来唤醒的情况。
定时器B的控制寄存器的说明如图2所示。

图2 定时器B的控制寄存器
CNTLx:计数器长度,00=16位,MSP430定时器B的计数器TBR最大为0xFFFF;01=12位,TBR最大为0x0FFF,10=10位,TBR最大为0x03FF,11=8位,TBR最大为0xFF。
TBSSELx:定时器B的时钟源选择,00=TBCLK,01=ACLK,10=SMCLK,11=INCLK。
IDx:定时器B的时钟源分频因数,00=不分频,01=2分频,10=4分频,11=8分频。
MCx:定时器B的计数方式选择位,00=暂停计数,01=加计数方式,10=连续计数方式,11=加减计数方式。详细内容请参考MSP430的数据手册。
前述程序中定时器B的控制字TBCTL=TBSSEL0+ID0+ID1+MC1+TBCLR。定时器B的时钟源选择为TBSSEL0,该值在MSP430x14x.h头文件中的定义为0x0100,即选择的时钟源为ACLK(32768hz)。ID0在MSP430x14x.h定义为0x40,ID1在MSP430x14x.h定义为0x80,二者相加为0xC0,即定时器B的时钟源为8分频。MC1在MSP430x14x.h定义为0x20,即定时器B采用连续计数方式。
以上时钟选择了ACLK为32 768,再进行8分频,等于4 096,则定时器B的时钟最终运行频率为4 096 Hz,每计1个数所需时间为(1/4 096)S。又由于前面把定时器B5的计数值设为TBR-10=0xFFFF-10=0xFFF0=65 536-10=65 526,则计满65 526数需要的时间为65 526×(1/4 096)s=15.997 s≈16 s。因此,用定时器定时到产生中断作为唤醒源,最大睡眠时间不超过16 S。如果任务不需要这么快执行一次,可以每次醒来后先不去执行任务,而是给1个计数变量加1,然后继续进入睡眠状态,直到计数变量等于想要的时长后再执行。
结语
MSP430是一款非常好的低功耗单片机,用好它的省电功能,可以大大延长电池的寿命。因此该产品被广泛地应用于电池供电的工控产品中。本文的代码都是实际应用中的程序代码,经过了实际的检验。
史海拾趣
|
三个建议:英特尔院士寄语中国年轻IT技术人员 日前,在英特尔中国研究中心成立十周年暨\"2008英特尔中国研究论坛\"在京举 行之际,英特尔企业技术事业部高级院士、通信技术实验室总监康凯文(Kevin &nbs ...… 查看全部问答> |
|
石英振荡器用了好多年了,现在听说MEMS也可以用来做振荡器,看到一个专家发了一通高论,MEMS振荡器真的有那么好,有兴趣的兄弟看一下 MEMS和石英技术争夺振荡器市场… 查看全部问答> |
|
调试程序时,在某一行上 ,点击小手,设置断点 可是我运行程序时,程序并不在断点处 停止 是不是还有其他的地方需要设置的~ 谢谢,在线等待你的回复! wdStart(id,5*60,(FUNCPTR)taskDelete,tid1); 是不是定时5秒? … 查看全部问答> |
|
#include #include\"1602.h\" uchar year,yue,ri,shi,fen,miao,aa,t,t1,t2,t3,t4; /*******************宏定义*******************/ #define REST_OUT P2DIR|=BIT4 #define REST_IN P2DIR&=~BIT4 #define REST_H P2OUT|=BIT4 #define REST_ ...… 查看全部问答> |
|
为何在platform.bib和platform.reg加入驱动后,内核中没有啊? 我在platform.bib和platform.reg中加入了驱动 并且驱动也放到了release目录下 为何不能编入到内核中呢? 而且我看了下reginit.ini和ce.bib中也没有相应的信息 请问高手们问题出在哪里啊?… 查看全部问答> |
|
http://item.taobao.com/item.htm?id=6984836496 才60块,还带触摸,绝对超值商家人很好的 虽然是停产的产品,但作为DIY还是不错的。。。 我买了两个,正准备用在MIPS的网络电视机上 … 查看全部问答> |
|
2.分析了数字中频主要应用数字变频系统的基本原理与结构,对其关键模块数字混频模块和抽取(内插)滤波模块在FPGA中的实现进行了研究。对于数字混频模块,讨论了查找表法和CORDIC法的实现结构及其参数的确定,指出了两种方法的优缺点及其性能改进方 ...… 查看全部问答> |




