傅仁轩 陈龙飞
摘 要: 为实现数据终端的低功耗,设计了以MSP430单片机为核心的低功耗数据终端的总体结构,以低电压、低功耗的外围电路等硬件设计为基础,通过软件实现活动模式与休眠模式的切换、控制外围电路等方法延长CPU休眠时间,减小CPU的工作时间,进一步降低功耗。软件配合硬件使低功耗性能发挥到最大,从而达到减小功耗的目的。经过现场测试,满足低功耗终端使用的要求。
关键词: 低功耗;单片机;硬件设计;软件设计
中图分类号: TP368.1 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.10.003
本文著录格式:傅仁轩,陈龙飞. 低功耗数据采集终端的软硬件设计[J]. 软件,2020,41(10):1214
【Abstract】: In order to realize low power consumption of data terminal, the overall structure of low power consumption data terminal based on MSP430 is designed, which is based on low voltage and low power consumption peripheral circuit, the software can change the activity mode and sleep mode, control the peripheral circuit and so on to prolong the CPU sleep time, reduce the CPU working time, and further reduce the power consumption. The software and the hardware make the low power performance play to the maximum, so as to achieve the goal of reducing power consumption. After field test, it can meet the requirement of low power consumption terminal.
【Key words】: Low power consumption; Mcu; Hardware design; Software design
0 引言
随着5G技术的应用,物联网的需求将会不断增长,各种可穿戴设备、手持设备、现场无交流供电的终端设备等需要电池供电,这些设备一方面希望待机时间长,另一方面较高的功耗可能导致设备过热而降低设备的可靠性和寿命,所以低功耗设计已成为产品设计中必不可少的需求。过去的几十年里,已经提出了许多降低功耗的方法[1-5],但由于各种单片机的硬件结构不同,软件指令集及功耗也不尽相同,适合某一单片机的低功耗方式不一定适合其他单片机。本文的数据采集终端在低功耗、低电压的硬件设计基础上采用CPU控制外部接口模块的电源,使其功耗降到最低。低功耗的设计涉及硬件低功耗设计[6-9]及软件低功耗设计[10]两个方面,这两方面对于低功耗设计都非常重要。
1 硬件设计
硬件设计时必须从低功耗的需求出发,在满足使用要求的情况下,硬件尽可能简单,功能尽可能简化。一般监控系统的数据采集终端应具数字量输出模块、数字量输入模块、模拟量输入模块、通信模块、存储器、看门狗等部分,数据采集终端的总体设计框图如图1所示。
供电电源,选择3.6V锂电池,可以省去电源处理电路,同时节约功耗。数字量输出模块,主要功能是控制设备开停,如控制报警器的开启与关闭,指示灯的亮与灭等。数字量输入模块,主要功能是监测设备开停状态,如设备是开的状态或关的状态,门禁的状态等。模拟量输入模块,主要功能是监测模拟量数据的变化,如电池电压、温度、水管压力、水池液位等,当监测到电压小于3.3 V时,说明电池的电量快消耗完了,终端及时报警,提醒用户更换电池。
以单片机为核心构成的数据终端,总能耗是由单片机能耗及其外围电路的能耗共同构成的,为了降低终端设备的功耗,除了要降低单片机自身的运行功耗外,还要降低外围电路的功耗。因此选择低电压且具有控制功能的外围电路,在不需要工作时可以关闭,以降低静态电流,使功耗降到最低。
1.1 低功耗单片机的选择
选用单片机时的考虑因素,选择具有低功耗工作模式的单片机[11],本方案选择MSP430,它有几种低功耗工作模式可选,可以大大降低系统功耗;选擇合适的I/O管脚,单片机驱动的IO管脚数越多,其功耗也就越大,应根据设计需求确定;选择合适的程序容量,够用就行,本方案采用32 KB程序容量的MSP430F147,电压范围为1.8 V~3.6 V,温度范围为—40℃~+80℃,它是TI公司生产的工业级16位RISC结构的单片机,具有极低功耗结构体系,正常运行时电流160 A,备用时为0.1 A,唤醒时间为6 s,可以大大延长电池的使用寿命。同时有1KRAM存储器,12位A/D转换。
它有一种活动模式(AM)和五种低功耗模式(LPM0~LPM4),采用不同的工作模式,则开启不同的功能模块,产生不同的功耗。在实时时钟模式下,电流2.5 A,在RAM 保持模式下,电流0.1 A。内部各个功能模块可以使用软件进行控制,能够做到部分或全部禁止外围模块的功能,被禁止的外围模块将停止其功能以减少电源消耗。
1.2 多时钟系统设计
MSP430在运行时钟方面有独到之处,多时钟设计,时钟的选择对于系统功耗相当敏感,系统工作频率是影响系统功耗的最重要因素之一。工作频率又与系统的性能密切相关,当要求系统反应时间短、运算量大时,选择较高的工作频率,也就是CPU使用高频晶振;当系统要处理的运算量较小、反应时间要求不高时,使用较低频的晶振作为工作频率,从而进一步减小系统的功耗。MSP430F147可以使用两个外部晶振,其中一个是32 KHz的低频晶振,产生辅助时钟,用于保证一些低频率工作场合的使用要求;另一个是采用1 MHz~8 MHz的高频晶振,用于满足高速实时的工作场合的要求。在休眠状态时使用低频晶振,在工作状态时使用高频晶振,可以使用软件指令进行切换,切换时间不大于6 s,从而实现对总体功耗的控制。
1.3 低功耗的看门狗电路
看门狗,又叫 watchdog timer,是一个定时器电路,它的主要作用是防止单片机死机或程序跑飞,输入端叫喂狗,输出端连接到单片机的复位端,单片机正常工作时,每隔一段时间输出一个信号到喂狗端,给看门狗清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),看门狗定时超时,此时给单片机一个复位信号,使单片机复位。
选择工作电压范围为1.8 V5.0 V,电流30 nA的低功耗芯片TPL5000,它能替代一个微控制器的内部定时器,使微控制器能够保持在低功耗睡眠模式,而不用运行一个定时器,从而减少60%至80%的总功耗。用CPU的P2.0和P2.1管脚控制TPL5000的工作。
1.4 存储模块
存储容量的选择根据功能需求确定,首先考虑保存什么数据,保存多长时间,然后再选择芯片。假设需要保存15天的数据,每10分钟保存1次数据,每次保存3通道模拟量(每通道占2字节),8通道数字量(每通道占1位),每次占用7字节,每小时保存6*7=42个字节,每天24小时需要1008字节,15天需要15120字节,故需要选择16 k字节的存储器,每次保存数据时需要计算写入数据的起始地址。
选择低电压、低功耗的芯片,根据存储容量的需求,选择24LC128存储器,它是低功耗CMOS技术,工作电压2.5 v,写入电流3mA,静态电流100 nA,2线制串行接口,I2C接口,SDA是串行数据,SDL是串行时钟。存储芯片与CPU的连接电路图2所示,CPU的UCB1SDA和UCB1SCL分别连接存储器的SDA、SCL端。
1.5 通信模块
选择低功耗的NB-IoT通信网络模组BC26,其低功耗实现最主要的是采用了PSM(Power saving mode,省电模式)和eDRX(扩展的非连续接收模式)两个关键技术,设备处在PSM态时功耗非常低,而NB-IoT能长期让设备处于PSM态。NB-IoT采用的eDRX技术增加了设备空闲状态下的睡眠周期,从而进一步降低整体功耗。用CPU的UCA1RXD 、UCA1TXD控制数据发送与接收。为了降低功耗,在休眠期间关闭通信模组的电源,图3为控制通信模块电源的电路图,用CPU的P1.4控制电源的开启与关闭,不需通信时,关闭通信模块的电源,使其功耗为0,需要通信时开启电源。
2 软件设计
软件的一条指令能激活单片机系统的某些硬件电路,执行相应的动作,故软件是降低数据采集终端功耗的另一重要方面,根据硬件的结构及数据采集终端的功能设计软件的架构,图4为软件流程图。
2.1 工作模式的设计
为了降低终端的功耗,其工作模式至关重要,本方案的软件工作模式设计为活动模式AM模式和休眠模式LPM3模式,大部分时间处于休眠模式,当有事件处理时由休眠模式转为活动模式。活动模式时终端能进行数据采集、数据处理(判断是否报警)、存储数据、与数据中心通信等工作。在休眠状态时,除了CPU和实时时钟外,其它外围电路电源一律关断,包括I/O部分电路和通信部分电路,而且与之相连的CPU的引脚全部设置成输入状态,内部下拉,减小漏电流,进一步降低系统整体功耗。
2.2 外围芯片的控制
CPU访问外围芯片是通过控制片选信号实现,外围芯片的功耗在片选有效时比片选无效时大100倍以上,所以应尽可能用CPU控制片选,在满足其它要求的情况下尽可能缩短片选脉冲的宽度。
2.3 未使用I/O口的处理方法
未使用的I/O口,如果悬空,则有可能受外界干扰引起输入信号的反复振荡,如果上拉或下拉,则每个引脚的电阻将消耗一定的静态电流。建议在初始化时用软件将其设置为输出,这种方式功耗最低。
2.4 算法的低功耗设计策略
优化代码。减少由算法的低效率引起不必要的功耗,优化标准C代码,分析影响执行效率的因素,根據CPU自身硬件结构特点,用汇编语言编程,能使复杂的算法和功能在实时处理方面具有较好的效果,以达到实时要求和低功耗设计的指标。
用查表代替计算降低功耗。复杂运算,如指数运算、浮点乘除等占据较多的系统时序,延长了CPU的工作时间,减少CPU休眠时间,增加了功耗。在程序执行前先计算,将结果保存到数组,软件执行时直接通过查表方式,这样就节约了现场计算时间,延长了休眠时间,降低功耗。
2.5 中断代替查询
在无低功耗要求的场合,采用中断方式还是查询方式关系不大。但在要求低功耗场合,这两种方式相差较大,使用中断方式,CPU可以进入休眠模式,而查询方式下,CPU必须不断访问I/O寄存器,这会增加额外的功耗,因此建议采用中断方式,不采用查询方式。
2.6 用“宏”代替子程序
调用子程序或函数时需要对RAM进行入栈和出栈两次操作,产生较大的功耗。“宏”在编译时展开,CPU按顺序执行指令,使用“宏”虽然会增加程序的代码量,但会降低系统的功耗。
3 结论
电池供电的数据终端功耗不仅与硬件设计有关,而且与软件设计有重要关系。本方案在选择低功耗的CPU基础上,采用多时钟系统等硬件设计方法降低功耗,采用活动模式与休眠模式相结合的工作模式等软件设计方法再降低功耗,延长了电池供电时间、提高了终端的可靠性和寿命。经过测试,能满足低功耗终端使用的要求,为各行业的低功耗终端应用提供了参考方案,具有较高的实用价值和广阔的应用前景。
参考文献
[1]李昆仑, 黄植功, 李振华, 等. 雷电流在线记录装置的低功耗设计[J]. 电测与仪表, 2013, 50(10): 111-114.
[2]张秋月, 吴琼, 苏全志, 等. 基于android系统的RFID手持终端低功耗设计[J]. 电测与仪表, 2018, 55(11): 105-108.
[3]陈仲平, 裴石燕, 郭黎光. 国家电网智能电能表的低功耗设计[J]. 电测与仪表, 2014, 51(11): 28-31.
[4]许燕. 单片机系统低功耗设计的总体原则及其设计策略[J]. 微型电脑应用, 2018, 34(7): 59-60, 78.
[5]张杰, 席志成, 汪嵩, 低功耗远程监控系统的设计与实现[J]. 制造业自动化, 2015, 37(11): 137-139.
[6]丁月林. 基于STM32的低功耗温湿度采集器实现[J]. 软件, 2015, 36(5): 84-88.
[7]孟海斌, 张红雨. 超低功耗嵌入式系统设计技巧[J]. 单片机与嵌入式系统应用, 2010, 10(8): 16-19.
[8]魏江东, 郑卫. 单片机应用系统最小功耗的软、硬件设计[J]. 应用科技, 2003, 30(8): 19-20, 23.
[9]基于单片机的嵌入式系统的低功耗设计问题[J]. 海南大学学报(自然科学版), 2009, 27(4): 382-385.
[10]王奇, 徐文韧, 唐克. 嵌入式系统的软件低功耗技术实现策略. 舰船电子工程, 2013, (3): 74-76.
[11]张惠安. 超低功耗MCU的选型技巧与设计思路[J]. 集成电路应用, 2017, 34(3): 37-39.