MSP430 G2553 低功耗模式LPMx

MSP430除了正常运行时的active模式外,还支持五种低功耗模式(Low-power mode),分别为LPM0、LPM1、LPM2、LPM3、LPM4,由状态寄存器中的CPUOFF、OSCOFF、SCG0、SCG1比特位设置。

六种模式对应的时钟状态为:

其中,LPM3、LPM4比较常用,对低功耗的贡献也最大。LPM3模式关闭了DCO、CPU,从而MCLK、SMCLK无法工作,ACLK(来源为LFXT1或VLO)可以正常工作并用于系统的定时唤醒。LPM4模式下所有内部时钟信号都关闭,系统只能由外部中断唤醒。几种模式的功耗情况大致如下图所示:

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,且受温度、供电电压影响较大。

虽然手册给出的VLO典型值为12kHz,以下程序实测方波频率为约0.84~0.85kHz,即实际VLO的频率为约10kHz

 1 #include "io430.h"
 2
 3 #define LED1 BIT0 //red
 4 #define LED2 BIT6 //green
 5
 6 void main(void)
 7 {
 8   // Stop watchdog timer to prevent time out reset
 9   WDTCTL = WDTPW + WDTHOLD;
10
11   P1OUT = LED1;
12   P1DIR |= LED1+LED2;
13
14   BCSCTL1 = CALBC1_1MHZ; //Running at 1MHz
15   DCOCTL = CALDCO_1MHZ;
16
17   BCSCTL3 |= LFXT1S_2; //ACLK source: VLO; VLO typical freq = 12kHz
18   BCSCTL1 |= DIVA_2; //ACLK = VLO divided by 4: typical 3kHz
19
20   TA0CCR0 = 1500 - 1;//overflow freq = 3000/(TACCR0+1) = 2Hz (500ms)
21   TA0CCTL0 = CCIE; //enable interrupt
22   TA0CTL = TASSEL_1 + MC_1 +TACLR; //ACLK, no divide, up mode ,clear timer
23   //the actual overflow period measured: 585~595ms -> VLO freq is ~10k
24   //so the VLO is not very accurate.
25
26   __enable_interrupt();
27   LPM3; //enter the low-power mode 3
28
29 }
30
31 //ISR
32 #pragma vector = TIMER0_A0_VECTOR
33 __interrupt void CCR0_ISR(void)
34 {
35     //TA0CCR0 flag clearing is automatic
36     P1OUT ^= LED1 + LED2;
37 }
时间: 2024-10-07 05:01:35

MSP430 G2553 低功耗模式LPMx的相关文章

1_CC2530 Zstack 2.5.1a 低功耗模式

最近在研究CC250的低功耗模式,从官方的文档Measuring Power Consumption of CC2530 With Z-Stack.PDF文档中大概了解下需要配置的内容,结合自己测试的经验,大概介绍下.使用Zstack的版本如下: ZigBee 2007 Release Version 2.5.1a April 25, 2012 CC530的功耗模式情况如下: (1)LITE Sleep,我们所说的PM2模式,功耗在ma级别,会被任务定时器或者外部中断唤醒(按键中断) (2)De

STM32低功耗模式与烟雾报警器触发信号电路设计

1.STM32的3种低功耗模式 STM32有3种低功耗模式,分别是睡眠模式.停机模式和待机模式. 2.STM32在不同模式下的电流消耗 a.工作模式  消耗电流在27mA至36mA之间. b.睡眠模式  消耗电流在5.5mA至14.4mA之间. c.停机模式和待机模式  停机模式消耗电流在15uA  待机模式在5uA 3.各种低功耗模式下的唤醒条件 从上面的图表1可以看到,在睡眠模式下和待机模式下可以利用外部中断唤醒,而停机模式下只能通过以下4种方式唤醒: a.WAKEUP引脚的上升沿 b.RT

STM32低功耗模式实践

STM32低功耗模式实践 STM32一共有三种低功耗模式,睡眠模式.停止模式以及待机模式. 其中,睡眠模式时内核停止运行,但外设仍在工作,所有外设的时钟不会被关闭. 停止模式,除了Cortex-M3内核停止外,所有外设时钟也被关闭,可以选择使能内部时钟,SRAM和寄存器内容被保留,IO口保持为进入睡眠前的状态. 待机模式时,所有1.8V电源部分全部断电,SRAM和寄存器内容被丢失,这最为省电的一种方式,但是唤醒后就丢失了记忆. 本文选择使用停止模式,要低功耗,又要唤醒后继续运行,那stm32低功

android wifi SWOL低功耗模式

1 睡眠模式RX代码流程 ar_wal_rx_patch.c::patch_rx_process_recv_status//调用rx_ctxt->data_ind_handler -> ar_wal_rx_common_patch.c::patch_rx_install_data_ind -> 2 低功耗模式代码流程 3 添加的代码patch

13、低功耗模式

1.低功耗模式 在系统或电源复位以后,微控制器处于运行状态.当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时.用户需要根据最低电源消耗.最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式. 2.STM32F10xxx有三种低功耗模式:●  睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC.系统时钟(SysTick)等仍在运行) ●  停止模式(所有的时钟都已停止) ●  待机模式(1.8V电源关闭) 此外,在运

MSP430 G2553 计时/计数器 Timer_A

MSP430G2553包含了两个16-bit Timer_A计时/计数器.本文简单介绍了Timer_A的功能和寄存器使用,本文及后续的随笔部分参考了"Scientific Instrument Using the TI MSP430"博客.该博客的MSP430教程文章非常好,建议对MSP430感兴趣的人FQ阅读. 一.介绍 Timer_A可实现的功能有 - multiple compare:判断计时器时间是否到达设定条件,触发事件 - multiple capture:捕获某个事件发生

MSP430 G2553 Launchpad实现电容测量

一.基本原理 对于Source-Free RC电路,其电容放电的特性可以描述为: 其中V0是电容的初始电压,t是放电时间,R是串接的电阻阻值,C是电容值,v(t)是t时刻电容上的电压.因此,若已知V0.R.以及t1时刻的电压Vt1,便可求得C: 二.如何控制和测量 如上图所示,大致步骤为:1)由GPIO通过电阻R给电容C充电至Vcc:2)该GPIO输出0,电容C通过R进行放电,同时Timer开始计时.CA+开启:3)当电容电压放电至参考电压(此处是0.25Vcc)时,比较器CA+输出端出现电平变

MSP430 G2553 比较器Comparator_A+、数据流程图DFD、状态转换图STD

一.CA+构造 MSP430G2553带有一个比较器Comparator_A+(CA+),其构造框图如下图所示. 二.输入 & 输出 如上图所示,比较器有一个同向输入端(V+)和一个反向输入端(V-).通过软件设置,V+端可以连接到CA0~CA2三个外部管脚之一,或者三个内部电压基准之一:V-端可以连接到CA1~CA7七个外部管脚之一,或者三个内部电压基准之一.内部电压基准可以是0.5*Vcc.0.25*Vcc,或者内部一个二极管的导通电压(约0.55V). 输出信号可以连接至Timer的外部时

STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式

原文地址:https://www.cnblogs.com/suozhang/p/9946097.html