这几天学习了一下TI在线培训课程MSP430 LaunchPad开发课程,对MSP430有了进一步的认识,其中给我最大的印象就是msp430低功耗的特点,记得工程师列举了一个三个小块的苹果串联给一个430开发板供电的例子,着实令人吃惊。下面我简单讲一下我学习到的msp430低功耗模式的特点。
工作频率越低,工作电压越低,工作模块越少MCU功耗越少。MCLK:系统主时钟一般为8MHz,供CPU和系统使用;SMCLK:子系统时钟32—768KHz,供外围模块使用;ACLK:辅助子时钟,由LFXT1CLK产生,提供外围模块使用DCO:整合的高速数控振荡器,用于CPU和高速外围设备的主时钟源。
控制位 | | CPU状态及振荡时钟状态(3V电源供电下,各状态的工作电流) | | | | | | | | | | CPU处于活动状态,MCLK活动,SMCLK活动,ACLK活动。340μA | | | | | | CPU与MCLK禁止,SMCLK,ACLK活动。 200μA | | | | | | CPU与MCLK禁止;在活动模式如果DCO未用作MCLK及SMCLK,则直流发生器被禁止,否则保持活动,SMCLK,ACLK活动。 70μA | | | | | | CPU,MCLK,SMCLK禁止;如果DCO未用作MCLK或SMCLK,自动被禁止直流发生器保持有效,ACLK活动。17μA | | | | | | CPU,MCLK,SMCLK被禁止;DCO,直流发生器被禁止;ACLK活动。2μA | | | | | | |
状态寄存器SR的低功耗控制位: 15~9 8 7 6 5 4 3 2 1 0 SCG1:系统时钟发生器控制位1(System clock generator 1)置1时关闭SMCLK SCG0:系统时钟发生器控制位0(System clockgenerator 0)置1时关闭DC发生器 OSCOff:晶振控制位(Oscillator Off Bit)置1时关闭LFXT1振荡器 CPUOff:CPU控制位(CPU OffBit)置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. 入栈保护当前PC 2. 入栈保护当前SR 3. 清零SR(置GIE=0,屏蔽可屏蔽中断,并结束低功耗模式,切换到活动模式) 4. 从中断向量表取中断向量至PC 5. 转去执行中断服务程序 同样的,中断程序执行完毕,执行到RETI返回指令时: 1. 出栈恢复SR和PC的值 2. 因为回复了SR的值,使MSP430回到原来的低功耗模式 !如果希望改变MSP430返回的低功耗模式时,需要在中断响应程序中修改堆栈中的SR控制位的值,使MSP430进入活动模式或其它低功耗模式 进入低功耗模式: 汇编语言:BIS.W#LPMn,SR C语言:_BIS_SR(LPMn_bits); 或者LPMn
|