逄淑松,程凯,刘光发,邓建
(中国海洋大学 信息科学与工程学院,青岛 266100)
美国德州仪器(TI)公司推出的MSP430系列单片机能实现极低的处理器功耗,特别适合于电池供电的应用。本文以MSP430G2553单片机为例,对其实现超低功耗的设计进行较为细致地探讨。
MSP430系列单片机具有超低功耗特性,同时还拥有强大的数据处理和运算能力,高性能的模拟技术及丰富的片上模块以及方便高效的开发调试环境[1]。MSP430G2553单片机是一种混合信号微控制器,具有16位精简指令集(RISC)架构和62.5ns指令周期时间,可在不到1μs的时间里从待机模式超快速地唤醒,支持JTAG仿真调试。超低功耗方面:1.8~3.6V的低电源电压;在1MHz频率和2.2V电压条件下,有230μA/运行模式,0.5μA/待机模式,0.1μA/关闭模式(RAM 保持);口线输入漏电流小于50nA[2]。
MSP430系列开发工具方便先进,本文基于MSP430G2553型号单片机进行超低功耗研究,相关实验采用MSP430LaunchPad开发板,其单片机采用20引脚PDIP封装,编译工具使用Code Composer Studio v5.1.1,软件编程采用C语言。
MSP430系列单片机是超低功耗单片机的代表,它有灵活的时钟系统、多种深度的低功耗模式、高度自动化的智能外设,其充分利用MSP430G2553的特性和内部模块,实现理想的低功耗特性。
图1 典型低功耗系统CPU工作方式
图1为典型的低功耗系统CPU工作方式,系统的大部分时间处于空闲状态,有事件发生或定时才会处理一些工作任务,整个系统的功耗就等于平均值曲线下方的面积。降低系统功耗即空闲时选择低功耗模式,运行时使工作消耗最小。
很多低功耗系统空闲状态下消耗的能量占全部的80%以上,所以空闲状态下尽量选择深度的休眠模式。MSP430系列单片机提供了多种工作模式[2-3],如表1所列,可以对系统时钟、辅助时钟作灵活的开关控制。
一般地,采用最大化LPM3时间的方式来尽量降低功耗。MSP430系列单片机可快速方便地切换工作模式,通过中断可以在6μs内从低功耗模式中唤醒CPU以控制程序流程[3],由于CPU的运算处理速度快、退出低功耗时间短,可保证CPU大部分时间处于空闲状态,降低单片机系统的功耗。
表1 工作模式
运行状态下CMOS数字系统功耗可由公式(1)[4]计算得出:
其中:P动是运行状态下CMOS数字系统功率,C是CMOS的负载电容,f是系统的时钟频率,Vcc是电源电压。
可见,电源电压对系统的功耗影响最大,然后是时钟频率,再就是负载电容。对使用者来说,负载电容一般是不可控的,那么要设计一个低功耗的单片机系统,主要有两个原则:尽可能降低电源电压;尽可能降低时钟频率。其他方法基本都是围绕这两个原则实现。电源电压与时钟频率如图2[2]所示。
图2 电源电压与时钟频率关系
2.2.1 电源电压
相同主频下电源电压越高,功耗越高,需要设计合理的供电系统,以及灵活的调整单片机内核电压来降低功耗。AM下Vcc与Icc典型值如表2[2]所列。活动模式(AM)下,MSP430G2553单片机电源电流(Icc)随电源电压(Vcc)变化而变化。
表2 AM下Vcc与Icc的典型值
2.2.2 时钟频率
MSP430G2553的时钟系统为电池供电而特别设计。MSP430G2553单片机有不同的时钟源,产生3种可调的时钟频率[3]:低频辅助时钟(ACLK)、高频主系统时钟(MCLK)和高频子系统时钟(SMCLK)。根据各个外围模块的实际需要、处理器速度的最高要求以及时钟精度来权衡3个时钟的频率。对于一些低频工作的外设可采用ACLK作为时钟或信号源,而非统一使用MCLK,从而降低功耗;不论对于CPU还是外部设备,应尽量降低运行频率,不影响功能时可设计自动关机。
2.2.3 I/O端口
对普通的I/O口,需要配置成输出模式来避免外部浮动电压的影响。CMOS输入端不能有悬空的引脚,应将所有输入端接适当的电平。
2.2.4 外部设备
对片上外部设备配置合适的工作模式,对系统中外部设备做合适的功耗管理,以减少功率消耗及降低CPU使用率。在具体的应用中,建议禁止所有不用的外设模块,可使用带使能引脚的ADC转换器、带使能引脚的运放等。
2.2.5 智能外设
充分使用MSP430G2553的智能外设,使其可以独立于CPU进行工作,使系统更长时间处于低功耗模式。比如ADC10能够实现多通道的自动轮询采样,并能够实现对ADC转换结果的自动搬移[3],通过合理配置寄存器,可以将CPU的负荷降到最低,从而达到降低功耗的目的。
2.2.6 其 他
DMA与其他外设的联动、定时器自动触发ADC[3]等功能可以实现片上不同模块之间的智能化操作,并将系统功耗降低。
软件设计的简洁程度与CPU完成任务所需时间直接相关。MSP430G2553有统一的寻址空间,完全正交的指令系统和充足的通用寄存器,可以保证C语言编译的高效率。但同时在系统设计上,需要软件工程师进行最简洁的代码设计,有以下几点:
① 尽量使用局部变量,局部变量通常会被分配到通用寄存器,有很高的指令效率;
② 尽量使用无符号数;③ 用指针对结构体和联合体寻址;
④ 在使用for循环时对counter作数据递减;
⑤ 尽量采用快速查表而不是算法计算,尽量采用计算分支,而不是测试标志位等。
通过选用MSP430G2553单片机并合理配置,可以达到系统的最佳功耗设计。MSP430G2553单片机在便携式仪器、智能传感器、测控设备等领域有良好的应用前景,符合“绿色环保可持续发展”的时代主题。
[1] 张福才,张锐,汝洪芳.MSP430单片机自学笔记[M].北京:北京航空航天大学出版社,2011:1-3.
[2] Texas Instruments. MSP430G2X53MSP430G2X13[EB/OL].[2012-11].http://www.ti.com/lit/ds/slas735g/slas735g.pdf.
[3] Texas Instruments. MSP430X2XX Family User's Guide[EB/OL].[2012-11].http://www.ti.com/lit/ug/slau-144i/slau144i.pdf.
[4] 陈春鸿.CMOS集成电路的功耗分析及低功耗设计技术[J].浙江工业大学学报,1998(9).