注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
lw3968的个人空间 https://home.eeworld.com.cn/space-uid-414450.html [收藏] [复制] [分享] [RSS]
日志

用Launchpad将低功耗进行到底!

已有 1353 次阅读2012-6-24 14:27

  自打第一天接触430系列开始,430低功耗一直是深深地留在我的印象里,每当工作中要求功耗比较严格时,MSP430一直是偶考虑的首选。更让偶惊叹的是看到丁工讲的Launchpad视频教程时,用苹果串起来对控制液晶显示模块供电(偶猜测它的主控芯片是L092系列的,因为这个系列的供电只有0.9v),让偶对低3功耗的充满着一片想象。现在我从以下几个方面来我眼中的430为什么会那么低功耗(比如一颗纽扣电池能用10年之久)。

  首先用同一标准来衡量430。自己算计系统中通常采用W/MIPS来衡量处理器的功耗与性能关系的。我们大部分人都用过x86结构的51,它是CICS架构,使用的是集中指令,通俗的讲,就是它内部通过硬件实现了很多特殊的功能,我们通过CICS,简单几句就可以完成对数据的操作存储,CICS架构的功耗普遍不会很低,我记得去年做的一个项目中,用了ST的芯片,用公司的内部仪器测试了它全速运行的动态电流,基本上到达了15mA/MIPS。而采用RICS架构的单片机则有MSP430MICROCHIP(不好意思,到现在为止,我只接触过这两种RICS架构的mcu,如果还有其他单片机也是这个架构的,希望跟帖回复),去年年底的时候,microchip公司发布了PIC24F列的某款芯片,官网介绍说它在全速运行时达到了150uA/MHZ,而TIFRAM则是低于110uA/MHZ,据官网上的说法是这个月供货的以MSP430FR58xx系列金刚狼MCU到达了有可能更低的功耗,可以说MSP430的功耗平台确实无人能及。偶在不断惊叹的同时,也是不断对TI的崇拜。

  上面采用了对架构,功耗与性能之比对mcu进行了分析。现在对内部硬件模块进行分析。由于msp430具有不同模块,疑问?MSP430为什么会有不同模块,因为在这个模拟量的现实世界中,存在着不同频率的信号,有高至很高的,也有底至很低的。在mcu与外部接口中,大部分的信号相对cpuram的存取与读写信号来说是低速信号,由于速度越高,需要的电流越大,功耗越大。所以在单片机中不需要以同样高的速度给外围接口提供时钟,这没必要,也是浪费,在功耗要求很严格的地方这也是致命伤,这时就出现了时钟分频,提供给不同模块,给不同时钟,甚至不工作的模块可以停止掉,对于无时不刻都在运行的mcu来讲这就省下了很多的能源了,所以请不要小看低功耗,这个将成为未来评价单片机的重要参数。如果还不是很清楚,不同的时钟信号,我可以举个通俗的例子,比如我们的电脑主板,主板上三大用电大户,大家应该知道吧,用电大小依次从大到小排列,cpu,北桥,南桥。我们可以把cpu比喻成皇帝,北桥比喻成各个吏部,而南桥比喻成各个衙门,皇帝是不会与衙门打交道,一般都是通过各个吏部来处理事情的,cpu也基本上很少和南桥打交道的,cpu
是和北桥打交道的,cpu都是通过北桥来间接处理时间的,这就对cpu起到了一个隔离的保护,因为它能处理更多更复杂的事情,如果你让它给你处理检测键盘按键的功能,那实在是太浪费这里的cpu了,这里的cpu根本不是这块料(就像皇帝都不直接给人民办好事)。吏部主要做些什么,在主板中处理高速信号,比如,ddr的读写,显卡的操作,再就是与cpu进行通信,与cpu主要讲这些事情,显卡怎么读,送多少东西给显卡,显卡现在运行到了什么状态,内存从哪里开始,是读还是写,这个结果放到哪里去等等,提供给它们的信号就是告诉的,因为它们能在同一个频率对话,也就是它们为什么用电这么大的原因,南桥主要处理开关机电路,键盘,usb,鼠标等相对于cpu和北桥信号的低速信号。南桥衙门就每天设立在哪里,看看每天有谁谁告状,简单的偷鸡摸狗的事,该打的打,改关的关,一般能处理掉。实在处理不了的交给吏部,吏部解决不了的再给皇上,如果衙门直接交给皇上,这就叫跨级上奏,大部分都要死翘翘了。所以在主板上,cpu散热时加个风扇,北桥就加个大型散热片,南桥用小型的散热片,设置看到过有的南桥直接裸露在外面。

  接下来的问题是,我们拥有了这么低的低功耗平台,作为使用者,我们有权利也有这个义务将这个低功耗发挥到极致。丁工在视频中讲过,msp430中有5个低功耗等级,但常用的是LPM0,LPM3LPM4.LMP1LPM0相近,LPM2LPM3相近,他俩不常用,常用其他等级的低功耗模式代替了。下面我通过Launchpad板,对LED1的闪烁进行低功耗编制如下:

#include <msp430g2553.h>

 void main(void)

{

int i ;

BCSTL1 != DIVA_1;            //ACLK/2

BCSTL3 !
=LFXT1S_2;            //ACLK = VLO

WDTCTL =
WD_ADLY_1000;//
看门狗工作于定时器模式

IE1 != WDTIE;                    //看门狗中断允许

P1DIR = 0XFF;                    //设置Led1为输出

P1OUT != 0X01;                  //驱动输出高电平

while(1)

{

P1OUT = ~P1OUT;              //灯状态取反

for(i = 1000;i
> 0;i--)

{

}

_BIS_SR(LPM3_bits
+ GIE);         //
进入LPM3AClk活动的

}

#pragma vector =
WDT_VECTOR//
看门狗中断处理

__interrupt void
watchdog_timer(void)

{

_BIC_SR_IRQ(LPM3_bits);                //清除LPM3,唤醒cpu

}

 

第一次的新发帖,如果写的不好与错误的地方,站内短信通知我,我将尽快修改,以免误导其他读者,谢谢。

发表评论 评论 (1 个评论)
回复 在路上的旁观者 2013-4-23 20:06
我也在学习,LaunchPad和MSP430F149,MSP439F5438A

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章