对于嵌入式处理器系统来说,低功耗设计有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-6SR寄存器
Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8
ReservedV
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
SCG1SCG0OSCOFFCPUOFFGIENZC
5种低功耗模式可以使用表3-7区分,表中显示了5种低功耗模式下,MSP430的时钟信号MCLK(CPU)、SMCLK、ACLK和DCO振荡器的关断状态。
表3-7低功耗模式和对应SR状态
低功耗模式CPU MCLKSMCLKACLKCPU OFFSCG1SCG0OSC OFF
状态介绍
LPM0OFFONON1000CPU和MCLK关断,SMCLK和ACLK可用
LPM1OFFONON1010CPU和MCLK关断,SMCLK和ACLK可用,DCO关断
LPM2OFFOFFON1100CPU、MCLK和SM-CLK关断,ACLK可用,DCO启用
LPM3OFFOFFON1110CPU、MCLK和SM-CLK关断,ACLK可用,DCO关断
LPM4OFFOFFOFF1111CPU、MCLK、SM-CLK和ACLK全部关断,DCO关断
MSP430进入低功耗状态后,其I/O口状态、寄存器状态以及RAM的状态都会保持。MSP430的唤醒则是通过中断的方式实现的,不同的状态下可以利用不同的中断源唤醒。低功耗模式与对应的唤醒方式如表3-7所示。LPM4模式下,由于所有的时钟全部关闭所以只能通过外部中断的方式唤醒,比如使用I/O口的外部中断功能唤醒。
部分MSP430支持LPM3.5和LPM4.5的低功耗模式。
在LPM3.5低功耗模式下CPU处于掉电状态(Shut-Down);RAM和寄存器的值将丢失;GPIO的状态保持不变;备份区的RAM内容保持不变;CPU只能从以下几种中断或事件来唤醒: RST/NMI、RTC事件、 GPIO P1、 GPIO P2。在该低功耗模式下,RTC由低频的时钟晶体提供时钟源,其他所有的时钟源都处于关闭状态。
在LPM4.5低功耗模式下CPU处于掉电状态;RAM和寄存器的值将丢失;GPIO的状态保持不变;备份区的RAM内容保持不变;GPIO的状态保持不变;CPU只能从以下几种中断或事件来唤醒:RST/NMI、GPIO P1、 GPIO P2。在该低功耗模式下,包括RTC在内的所有时钟源都停止工作,整机功耗达到最低。
不同系列的MSP430的低功耗模式下的功耗也不一样,表3-8列举了MSP430各个系列的典型芯片的低功耗模式时的典型功耗。
表3-8低功耗模式和对应SR状态
芯片型号AMLPM0/LPM1LPM2LPM3LPM4LPM3.5LPM4.5
MSP430F149280μA55μA17μA1.8μA0.1μA——
MSP430F2012300μA85μA25μA0.9μA0.1μA——
MSP430F417300μA92μA17μA0.9μA0.1μA——
MSP430F5438230μA73μA11.μA2.1μA1.2μA—0.1μA
MSP430F6736265μA89μA7.4μA2.5μA1.6μA1.24μA0.78 μA
MSP430FR573981.4μA175μA61μA6.3μA5.9μA1.5μA0.32 μA
MSP430FR5969100μA—0.7μA0.5μA—0.5μA0.02μA
如果MSP430处于低功耗工作模式,当可屏蔽中断和非可屏蔽中断源产生时,会唤醒CPU进入中断处理程序,如下的操作将由硬件来完成:
1)入栈保护当前PC指针寄存器。
2)入栈保护当前SR状态寄存器。
3)清零SR状态寄存器(置GIE = 0, 屏蔽可屏蔽中断,并结束低功耗模式,CPU切换到Active模式)。
4)从中断向量表中取出中断向量到PC指针寄存器。
5)跳转到中断服务程序开始执行。
6)中断执行完毕后执行RETI返回指令。
7)出栈恢复SR状态寄存器和PC指针寄存器的值。
8)CPU恢复到原来的低功耗模式。
注意:如果在CPU返回原先低功耗模式时改变低功耗的模式,需要在中断处理程序中修改堆栈中的SR控制位的值。
LPM3.5和LPM4.5的唤醒会触发BOR,所以从LPM3.5或LPM4.5模式唤醒需要更长的时间。在唤醒过程中需要等待重新建立内核电压,在进入应用程序之前还会执行BOOT代码。所以如果不是对功耗有特别的要求,尽量少用LPM3.5和LPM4.5低功耗模式。
图3-9演示了MSP430的各种低功耗模式切换和唤醒的过程。
表3-9低功耗模式对应的唤醒方式
低功耗模式唤醒中断源
LPM0定时器、ADC、DMA、UART、WDT、I/O、比较器、外部中断、RTC、串行通信、其他外设
LPM1定时器、ADC、DMA、UART、WDT、I/O、比较器、外部中断、RTC、串行通信、其他外设
LPM2定时器、ADC、DMA、UART、WDT、I/O、比较器、外部中断、RTC、串行通信、其他外设
LPM3定时器、ADC、DMA、UART、WDT、I/O、比较器、外部中断、RTC、串行通信、其他外设
LPM4外部中断
MSP430各个系列在低功耗模式下的唤醒时间有所不同,表3-10列出了各个系列的一些典型的芯片在不同的低功耗模式下唤醒进入工作模式的时间。注意,部分芯片从低功耗模式唤醒到工作模式所需的时间和工作频率有关,具体请参见详细的数据手册说明。
表3-10各系列MSP430从低功耗模式唤醒到工作模式所需的时间
芯片型号LPM0LPM1LPM2LPM3LPM4LPM3.5 /LPM4.5
芯片型号LPM0LPM1LPM2LPM3LPM4LPM3.5 /LPM4.5
MSP430F149立即立即6.0μs6.0μs6.0μsN/A
MSP430F2012立即立即1.0μs1.0μs1.0μsN/A
MSP430F417立即立即6.0μs6.0μs6.0μsN/A
MSP430F5438立即立即3.5μs3.5μs3.5μs2.0μs
MSP430F6736立即立即3.0μs3.0μs3.0μs2.0μs
MSP430FR57390.5μs12μs12μs78μs78μs310μs
MSP430FR5969立即6.0μs6.0μs7.0μs7.0μs250μs