9077|12

5276

帖子

5

TA的资源

裸片初长成(中级)

楼主
 

变态测试msp430G2452低功耗LPM3模式下不同CPU主频的功耗试验 [复制链接]

变态测试msp430G2452低功耗LPM3模式下不同CPU主频的功耗试验

虽然大多数情况下msp430应用于电池供电很有优势,一般较低电压时只能低主频,但是也是有不需要考虑低电压但又要考虑功耗的情况吧?那么这时候我们选择高一点cpu主频好还是低一点的好呢?
本实验以1MHz和8MHz的不同MCLK为例

测试程序如下:
  1. //测试msp430G2452低功耗LPM3模式下不同CPU主频的功耗
  2. #include "io430.h"

  3. volatile unsigned char buttonTimes;

  4. void main( void )
  5. {
  6.   WDTCTL = WDTPW + WDTHOLD;
  7.   
  8.   P1OUT = BIT3;//+BIT4;
  9.   P1DIR = BIT0 + BIT1 + BIT2 + BIT4 + BIT5 + BIT6;
  10.   P1REN = BIT3;
  11.   P1IES = 0;
  12.   P1IFG = 0;
  13.   P1IE=BIT3+BIT7;
  14.   
  15.   P2DIR=0xFF;
  16.   
  17.   BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0;
  18.   if (CALBC1_1MHZ != 0xFF) {
  19.     DCOCTL = 0x00;
  20.     BCSCTL1 = CALBC1_1MHZ;      /* Set DCO to 1MHz */
  21.     DCOCTL = CALDCO_1MHZ;
  22.   }
  23.   BCSCTL1 |= XT2OFF + DIVA_0;
  24.   BCSCTL3 = XT2S_0 + LFXT1S_0 + XCAP_3;
  25.   do
  26.   {
  27.     IFG1 &= ~OFIFG;
  28.     __delay_cycles(50);
  29.   } while (IFG1 & OFIFG);
  30.   
  31.   buttonTimes=1;
  32.       TACCR0 = 63;
  33.       TACCTL0=CCIE;
  34.     TACTL = TASSEL_1 + ID_0 + MC_1;
  35.   __bis_SR_register(GIE);
  36.   
  37.   while(1)
  38.   {
  39.     LPM3;
  40.     P1OUT^=BIT0;
  41.     __delay_cycles(1000);
  42.   }
  43. }

  44. #pragma vector=PORT1_VECTOR
  45. __interrupt void PORT1_ISR_HOOK(void)
  46. {
  47.   P1IFG=0;
  48.   if(buttonTimes)
  49.   {
  50.     buttonTimes=0;
  51.     DCOCTL = 0x00;
  52.     BCSCTL1 = CALBC1_8MHZ;      /* Set DCO to 1MHz */
  53.     DCOCTL = CALDCO_8MHZ;
  54.   }
  55.   else
  56.   {
  57.     buttonTimes=1;
  58.     DCOCTL = 0x00;
  59.     BCSCTL1 = CALBC1_1MHZ;      /* Set DCO to 1MHz */
  60.     DCOCTL = CALDCO_1MHZ;
  61.    
  62.   }
  63. }

  64. #pragma vector=TIMER0_A0_VECTOR
  65. __interrupt void TIMER0_A0_ISR_HOOK(void)
  66. {
  67.   LPM3_EXIT;
  68. }
复制代码
如有错误望指正

初步试验结果,好像使用LPM3模式还是高主频省电

视频按键操作方向没有摄像进来,开始短可以看到LaunchPad上跨接有带2M电阻的导线,还有另一条导线接地,用来碰触带电阻的导线实现按键,有点懒,应该增加按键延时处理程序的,哪位有兴趣补写一段我再来试验一下。



[ 本帖最后由 wangfuchong 于 2013-2-20 22:56 编辑 ]

最新回复

我用MSP430FR5969测试也是得到和LZ一样的结论,在LPM3模式下,使用ACLK(VLO)作为timer_A的时钟,虽然不使用MCLK,我是用DCO作为MCLK的时钟,最终结论也是MCLK频率越高,功耗越低。我怀疑有以下可能:①DCO的本身频率为最高频率,其他频率为最高频率分频得来,分频需消耗能量。②定时器中断的入栈、出栈等由MCLK控制,虽然只有几个cycle,但还是对功耗造成了一定的影响 上述仅为自己的猜测,不知是否正确   详情 回复 发表于 2015-12-28 09:23
 
点赞 关注
个人签名没工作,没女人老婆,没宽带 ,  没钱

回复
举报

5276

帖子

5

TA的资源

裸片初长成(中级)

沙发
 
晕,没人关心这个问题
不明白难道就没人遇到过要想到mclk该设置多大的频率?不会是就是认为频率高就一定功耗大吧?
不管实验是否正确,但是这个问题总是存在的吧?哪里有直接说过的?

点评

一个基本的思路是,基于COMS工艺的器件,一般认为leakage current很小,只在开关切换状态下会有损耗。但是实际情况是leakage current还是有的,比如.13工艺的FPGA,逻辑资源很多的,上电后的漏电流就有500mA的样子。  详情 回复 发表于 2013-8-28 21:21
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 

回复

188

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
MCLK的高低对LPM3模式的功耗无关,MCLK的高低只对单片机正常状态的功耗有关,正常状态时,MCLK超高,功耗越大,在休眠状态时,MCKL是关闭的,不工作的,这点数据手册里都有写的

点评

呃,我这个标题写得是不严格,超过时间已经不能更改编辑了 但是我的意思明显是指在使用LPM3模式应用的程式里,在返回活动状态时的主频。其实我发过后已经觉得标题不妥,只不过没有更改罢了,很明显的嘛 其实这  详情 回复 发表于 2013-2-26 10:15
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
原帖由 kingheimer 于 2013-2-26 09:37 发表
MCLK的高低对LPM3模式的功耗无关,MCLK的高低只对单片机正常状态的功耗有关,正常状态时,MCLK超高,功耗越大,在休眠状态时,MCKL是关闭的,不工作的,这点数据手册里都有写的

呃,我这个标题写得是不严格,超过时间已经不能更改编辑了
但是我的意思明显是指在使用LPM3模式应用的程式里,在返回活动状态时的主频。其实我发过后已经觉得标题不妥,只不过没有更改罢了,很明显的嘛

其实这个问题的意义在于,很可能以为cpu时钟频率越高,功耗就越大,所以很有可能想当然地认为只要速度允许就要尽可能地使用较低的频率。实际上,时钟频率越高,活动状态的运行时间就越短呀(当然是指程序中没有软件固定时间硬延时)。其实看CPU硬件手册中关于功耗频率关系的那张曲线图,可以看出其斜率不是45度吆,我就是看到这张图老早就想到这个问题的。
我很奇怪,难道大家使用的时候不会要想到这个问题?要不就是我这个结论就是有低级的不可理喻的错误?那么请指出来呀
如果我的论点是正确的,我都觉得我这个帖子应该加精呢!尽管其功耗差别幅度也许可能没有多大实际的意义而仅仅是理论上的

当然实际中是否是使用高的cpu时钟是否会导致其它的的问题(例如抗干扰?),但那是另外的范畴,尽管可以在这里一并讨论。

[ 本帖最后由 wangfuchong 于 2013-2-26 12:59 编辑 ]

点评

恩,支持  详情 回复 发表于 2013-2-26 12:39
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

188

帖子

0

TA的资源

纯净的硅(初级)

5
 

回复 4楼 wangfuchong 的帖子

恩,支持
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

6
 
等待高手
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

7
 
Fuchong, 我看了你的链接,发现你的测试不太严谨,故提出一下几点建议:

1. 将不用的GPIO管脚设置为输出,或者设置为输入且让其状态固定(上拉或下拉),以排除周围电平浮动引起功耗增加的干扰,因为默认情况下,GPIO是输入的;

2. 为了进一步排除干扰,配置完GPIO后,直接使用multimeter测试MSP430一直处于LPM3下的功耗,看看此数据时候和datasheet一致,一致后再继续;

3. 因为你的测试是MSP430在active和LPM3状态交替出现,故你测量的一定是平均功耗,而且不要忘了考虑唤醒时间,虽然很短,但是还是有一定影响的,尤其是当唤醒时间,activ时间以及处于LPM3的时间可以比拟的时候;

4. 为了更准确的测试功耗,还有另一种办法,那就是选择一个精确的小电阻,例如20欧,将它串联在power supply的入口处,用示波器捕捉电阻两端的电压波形,然后计算平均功耗。

实际上,我是同意你的看法的,我也有一样的想法,当MSP430交替处于active和LPM3时,当active的大致时间和LPM时间差不多时,或者Active时间大于LPM时间,低频active时间长但功耗低,高频active时间短但功耗高,此时一定是有一个balance的时间点的,并不能直接说处于高频就一定平均功耗高。

但是大多数情况下,系统总是长时间处于LPM3,很短时间处于Active的。不会像你的测试中一样,将定时器设为64us 或者更短时间唤醒CPU一次,而从LPM3唤醒一次CPU需要1.5us左右,进入中断需要6个cycles,从中断退出需要5个cycles,在加上中断处理时间,约为:1.5+5+6+x=12.5us+x;故你的测试严格来说,是没有太大实用性的。

最后,我非常敬佩你深入思考,提出疑问,动手验证并不达目的决不罢休的精神。希望你继续保持。O(∩_∩)O~

点评

1,不知道哪个管脚没有处理好?p1.3和P1.7是按键用,都带有上拉电阻。这是在LaunchPad上做的,原来就有P1.3连接按键并且外接有上拉电阻电容(旧版本) 2,一致。我不是说了么?我那个显示当时还不准,只用来对比  详情 回复 发表于 2013-2-27 10:37
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

8
 

回复 7楼 a0220219 的帖子

1,不知道哪个管脚没有处理好?p1.3和P1.7是按键用,都带有上拉电阻。这是在LaunchPad上做的,原来就有P1.3连接按键并且外接有上拉电阻电容(旧版本)

2,一致。我不是说了么?我那个显示当时还不准,只用来对比相对值

3,定时中断周期或者说次数是一样的,也就是说唤醒和中断处理的次数是一样的,那为什么有不同功耗?只要功耗不同不就是说有差别么?

4,我那个测试装置实际就是您所说的串联,电阻比你的大,但是压降不大,而且我靠LaunchPad电源端接有容量大的电解电容(考虑了漏电流),就中断周期设置这么短(也就是中断频率设得高)就是考虑到要平均效果。您所说的测量波形,实际上我很难做到,因为LaunchPad电源端本身就并接有电容,所以即使有波形,幅度也是很低,我没这个条件。实际上对于这么高的中断频率,我的测试装置和万用表好像都有积分平均功能。

5,我的定时器是使用的32768Hz的ACLK时钟源,定时周期怎么会是64us?要说我__delay_cycles(1000);这一句计算失误设置过大还可理解
确实如您所说,LPM3时间往往大于ACtive时间(也不一定吆,例如使用的时候),我将定时器周期弄得短是为了更好地测量免得数字抖动,实际上不需要中断频率这么短就可以获得无抖动显示,我只是有点随意设置了。但是我也测过中断频率小的情况,一样的结论。实际上,中断次数增多只是增加了唤醒时间这段功耗(以前就想过能不能测测,有点懒,还没测这个唤醒时间段的功耗)在测量显示值的比重吧?而唤醒时间和次数在我的测试程序中是一样的,不影响结论呀

至于有没有实用性,这个可以讨论。我说的是理论上,cpu频率高功耗低

设想这样的情况,平时设备不工作处于LPM3,但是特定的条件下(例如人为操作,远程唤醒,本身定时等等)工作,但是工作的时候,如果MCLK在1MHz,工作处理期间LPM3时间与ACTIVE时间之比接近为零,但是同样的处理工作量,工作在8MHz下,很可能LPM3时间与ACTIVE时间之比接近为7:1,那么功耗区别怎样?
当然,要是说长时间不工作,偶尔操作功耗可以不考虑,那就没什么好说的了。


当然也许我的结论就是错误的,我是看到cpu器件的硬件数据手册中关于功耗频率关系图后想到的,曲线斜率不是1:1,总得给一个解释吧?

当然增加MCLK有没有其它的缺点之类的都是可以讨论的。

但是最终的总要给人一个了解和建议就是:该怎样选择MCLK频率?

[ 本帖最后由 wangfuchong 于 2013-2-27 11:24 编辑 ]
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

9
 
又粗粗实验了下,没有加电容,最低到每秒中断16次(否则读数不稳),似乎确实有像EEworld的F5529视频教程中的第二讲说的那样,16Mhz功耗减少的程度比8MHz不明显。不过目前还是得出至少频率增加功耗并不增加的结论
当然,中断次数再低,例如每秒一次或者两次,结果是怎样的,没条件给个肯定实验。但是我以前接电容的时候做过,好像8MHz比1MHz功耗低
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

10
 
不管我可能得出的结论是否正确,难道我们在考虑一个设计的时候难道不会遇到这样的情况:哎呀,需要高MCLK呀,但是高MCLK会不会功耗就大了呀?
当然我的讨论还没有涉及到其它外围模块在高时钟的情况下的功耗情况。但是我们把这些情况搞清楚了不是更能够心中有数么?省得疑惑还要自己琢磨。就不能总结出来各种情况下该怎样考虑时钟频率?

靠,卖力还不讨好
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

11
 
没什么反应
看来我的关于这个问题的猜测还是错误的了
不过我还是不明白,活动状态的电流随频率变化不是1:1是数据手册多个曲线图或者表格中明白写着的呀,总得给个解释吧?
晕,很有可能又是低级问题
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5015

帖子

12

TA的资源

裸片初长成(初级)

12
 

回复 沙发wangfuchong 的帖子

一个基本的思路是,基于COMS工艺的器件,一般认为leakage current很小,只在开关切换状态下会有损耗。但是实际情况是leakage current还是有的,比如.13工艺的FPGA,逻辑资源很多的,上电后的漏电流就有500mA的样子。MSP430在工艺上有想当的特点,模块管理模式也很重要。
根据TI的低功耗rule,尽可能的减少CPU工作时间是达到低功耗的首要方法。
 
个人签名《MCU工程师炼成记》作者之一
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

13
 
我用MSP430FR5969测试也是得到和LZ一样的结论,在LPM3模式下,使用ACLK(VLO)作为timer_A的时钟,虽然不使用MCLK,我是用DCO作为MCLK的时钟,最终结论也是MCLK频率越高,功耗越低。我怀疑有以下可能:①DCO的本身频率为最高频率,其他频率为最高频率分频得来,分频需消耗能量。②定时器中断的入栈、出栈等由MCLK控制,虽然只有几个cycle,但还是对功耗造成了一定的影响

上述仅为自己的猜测,不知是否正确
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表