MSP430FR单片机的超低功耗设计方法和原则

2018-08-08 07:33,,,,,
单片机与嵌入式系统应用 2018年8期
关键词:低功耗功耗时钟

,,,,,

(东方电子股份有限公司,烟台 264001)

引 言

MSP430FR是美国德州仪器(TI)公司推出的新一代超低功耗系列单片机,由于其具有超低功耗的性能和可以高速、耐久读写数据的内置FRAM,非常适合应用于电力仪表等低功耗仪器仪表领域。在对功耗要求很苛刻的领域,如何合理开发使用MSP430FR系列单片机成为实现超低功耗的关键。本文以MSP430FR6972单片机为例,详细介绍了MSP430FR系列单片机的超低功耗开发、设计原则。

1 MSP430FR系列单片机概述

MSP430FR系列单片机是16位单片机,采用了精简指令集(RISC)结构,具有灵活可控的时钟和丰富的片内外设,每个片内外设都可以单独控制,从而实现多种不同功能的低功耗模式[1]。以MSP430FR6972单片机为例,其具有7种低功耗模式(如表1所列),其中,LPM3模式是在LPM2模式基础上关闭了芯片内部的锁频环;LPM3.5模式及LPM4.5模式是在LPM3与LPM4模式基础上进一步关闭了芯片内部RAM的供电。LPM3.5和LPM4.5模式下,一些寄存器将会失效,未保存的数据及动态变量会丢失,因此在进入这两种模式时一定要将有用的数据或变量保存到铁电中,等到CPU从该模式恢复后,再将保存的数据读出,重新赋给相应的变量。单片机会根据不同的运行模式关闭或打开CPU、时钟及相应的外设,从而保证在最低功耗下实现相应的功能。

表1 MSP430FR6972运行模式及功耗(T=25 ℃,f=1 MHz,Vcc=3.0 V)

MSP430FR系列单片机与其他MSP430系列单片机的最大不同是采用内置FRAM取代Flash来存储程序与数据,数据写入速度是Flash的100多倍。由于FRAM无需预擦除段并且可以实现位级数据存取,简化了代码开发,从而能够在功耗不变的情况下实现实时数据记录。此外,相较于Flash,MS430FR芯片中的FRAM可提供超过100亿次的写入周期耐久性。

2 MSP430FR系列单片机超低功耗设计原则

单片机的超低功耗设计包括硬件、软件两个方面。在进行超低功耗设计时要综合考虑硬件和软件的设计,使其达到最优的低功耗状态。

2.1 硬件设计原则

2.1.1 供电电压及时钟频率设置

MCU是由若干CMOS门电路组成,CMOS的功耗计算公式如下:

P=Pstart+PQ+Pdyn

(1)

(2)

其中,Pstart是由扩散区和衬底之间的反向偏置漏电流产生的静态功耗,PQ是动态情况下P管和N管同时导通时的短路电流产生的动态功耗,Pdyn是开关电流产生的动态功耗。这三项中Pdyn大约占电路功耗的80%,是CMOS电路的主要功耗[3]。在式(2)中CL为CMOS的负载电容,f为系统时钟频率,Vcc为芯片的电源电压。由此可知,电源电压Vcc对系统CMOS电路功耗影响最大,其次是时钟频率f和负载电容CL。因此,为了能够实现超低功耗,在满足应用要求的前提下,要尽可能降低芯片的供电电压。

图1 I/O电平不固定情况下的电流消耗

一般而言,时钟频率越大,功耗越大。但另一方面,时钟频率与工作时间成反比,时钟频率越高,完成一段代码的执行时间越短,CPU处于空闲或睡眠状态的时间就越长。因此,并不一定是频率越高功耗就越大。在有些应用中,提高主频反而可以使平均功耗降低,频率的确定需要根据实际应用中的项目需求而定。例如,以不同频率执行相同代码,其功耗大小如表2所列,从表中可以看出对于如下代码,频率在8 MHz时CPU消耗的平均功耗最小。

void main(void){

InitSoftWDog(0,0,0);

InitGpio();

InitSYSClock ();

while(1){

Pin1_0(1);//P1.0引脚置高

The three arrive at a marine life institute(海洋生物研究所)first.Here they meet Hank.Hank becomes their guide(向导).But the trip is not always a bed of roses(一帆风顺).

CodeA();

CodeB();

CodeC();

Pin1_0(0);//P1.0引脚置低

}

}

表2 不同频率下执行相同代码的功耗

2.1.2 I/O口设置

默认情况下,MSP430FR系列单片机的I/O口为输入状态,且内部的上、下拉电阻未使能。因此,I/O口的电平不确定,从而容易产生寄生电流[2],如图1所示。在默认状况下,P1.0口的电压处于不稳定状态,当P1.0口的电压为1.7 V左右时,寄生电流能够超过40 μA。但P1.0端口电压为3.0 V或者0 V时,电流几乎为0。

为此,在进行产品设计时,硬件上可以通过将未用的I/O接到Vcc或者GND上,使其端口电平固定,从而避免产生寄生电流。若硬件上未进行相应处理,软件上可以通过将未用的I/O口设置为输出高电平或低电平,使其端口电平固定;或者将未用I/O口设置为输入状态,并通过软件设置内部上拉电阻或下拉电阻,使端口的电平保持固定,避免产生寄生电流。

2.1.3 外部设备

MSP430FR系列单片机内部包含了丰富的低功耗外设,如DMA、ADC等器件,合理利用这些低功耗外设能够更好地降低系统的功耗。例如在相同情况下搬移1312个字节, MSP430FR6972的DMA模块与memcpy()函数所消耗的时间及功耗对比如表3所列。DMA可以在更短的时间内,用更低的功耗实现数据的搬移,且DMA进行数据搬移时并不会占用CPU,CPU可以继续执行其他指令。

表3 DMA模块与memcpy()函数功能对比

2.2 软件设计原则

典型的低功耗CPU的工作模式如图2所示,CPU大部分时间处于空闲或休眠状态,仅有部分外设在工作,此时电流消耗很小。只有定时事件完成或有其他事件触发时,CPU才会进入运行状态执行相应的工作,工作完成后CPU再次进入空闲或休眠状态,继续等待定时或其他事件的触发,这样系统整体的平均功耗就会很低[4]。例如采用MSP430FR6972芯片实现串口数据接收功能,可以选择ACLK作为片内串口模块的时钟源,这样芯片可以长时间处于LPM3模式下接收串口数据,当要处理接收数据时再进入Active模式进行数据处理,从而使单片机功耗保持最佳。

图2 典型的低功耗CPU的工作模式

此外,在软件编程上尽可能地提升代码的执行效率,缩短CPU的活跃时间,也可以更好地降低功耗。例如尽量使用无符号数,尽可能采用快速查表法来代替复杂的计算等。

2.2.1 ULP Advisor代码分析

TI公司提供了ULP (Ultra-Low Power) Advisor分析工具,用于指导开发人员编写有效的代码,以充分利用MSP430微控制器的独特超低功耗特性[5]。ULP Advisor功能可以在 IAR或CCS编译器中通过设置启用。

ULP包含了15条编程规则,在编译时,ULP Advisor会提供通知和备注,以突出显示代码中可以进一步优化的区域,如图3所示,ULP Advisor提示for循环的代码可以优化。点击图3中messages对话框中的TI ULP Advisor报警信息,就会弹出如图4所示的详细说明,并包括优化代码的例子。从详细说明中可知,MSP430单片机内进行非零值比较时需要执行两条汇编指令,而与零比较只需执行一条汇编指令,所以可以将for(ii = 0; ii <20; ii++)改为for(ii =20; ii>0; ii--),提高代码的执行效率,从而节省功耗。

图3 ULP Advisor告警信息

图4 ULP Advisor详细说明

2.2.2 Energy Trace功耗分析

在进行单片机超低功耗设计时,辅助的测量方法有很多种。可将高精度电流表串入供电回路测量功耗,或者在供电回路中串联一个精密电阻(误差为1%,甚至更低),用示波器实时测量电阻两端的电压等方法。

为了能够更好地在程序设计过程中了解功耗,可以采用TI公司的Energy Trace工具。Energy Trace工具主要用于Debug模式,其可以实时记录MSP430单片机的实时功耗、内部外设和芯片运行的状态(见图5)、程序里功能函数执行的次数及每个功能函数的功耗,生成log信息并以图表的形式实时展示出来[5]。

Energy Trace工具可以对比利用ULP Advisor工具调整后和调整前的代码的实时功耗情况,如图6所示。通过将ULP Advisor和Energy Trace结合使用,可以帮助软件人员在程序设计调试中更好地优化代码,从而保证功耗做到最低。

图5 芯片内部外设及运行模式实时追踪

图6 Energy Trace功耗跟踪及对比分析

结 语

猜你喜欢
低功耗功耗时钟
基于任务映射的暗硅芯片功耗预算方法
别样的“时钟”
一种高速低功耗比较器设计
古代的时钟
揭开GPU功耗的面纱
有趣的时钟
数字电路功耗的分析及优化
时钟会开“花”
IGBT模型优化及其在Buck变换器中的功耗分析
ADI推出三款超低功耗多通道ADC