什么是msp430低功耗模式?如何唤醒msp430低功耗模式

什么是msp430低功耗模式?如何唤醒msp430低功耗模式,第1张

  单片机中,功耗最低的单片机要MSP430单片机,这是做手持设备最优选择,MSP430中,用到5种低功耗,LPM0,LPM1,LPM2,LPM3,LPM4,这五种低功耗各种解释如下 :

  CPU的活动状态称为AM(ACTVE MODE)模式。其中AM耗电最大,LPM4耗电最省,仅为0.1uA。另外工作电压对功耗的影响:电压越低功耗也越低。 系统PUC复位后,MSP430进入AM状态。在AM状态,程序可以选择进入任何一种低功耗模式,然后在适当的条件下,由外围模块的中断使CPU退出低功耗模式,返回AM模式,再由AM模式选择进入相应的低功耗模式,如此类推。

  CPU的结构:16个寄存器R0-R15,16位算数逻辑单元ALU和一个指令控制单元。

  。寄存器中R4-R15是通用寄存器没有特殊功能。

  R0-R3具有特殊性

  R0:程序计数器PC(Program counter),存放着下一条要从程序存储器中取出的指令的地址。

  R1:堆栈指针SP(Stack Point),系统堆栈在系统调用子函数或者进入中断服务程序时,保护程序计数器PC。

  R2:状态寄存器SR(State Register):

  R3:常数发生器

  状态寄存器SR

  什么是msp430低功耗模式?如何唤醒msp430低功耗模式,什么是msp430低功耗模式?如何唤醒msp430低功耗模式,第2张

  工作模式的选择由状态寄存器SR中的SCG1、SCG0、OSCOFF、CPUOFF位控制。由于在CPU的头文件中对CPU内的各寄存器和模块的各种工作模式都作了详尽的定义,所以编程时尽可能的利用就是了。如:要进入低功耗模式0,可在程序中直接写:LPM0; 。进入低功耗模式4,可以写:LMP4;就可以了。退出低功耗模式如下:

  LPM0_EXIT; //退出低功耗模式0

  LPM4_EXIT; //退出低功耗模式4

  LPM0:CPU停止工作,MCLK时钟停止,SMCLK、ACLK时钟还在工作。

  LPM1:CPU停止工作,MCLK时钟停止,在活动模式如果DCO没有作为MCLK和SMCLK时钟时,则直流发生器被禁止,否则就保持活动状态,SMCLK、ACLK时钟依然还在工作。

  LPM2:CPU停止工作,MCLK、SMCLK时钟停止工作,如果DCO没有作为MCLK、SMCLK,自动被禁止直流发生器保持有效,ACLK还处于工作中。

  LPM3:CPU停止工作,MCLK、SMCLK时钟停止工作,DCO时钟也停止工作,仅ACLK时钟还处于工作状态。

  LPM4:CPU停止工作,MCLK、SMCLK时钟停止工作,DCO时钟也停止工作,ACLK也停止工作。此时功耗最低。

  一般情况下,处理器进入低功耗模式后,由中断来唤醒,外部中断或内部中断。

  如果想进入低功耗1,则程序可以为:_BIS_SR(LPM1_bits + GIE);退出低功耗1,则程序可以为:LPM1_EXIT; 进入其他低功耗和退出低功耗一样。

  低功耗执行的一个过程:程序从main函数入口开始执行程序,当遇到进入低功耗程序时,如:_BIS_SR(LPM1_bits + GIE);此时相当于下面的程序处于停止状态不再执行,当有一个中断来到,则会进入中断处理程序,自动退出低功耗,如果在中断中没有没有退出低功耗,当中断服务程序执行完成后,又会重新进入低功耗。

  不同的低功耗模式就是配置不同的SCG1,SCG0,OscOff,CPUOff.

  SCG1:复位使能SMCLK,置位则禁止SMCLK.

  SCG0:复位激活DCO,置位且DCOCLK不用于MCLK或SMCLK时禁止DCO。

  OscOff:复位则LFXT激活,置位且LFXT不用于MCLK或SMCLK时,LFXT振荡器禁止--对应着ACLK。

  CPUOff:复位则MCLK激活,置位则MCLK停止。

  解释:

  (1)POR:POWER ON RESET.上电或复位信号都可以发生POR。

  PUC:POWER UP CLEAR.POR可以出发PUC,另外看门狗的事件可以出发PUC。

  (2)AM:全部活动

  LPM0:CPUOFF=1,CPU被禁止,即MCLK被禁止。

  LPM1:CPUOFF=1,SCG0=1。CPU-MCLK禁止,且若DCO未用做MCLK或SMCLK,则DCO禁止。

  LPM2:CPUOFF=1,SCG1=1。CPU-MCLK禁止,SMCLK禁止。(DCO未用作MCLK,SMCLK则自动禁止)

  LPM3:CPUOFF=1,SCG1=1,SCG0=1.CPU-MCLK禁止,SMCLK禁止,DCO禁止。

  LPM4:CPUOFF=1,SCG1=1,SCG0=1,OSCOFF=1.全部禁止,包括ACLK也禁止。

  系统工作原理:

  单片机各个模块运行完全独立。定时器,IO,AD,看门狗等都可以在主CPU休眠的状态下独立运行。

  软件将CPU设定到某一低功耗工作模式下,在需要时使用中断将CPU从休眠状态中唤醒,完成工作后又进入相应的休眠状态。

  系统响应中断的过程:如果在中断处理子程序中修改堆栈中SR的状态,那么中断返回后将不再是原来的SR状态。

  PC入栈,SR入栈。

  中断向量赋给PC。

  GIE,CPUOFF,OSCOFF,SCG1清除。

  IFG标志位清除。

  执行中断处理子程序。

  执行RETI指令,中断返回。

  SR出栈

  PC出栈

  什么是msp430低功耗模式?如何唤醒msp430低功耗模式,什么是msp430低功耗模式?如何唤醒msp430低功耗模式,第3张

  进入LPM3:SCG1+SCG0+CPUOFF:也就是只有ACLK是活动的,但是仍支持WDT,TIMER.

  编译器支持直接对位赋值:_intrinsic unsigned short _BIS_SR(unsigned short),位于in430.h

  同理要清除SR中某一位的话就用 _BIC_SR();

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2717289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存