历史上的今天
今天是:2025年03月23日(星期日)
2021年03月23日 | MSP430单片机低功耗结构原理
2021-03-23 来源:eefocus
当系统时钟发生器基本功能建立之后,CPU内状态寄存器SR的SCG1,SCG0,CPUOFF,OSCOFF位是重要的低功耗控制位。只要任意中断被响应,上述控制位就被压入堆栈保存,中断处理之后,又可恢复先前的工作方式。在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些控制位;这样允许程序在中断返回(RETI) 后,以另一种功耗方式继续运行。
各控制位的作用如下:
SCG1: 复位,使能SMCLK;置位,禁止SMCLK。
SCG0: 复位,激活直流发生器,只有SCG0置位,并且DCOCLK没有被用作MCLK或SMCLK时,直流发生器才能被禁止。
OSCOFF:复位,激活LFXT1,只有当OSCOFF被置位并且LFXT1CLK不用于MCLK或SMCLK时,FLXT1才能被禁止;当使用晶体振荡器关闭选项OSCOFF时,需要考虑晶体振荡器的启动设置时间
CPUOFF:复位,激活MCLK;置位,关闭MCLK。
控制位SCG1、SCG0、CPUOFF、OSCOFF可由软件配制成六种不同的工作模式:
工作模式 控制位 CPU状态、振荡器及时钟
SCG1=0 CPU活动
SCG0=0 MCLK活动
AM CPUOFF=0 SMCLK活动
OSCOFF=0 ACLK活动
SCG1=0 CPU禁止
LPM0 SCG0=0 MCLK禁止
OSCOFF=0 SMCLK活动
CPUOFF=1 ACLK活动
SCG1=0 CPU禁止
MCLK禁止
LPM1 SCG0=1 如果DCOCLK位用作MCLK或SMCLK,则直流发生器禁止,
否则,仍然活动
OSCOFF=0 SMCLK活动
CPUOFF=1 ACLK活动
SCG1=1 CPU禁止
如果DCO未被用作MCLK或SMCLK,自动禁止
SCG0=0 MCLK禁止
LPM2 OSCOFF=0 SMCLK禁止
CPUOFF=1 ACLK活动
SCG1=1 CPU禁止
DCO被禁止,直流发生器被禁止
SCG0=1 MCLK禁止
LPM3 OSCOFF=0 SMCLK禁止
CPUOFF=1 ACLK活动
SCG1=1 CPU禁止
SCG0=1 DCO被禁止,直流发生器被禁止
LPM4 OSCOFF=1 所有振荡器停止工作
MCLK、SMCLK禁止
CPUOFF=1 ACLK禁止
低功耗的设计技巧问题
1.LPM4:在振荡器关闭模式期间,处理机的所有部件工作停止,此时的电流消耗最小。此时只有在系统上电电路检测到低点电平或任一请求异步响应中断的外部中断事件时才会从新工作。因此在设计应含有可能需要用到的外部中断才采用这种模式,否则发生不可预料的结果。
2.LPM3:在DC发生关闭期间,只有晶振是活动的。但此时设置基本时序条件的DC发生器的DC电流被关闭。由于此电路的高阻设计,使功耗被抑制。当从DC关闭到启动DC需要一段时间(ns~us)
3.LPM2:在此期间晶振和DC发生器是工作的,所以可以实现快速启动
4.LPM1:在此期间振荡器已经工作,所以不存在启动延时问题
_BIS_SR(LPM3_bits) _BIC_SR_IRQ(LPM3_bits)
LPM3 LPM3_EXIT
系统响应中断过程:
1.硬件自动中断服务
a.PC入栈
b.SR入栈
c.中断向量赋给PC
d.GIE、SCG1、CPOOFF和OSCOFF清楚
e.IFG标志位清除(单源中断标志比如WDTIFG)
2.执行中断处理子程序
3.执行RETI指令
4.SR出栈
5.PC出栈
低功耗应用
void main(void)
{
WDTCTL=WDT_ADLY_1000;
IE1 | = WDTIE;
P1DIR | = 0X01;
_EINT();
for(;;)
{
LPM3;
_NOP();
}
}
interrupt[WDT_VECTOR] watchdog_timer(void)
{
P1OUT ^ = 0X01;
}
史海拾趣
|
在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢? 一、解释 VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意 ...… 查看全部问答> |
|
请大家有相关经验或者认识的说说串口在线升级的方法,大概有哪些思路? 主要是如何固定一些不需要升级的文件,如何将非升级文件与升级文件在FLASH中分区存放?… 查看全部问答> |
|
at91fr40162s的CPU,晶振用的66M的。用的JTAG线是之前调at91fr40162的CPU的线和JTAG板子,是 20口的,因为at91fr40162s的CPU的JTAG线是直接从MCU接出来,只有四跟,TDI,TDO,TCK,TMS, 再接上两根电源和地线,有六跟,根据网上的说明自己弄了一 ...… 查看全部问答> |
|
大虾们好,以下是我的UART1中断函数 void UART1 (void) interrupt 20 using 2 { unsigned char xdata tChar=0; EIE2 &= 0xBF; RI1Flag=(SCON1 & 0x01); ...… 查看全部问答> |
|
volatile unsigned int *xy=(volatile unsigned int *)0x3401; 编译,这句话报错: erro:"declaration may not appear after executable statement in block" 是什么地方出了问题? #define conval 0x15 .. unsigned int a=conval; 也报 ...… 查看全部问答> |
|
大家好,我是某大学里的一名本科生,马上就毕业了。我学的是机械,以及力学。但我个人却对电路设计和单片机什么的比较有兴趣。最近,也在花相当一部分时间学习嵌入式。我个人觉得,未来机电结合才是王道。大家觉得我的想法怎么样?对于一个外行,非 ...… 查看全部问答> |
|
【视频分享】SimpleLink WiFi CC3000快速体验 TI工程师Nick为您介绍快速使用CC3000 FRAM开发包的经验。CC3000 FRAM开发包包括了MSP430 FRAM EVM板,CC3000模组EVM板,不含电池的3A电池盒,以及用于接入无线网络的无线路由器。 $(\'swf_ypz\').innerHTML=AC_FL_RunContent(\'width\', \'550\', ...… 查看全部问答> |




