MSP430系统时钟与低功耗
- 格式:ppt
- 大小:946.50 KB
- 文档页数:22
一张图理解msp430f4371的低功耗模式430有6中工作模式,在此不再累述,C程序中,使430单片机低功耗进入低功耗的语句非常简单,只需一句LPM0/LPM1/LPM2/LPM3/LPM4即可使其进入低功耗状态。
看了一天430的系统时钟模块和低功耗状态,发现最靠谱的东西还是官网数据手则,迷惑了一天,最终一张图片使思维稍微清晰。
图片如下:从上图得到自己的理解,虽然可能有误,但暂时不影响对430单片机的使用:LPM0:CPUoff置位------------------------>;CPU不能用,MCLK不能用,其他一切照旧活动;LPM1:CPUoff置位,SGC0置位----------->;CPU不能用,MCLK不能用,FLL+停止操作,而ACLK和SMCLK正常活动;LPM2:CPUoff置位,SCG1置位----------->;CPU不能用,MCLK、FLL+、DCOCLK不能用,但直流发生器、ACLK正常工作;LPM3:CPUoff置位,SCG1置位,SCG0置位---->;CPU不能用,MCLK,FLL+,DCOCLK,直流发生器不能用,但ACLK不能用;LPM4:CPUoff置位,SCG1置位,SCG0置位,OSCoff置位----->;LPM3的基础上使ACLK也不能用。
作者认为自己理解有误的地方,就是SCG1的控制范围,即其到底是控制直流发生器还是调制器还是控制FLL+的,由于找不到相关资料,只有勉强做如下理解:SCG1置位的时候,调制器不能工作,自然DCOCLK不能用了,同时FLL+也不能工作,但直流发生器是工作的,只有当SCG1和SCG0同时置位的时候直流发生器才停止工作,这个时候甭管FLL+还是DCOCLK都不能工作了,有可能SCG0对直流发生器也有部分控制作用,但不像对FLL+那样完全控制。
以上理解可能有误,但希望真正懂得高手路过此帖的时候请给予指正,在此谢过。
MSP430低功耗对于嵌入式处理器系统来说,低功耗设计有3个基本原则:工作频率和功耗成反比关系。
工作电压和功耗成正比关系。
工作模块数量和功耗成正比关系。
MSP430系列MCU具有强大的低功耗模式设计。
在不同的低功耗模式下,配置不同的时钟信号来降低CPU及工作模块的工作频率;选择性的关闭暂时不使用模块和相关的时钟信号来降低工作模块的数量以达到降低整机功耗的目的。
MSP430的5xx系列和6xx还支持用户设置内核电压,通过降低内核工作电压来降低功耗。
低功耗模式是MSP430的特色功能,一般情况下,MSP430分为6种工作状态,分别是活动状态(AM)、低功耗模式0(LPM0)、低功耗模式1(LPM1)、低功耗模式2(LPM2)、低功耗模式3(LPM3)和低功耗模式4(LPM4)。
对于5xx系列的产品带实时时钟RTC的信号还具备低功耗模式3.5(LPM3.5)和低功耗模式4.5(LPM4.5)。
根据不同的应用合理地选用低功耗模式可以有效地降低MSP430功耗。
图3-8是MSP430F21x1工作在1MHz对应于AM模式和低功耗模式下的电流消耗。
从图中可以看到低功耗模式下,电流消耗要远小于AM模式。
下面对各种工作模式做详细的介绍。
MSP430的低功耗模式是通过状态寄存器SR各位的配置来完成的,SR寄存器如表3-6所示。
与低功耗模式相关的是系统时钟控制位(SCG0)和(SCG1)、振荡器关闭/开启位(OSCOFF)和CPU关闭/开启位(CPUOFF)。
SCG0位用于关闭DCO的直流发生器,也就是关闭DCOCLK;SCG1位用于关闭SMCLK;OSCOFF位用于关闭MSP430的振荡器,包括LFXT1和XT2;CPUOFF位用于关闭CPU。
表3-6 SR寄存器Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8Reserved VBit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0SCG1 SCG0 OSCOFF CPUOFF GIE N Z C5种低功耗模式可以使用表3-7区分,表中显示了5种低功耗模式下,CPU)、SMCLK、ACLK和DCO振荡器的关断状MSP430的时钟信号MCLK(态。
单片机MSP430的极低功耗系统设计<P <B 关键词:极低功耗系统MSP430 低功耗管理<P <B 1 影响系统功耗的主要因素对于一个数字系统而言,其功耗大致满足以下公式:P=CV2f,其中C为系统的负载电容,V为电源电压,f为系统工作频率。
由此可见,功耗与电源电压的平方成正比,因此电源电压对系统的功耗影响最大,其次是工作频率,再就是负载电容。
负载电容对设计人员而言,一般是不可控的,因此设计一个低功耗系统,应该考虑到不影响系统性能前提下,尽可能地降低电源的电压和使用低频率的时钟。
下面对TI公司新出MSP430来具体探讨这个问题。
2 基于MSP430极低功耗系统的设计MSP430具有工业级16位RISC,其I/O和CPU可以运行在不的时钟下。
CPU功耗可以通过开关状态寄存器的控制位来控制:正常运行时电流160μA,备用时为0.1μA,功耗低,为设计低功耗系统提供了有利的条件。
图1是我们设计的以MSP430为CPU的“精密温度测试仪”(下面简称测试仪)。
该产品使用电池供电,体积小巧,携带方便。
(1)电源电压在使用时应该尽可能地选择最低的电源电压。
对于MSP430而言,可用的最低电压是很低的,最低可达1.8V。
我们使用TI公司推荐使用的3V。
通常的电源只提供5V 电压,因此,需要将5V电压由一个3V的稳压管降压后给CPU供电,也可以直接锂电池供电。
3V不是标准的TTL电平,因此,在使用时需要用接口电路使CPU的非TTL标准电平能与TTL标准电平的器件连接。
这些接口电路应该也是低功耗的,否则会造成一方面使用低电压降低了功耗,另一个方面使用额外的接口电路又增加了系统的功耗。
或者直接使用支持3V电压的外围芯片。
(2)时钟频率从低功耗的角度看,需要较低的频率,但是在实时应用中为了快速响应外部事件又需要有比较快的系统时钟。
这就需要系统具有两个高低不同的频率,在需要的时候可以在两个频率之间进行切换。
MSP430 系统时钟ACLK、MCLK、SMCLKMSP430 基础时钟模块包含以下3 个时钟输入源。
一、4 个时钟振荡源1、LFXT1CLK:外部晶振或时钟1 低频时钟源低频模式:32768Hz 高频模式:(400KHz-16MHz)2、XT2CLK:外部晶振或时钟2 高频时钟源(400KHz-16MHz) 3、DCOCLK:内部数字RC 振荡器,复位值1.1MHz4、VLOCLK:内部低功耗振荡器12KHz 注:MSP430x20xx:LFXT1 不支持HF 模式,XT2 不支持,ROSC 不支持.(1)LFXT1CLK 低频时钟源:由LFXT1 振荡器产生(如图2 所示)。
通过软件将状态寄存器中OSCOff 复位后,LFXT1 开始工作,即系统采用低频工作。
如果LFXT1CLK 没有用作SMCLK 或MCLK 信号,则可以用软件将OSCOff 置位,禁止LFXT1 工作。
(2)XT2CLK 高频时钟源:由XT2 振荡器产生。
它产生时钟信号XT2CLK,其工作特性与LFXT1 振荡器工作在高频模式时类似。
可简单地通过软件设置XT2 振荡器是否工作,当XT2CLK 没有用作SMCLK 或MCLK 信号时,关闭XT2,选择其他时钟源。
3)DCOCLK 数字控制RC 振荡器。
由集成在时钟模块中的DCO 振荡器产生。
DCO 振荡器是一个RC 振荡器,频率可以通过软件调节,其控制逻辑如图3 所示。
当振荡器LFXT1、XT2 被禁止或失效时,DCO 振荡器被自动选作MCLK 的时钟源。
因此由振荡器失效引起的系统中断请求可以得到响应,甚至在CPU 关闭的情况下也能得到处理。
由基础时钟模块可以提供系统所需的3 种时钟信号,即:ACLK、MCLK、SMCLK。
其中辅助时钟ACLK 是LFXT1CLK 信号经1、2、4、8 分频后得到的。
ACLK 可由软件选作各个外围模块的时钟信号,一般用于低速外设;系统主时钟MCLK 可由软件选择来自LFXT1CLK、XT2CLK、DCOCLK 三者之一,然后经1、2、4、8 分频得到。
MSP430低功耗模式:工作频率越低,工作电压越低,工作模块越少MCU功耗越少MCLK:系统主时钟一般为8MHz,供CPU和系统使用;SMCLK:子系统时钟32—768KHz,供外围模块使用;ACLK:辅助子时钟,由LFXT1CLK产生,提供外围模块使用DCO:整合的高速数控振荡器,用于CPU和高速外围设备的主时钟源状态寄存器SR的低功耗控制位:SCG1:系统时钟发生器控制位1(System clock generator 1)置1时关闭SMCLKSCG0:系统时钟发生器控制位0(System clock generator 0)置1时关闭DC发生器OSCOff:晶振控制位(Oscillator Off Bit)置1时关闭LFXT1振荡器CPUOff:CPU控制位(CPU Off Bit)置1时关闭MCLK,此时除了RAM内容、端口、寄存器保持外,CPU处于停止状态,由中断将CPU从此状态唤醒。
1.MSP430内部各模块运行是完全独立的:TA、TB、I/O端口、A/D、WDT等均可在CPU休眠的状态下独立运行,各个片内模块也可通过禁止相应寄存器中的控制位关闭。
2.只要改变了SR中的模式控制位,工作模式也立即改变;有关的模块也因为相应的时钟源禁止而被关闭。
3.改变模式不影响所有的I/O引脚及RAM/寄存器的值。
低功耗模式的进入与退出:在AM模式下。
按低功耗模式设定SR中的控制位,MSP430就进入设定的低功耗模式。
任意中断均可以唤醒处于低功耗模式的MSP430,即切换到AM活动模式。
低功耗退出过程:当处于低功耗模式下的MSP430,有N类型号的非屏蔽或可屏蔽中断源产生,满足响应条件,CPU由硬件完成下面的操作:1.入栈保护当前PC2.入栈保护当前SR3.清零SR(置GIE=0,屏蔽可屏蔽中断,并结束低功耗模式,切换到活动模式)4.从中断向量表取中断向量至PC5.转去执行中断服务程序同样的,中断程序执行完毕,执行到RETI返回指令时:1.出栈恢复SR和PC的值2.因为回复了SR的值,使MSP430回到原来的低功耗模式!如果希望改变MSP430返回的低功耗模式时,需要在中断响应程序中修改堆栈中的SR控制位的值,使MSP430进入活动模式或其它低功耗模式进入低功耗模式:汇编语言:BIS.W #LPMn,SRC语言:_BIS_SR(LPMn_bits); 或者LPMn。
MSP430低功耗设计经常有人询问,MSP430的低功耗是如何实现的,该如何设计,功耗能做到多少?其实这些问题都不是简单能够回答的,一个系统的的低功耗设计,不仅仅是依靠MCU就能实现的,当然MCU 是非常重要的部分。
下面我就针对MCU的低功耗设计谈谈我的一些心得。
一般来讲MCU的功耗取决于三个方面,低功耗控制,低功耗工作模式选择,低功耗软件设计,本文将针对这三个方面进行阐述。
一、MSP430的低功耗控制1.1低功耗的基本原则针对MCU而言,有几个基本的原则,●工作频率越低,MCU的功耗越小我们在看数据手册的时候,经常会看到一个参数就是每MHZ消耗的功耗。
例如:100uA/1MHz,m 1.8v。
通常情况MCU会有三个参数,分别是运行模式功耗,空闲模式功耗和掉电模式功耗。
从参数可以看出,MCU的功耗直接和你使用的工作频率有关,在进行低功耗设计的时候一定要选择合适的工作频率。
●工作电压越低,MCU的功耗越小从上个例子也可以看出,MCU的功耗直接和工作电压相关。
厂家一般给出的都是MCU的最低工作电压,事实上很多产品由于外设原因,电源原因,都不是工作在MCU的最低工作电压上的,数据手册上的参数仅供对比参考,不能作为绝对值进行计算。
●工作的外设越少,MCU的功耗越小这个条比较好理解。
MCU的外设使用越多,功耗就越大。
另外,还有一个比较重要的原则,就是在FLASH中运行比在RAM中运行消耗更多的功耗。
所以如果MCU的RAM够大,可以把最常用的主循环和处理函数放在RAM中运行,这样可以节约大于30%的功耗。
注1:STM没有提供测试电压的参数,这个指标就无实际意义。
从上表可以看出,各个厂家提供的参数都不是在同样的环境测得的,各位同学在使用时要进行甄别,不要只盯着数字看。
1.3MSP430的低功耗设计针对如上的三条,MSP430都做了比较好的低功耗设计。
有的同学只是简单的对比数据手册上的技术参数来判定一个MCU的功耗情况,其实并不是很了解MCU的系统是如何实现低功耗的设计的。
MSP430微控制器低功耗设计方法分析随着物联网和嵌入式系统的快速发展,对微控制器低功耗设计方法的需求越来越迫切。
MSP430微控制器作为一种低功耗微控制器,具有出色的性能和低功耗特性,逐渐被广泛应用于各种电池供电的设备中。
本文将以MSP430微控制器为例,深入探讨其低功耗设计方法。
在设计MSP430微控制器应用时,低功耗是一个重要的考虑因素。
为了最大程度地减少功耗,我们可以采取以下几种方法。
1. 优化算法设计:在编写程序时,我们可以通过优化算法来减少微控制器的工作负载和能耗。
例如,避免使用复杂的循环和浮点运算,改用简单的逻辑和整数运算,可以有效降低功耗。
2. 睡眠模式:MSP430微控制器具有多种睡眠模式,可以在不需要工作时进入低功耗状态。
通过选择合适的睡眠模式,可以最大程度地降低功耗。
在睡眠模式中,MSP430微控制器会关闭一些不必要的模块和电源,从而降低功耗。
3. 时钟管理:时钟是微控制器的核心,也是功耗的主要来源之一。
合理管理时钟可以有效减少功耗。
在MSP430微控制器中,可以通过调整时钟频率、选择更低功耗的时钟源以及使用MCLK、SMCLK和ACLK等不同的时钟模块来实现功耗优化。
4. I/O 管理:I/O 端口通常是微控制器的功耗主要负责者之一。
通过合理管理I/O 端口,可以降低功耗。
例如,及时关闭不需要的输入/输出端口,降低端口的驱动能力或适当使用外部中断等方法。
5. 采用低功耗模块:MSP430微控制器具有丰富的低功耗模块和外设,可以根据需求选择合适的模块来降低功耗。
例如,MSP430可以通过功耗优化的ADC模块、计时器模块和UART模块等,实现对外设的低功耗控制。
除了以上几种方法,还有一些其他的设计技巧可以帮助我们在低功耗条件下充分发挥MSP430微控制器的优势。
6. 电源电压调整:降低微控制器的电源电压可以有效减少功耗。
MSP430微控制器通常具有多种电源供电电压选择,可以根据应用需求选择合适的工作电压。
5种低功耗模式分别为LPM0~LPM4(LOW POWER MODE),CPU的活动状态称为AM(ACTVE MODE)模式。
其中AM耗电最大,LPM4耗电最省,仅为0.1uA。
另外工作电压对功耗的影响:电压越低功耗也越低。
系统PUC复位后,MSP430进入AM状态。
在AM状态,程序可以选择进入任何一种低功耗模式,然后在适当的条件下,由外围模块的中断使CPU退出低功耗模式,返回AM模式,再由AM模式选择进入相应的低功耗模式,如此类推。
工作模式的选择由状态寄存器SR中的SCG1、SCG0、OSCOFF、CPUOFF 位控制。
由于在CPU的头文件中对CPU内的各寄存器和模块的各种工作模式都作了详尽的定义,所以编程时尽可能的利用就是了。
如:要进入低功耗模式0,可在程序中直接写:LPM0; 。
进入低功耗模式4,可以写:LMP4;就可以了。
退出低功耗模式如下:LPM0_EXIT; //退出低功耗模式0LPM4_EXIT; //退出低功耗模式4MSP430的电压已经降到了3.3v,虽然不是最低的(arm的部分芯片内核工作电压降到了1.8v),但是这已经是比较低的了;MSP430比较出彩的地方一个是把一颗芯片分成了N个不同的模块部分,不用的部分功能模块可以关闭掉,电流近似为零;另一个出彩的地方是,可以有三个时钟源,并产生更多的内部可用工作频率,让内部各个模块工作在不同的频率,不用的时钟还可以关掉(具体参看上一节MSP430之系统时钟篇)。
后两种方法主要是通过软件的方式进行设置的,具体来讲,MSP430可以有6种不同的工作模式:设置其工作模式主要是设置寄存器SR的SCG0、SCG1、OscOff、CPUOff 位。
SCG0=1且DCOCLK没有用于MCLK和SMCLK时,直流发生器禁止;SCG1=1时,SMCLK禁止; CPUOff=1时,MCLK被禁止;只有CPUOff=1时,OscOff才可以=1,此时晶振被禁止。