MSP430 G2553 低功耗模式LPMx
2015-08-16 12:58
537 查看
MSP430除了正常运行时的active模式外,还支持五种低功耗模式(Low-power mode),分别为LPM0、LPM1、LPM2、LPM3、LPM4,由状态寄存器中的CPUOFF、OSCOFF、SCG0、SCG1比特位设置。
六种模式对应的时钟状态为:
![](http://images0.cnblogs.com/blog2015/679006/201508/161223090517884.png)
其中,LPM3、LPM4比较常用,对低功耗的贡献也最大。LPM3模式关闭了DCO、CPU,从而MCLK、SMCLK无法工作,ACLK(来源为LFXT1或VLO)可以正常工作并用于系统的定时唤醒。LPM4模式下所有内部时钟信号都关闭,系统只能由外部中断唤醒。几种模式的功耗情况大致如下图所示:
![](http://images0.cnblogs.com/blog2015/679006/201508/161231508953525.png)
io430g2553.h头文件中已经宏定义好了几种模式的实现语句:
VLO的主要问题是不够精准。从MSP430G2553手册可以看出,VLO频率范围为4kHz~20kHz,且受温度、供电电压影响较大。
![](http://images0.cnblogs.com/blog2015/679006/201508/161250130049290.png)
虽然手册给出的VLO典型值为12kHz,以下程序实测方波频率为约0.84~0.85kHz,即实际VLO的频率为约10kHz。
六种模式对应的时钟状态为:
![](http://images0.cnblogs.com/blog2015/679006/201508/161223090517884.png)
其中,LPM3、LPM4比较常用,对低功耗的贡献也最大。LPM3模式关闭了DCO、CPU,从而MCLK、SMCLK无法工作,ACLK(来源为LFXT1或VLO)可以正常工作并用于系统的定时唤醒。LPM4模式下所有内部时钟信号都关闭,系统只能由外部中断唤醒。几种模式的功耗情况大致如下图所示:
![](http://images0.cnblogs.com/blog2015/679006/201508/161231508953525.png)
io430g2553.h头文件中已经宏定义好了几种模式的实现语句:
#define LPM0 __bis_SR_register(LPM0_bits) /* Enter Low Power Mode 0 */ #define LPM0_EXIT __bic_SR_register_on_exit(LPM0_bits) /* Exit Low Power Mode 0 */ #define LPM1 __bis_SR_register(LPM1_bits) /* Enter Low Power Mode 1 */ #define LPM1_EXIT __bic_SR_register_on_exit(LPM1_bits) /* Exit Low Power Mode 1 */ #define LPM2 __bis_SR_register(LPM2_bits) /* Enter Low Power Mode 2 */ #define LPM2_EXIT __bic_SR_register_on_exit(LPM2_bits) /* Exit Low Power Mode 2 */ #define LPM3 __bis_SR_register(LPM3_bits) /* Enter Low Power Mode 3 */ #define LPM3_EXIT __bic_SR_register_on_exit(LPM3_bits) /* Exit Low Power Mode 3 */ #define LPM4 __bis_SR_register(LPM4_bits) /* Enter Low Power Mode 4 */ #define LPM4_EXIT __bic_SR_register_on_exit(LPM4_bits) /* Exit Low Power Mode 4 */
示例
利用MSP430G2553 Timer0_A,产生频率为1Hz的方波,驱动LED进行显示。系统除了中断处理外,其余时间都处于LPM3模式。LPM3下时钟源只能使用ACLK,而ACLK的来源为LFXT1或VLO。G2 Launchpad随板提供了一个32.768k的晶体,若使用LFXT1,则需要将该晶体焊接到板子上。此例子中VLO作为ACLK的时钟源。VLO的主要问题是不够精准。从MSP430G2553手册可以看出,VLO频率范围为4kHz~20kHz,且受温度、供电电压影响较大。
![](http://images0.cnblogs.com/blog2015/679006/201508/161250130049290.png)
虽然手册给出的VLO典型值为12kHz,以下程序实测方波频率为约0.84~0.85kHz,即实际VLO的频率为约10kHz。
#include "io430.h" #define LED1 BIT0 //red #define LED2 BIT6 //green void main(void) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1OUT = LED1; P1DIR |= LED1+LED2; BCSCTL1 = CALBC1_1MHZ; //Running at 1MHz DCOCTL = CALDCO_1MHZ; BCSCTL3 |= LFXT1S_2; //ACLK source: VLO; VLO typical freq = 12kHz BCSCTL1 |= DIVA_2; //ACLK = VLO divided by 4: typical 3kHz TA0CCR0 = 1500 - 1;//overflow freq = 3000/(TACCR0+1) = 2Hz (500ms) TA0CCTL0 = CCIE; //enable interrupt TA0CTL = TASSEL_1 + MC_1 +TACLR; //ACLK, no divide, up mode ,clear timer //the actual overflow period measured: 585~595ms -> VLO freq is ~10k //so the VLO is not very accurate. __enable_interrupt(); LPM3; //enter the low-power mode 3 } //ISR #pragma vector = TIMER0_A0_VECTOR __interrupt void CCR0_ISR(void) { //TA0CCR0 flag clearing is automatic P1OUT ^= LED1 + LED2; }
相关文章推荐
- 第一个leapmotion的小游戏
- rpm与srpm包的区别和安装方法
- APM源码分析之 油门跟踪
- HCDJPM学习随记
- APM源码分析之 主流程
- APM源码分析之 姿态控制
- npm install 安装所有模块 (淘宝镜像)
- RPM包制作教程
- PM2部署资料
- 使用SWPM安装 SAP ERP6.0 on solaris 10
- npm 模块常用命令
- PMP杂谈--项目收尾
- PMP杂谈--项目组织,矩阵组织,职能型组织,复合型组织
- PMP杂谈--PMP中一些容易忽视的地方
- PMP杂谈--名词解释
- Activiti5.15学习笔记二 BPMN2.0规范
- PMAC运动程序例程(一)
- PMAC运动程序例程(一)
- CIO谈:基于K2 BPM平台怎么做报销?
- K2十年:专注BPM