导言:
能耗对电池供电的产品来说是一个重大问题,一旦电能耗尽设备将“停工”。在《MCU低功耗规划(一)理论》中,咱们介绍了节能的原理;在《MCU低功耗规划(二)实践》中,实测了STM8L151C8的低功耗值。
本文介绍无线通讯产品的低功耗规划,首要实测MCU与射频芯片I/O设置的功耗,然后测验射频芯片不同形式下功耗,其次运用Contiki体系的energest模块实时盯梢能耗值,最终总结低功耗规划和展望无线组网中低功耗特征。Let’sgo!
一、 无线通讯产品简介
iWL881A无线通讯模块是“长沙市锐米通讯科技有限公司(www.rimelink.com)”的LoRa长间隔低功耗产品(如下图),它内嵌高效强壮的物联网操作体系Contiki,支撑星型/树型/MESH网络,与公司的集中器和云服务器组成“端管云”体系。典型运用场景为:居民抄表(水/电/气)、路灯操控、工厂收集、安全报警等。
该款微功耗无线通讯产品运用场景根本由电池供电,因而低功耗规划成了首个“主战场”。MCU选用了ST公司超低功耗处理器STM8L151C8,射频芯片(RF)运用Semtech公司SX1278,该芯片依据LoRa扩频通讯原理,在同等条件下能够获得比FSK调制近4倍的间隔。关于LoRa通讯原理,请参阅作者的博文《LoRa无线通讯规划(一)原理》。
MCU与RF经过SPI总线衔接,此外还有一些操控引脚,SX1278硬件原理图如下:RF经过DIO0~5引脚给MCU发告诉信号,NSS / SCK/ MISO / MOSI是SPI总线,NRRST是MCU复位RF的引脚。
二、 静态低功耗
1.MCU引脚装备
真实做产品的低功耗,第一件作业是正确装备I/O引脚,单个I/O口的耗能到达mA级。换句话说,假如不小心漏掉或错装备一个I/O引脚,那么它将无情地“吞噬”你苦心经营MCU低功耗形式而得到的成果。
MCU的I/O引脚大致分红4类:未衔接、接3.3V、IC输入MCU输出、IC输出MCU输入。接下来,咱们进行一系列试验,看看这4类引脚该怎么装备。
试验1:接3.3V的I/O口,需求设置成Output, high level,是push-pull仍是open-drain适宜呢?挑选5个上接3.3V的I/O引脚试验成果如下:
push-pull:0.4 uA
open-drain:29.3 uA
定论:关于接3.3V的I/O,节能形式下需求设置成 Output, push-pull, highlevel。
试验2:将36个悬空的I/O口,设置成如下6种形式,各能耗数据如下:
Input, floating: 536 uA
Input, pull-up: 0.4 uA
Output, open-drain, low level: 0.4 uA
Output, open-drain, high-impedance level:530 uA
Output, push-pull, low level: 0.4 uA
Output, push-pull, high level: 0.4 uA
定论:悬空I/O引脚能够设置为:(1)Input, pull-up; (2)Output, push-pull, high(low) level。
试验3:将6个衔接RF(RF为输入方向)的I/O口,设置成如下6种形式,能耗如下:
Input, floating: 489 uA
Input, pull-up: 482 uA
Output, open-drain, low level: 660 uA
Output, open-drain, high-impedance level:494 uA
Output, push-pull, low level: 661 uA
Output, push-pull, high level: 574 uA
定论: 外部IC为输入的引脚,节能形式下需求设置成:Input, pull-up。
试验4:将9个衔接RF(RF为输出方向)的I/O口,设置成如下2种形式,能耗如下:
Input, floating: 430 uA
Input, pull-up: 574 uA
定论: 外部IC为输出的引脚,节能形式下需求设置成:Input, floating。
MCU引脚装备根本准则总结如下:
图例 |
特性 |
节能装备形式 |
|
IC输出,MCU输入:输入,起浮 |
Input floating, no external interrupt |
|
%&&&&&%输入,MCU输出:输入,上拉 |
Input pull-up, no external interrupt |
|
3.3V引脚:输出,上拉,高电平 |
Output push-pull, high level, 2MHz |
|
未接引脚:输出,上拉,低电平 |
Output push-pull, low level,2MHz |
实践开发中,咱们能够先用Excel表列举出MCU引脚的装备需求,针对上述4种类型,学习“地铁线路”色彩(英国人的创造)标识,如:
No. |
I/O |
称号 |
低功耗装备 |
效果 |
14 |
PE0 |
LORA_RXTX |
Input floating, no external interrupt |
RF输出:指示RF当时是接纳或发送状况 |
15 |
PE1 |
NC |
Output push-pull, low level, 2MHz |
|
16 |
PE2 |
LORA_RXE |
Input pull-up, no external interrupt |
RF接纳:RXE=1,TXE=0 |
17 |
PE3 |
UART2_RX |
Output push-pull, low level, 2MHz |
没有运用 |
18 |
PE4 |
UART2_TX |
Output push-pull, low level, 2MHz |
|
19 |
PE5 |
NC |
Output push-pull, low level, 2MHz |
|
20 |
PD0 |
LED1 |
Output push-pull, high level, 2MHz |
外接3.3V,设置push-pull高电平节能 |
2.RF作业形式
关于无线通讯产品,贪婪地“吞噬”电能是射频模块(RF),咱们先看看SX1278官方声称的能耗值:
序号 |
1 |
2 |
3 |
4 |
|||
形式 |
Sleep |
Standby |
Receive |
Transmit |
|||
20dBm |
17dBm |
13dBm |
7dBm |
||||
能耗 |
0.2 uA |
1.6 mA |
12 mA |
120 mA |
87 mA |
29 mA |
20 mA |
实践产品中,MCU+RF的整机功耗如下呢?咱们持续看试验数据:
试验5:MCU装备一切I/O引脚为低功耗形式,经过SPI总线设置RF进入Sleep形式,MCU封闭SPI时钟和康复SPI总线引脚到低功耗形式,进入Halt。
成果:整机功耗=0.6 uA。
在《MCU低功耗设计(二)实践》中,咱们知道MCU进入Halt形式,功耗为0.4 uA;再加上RF在Sleep形式下的0.2 uA,总共0.6 uA。
试验6:MCU装备一切I/O引脚为低功耗形式,经过SPI总线设置RF进入Standby形式,MCU封闭SPI时钟和康复SPI总线引脚到低功耗形式,进入Halt。
成果:整机功耗=1.493 mA。
这个1.493 mA的功耗,便是RF在Standby形式下的功耗,由于此刻MCU功耗仅0.4 uA,简直能够疏忽了。
试验7:MCU装备一切I/O引脚为低功耗形式,经过SPI总线设置RF进入Receive形式(该形式能够持久坚持),MCU封闭SPI时钟和康复SPI总线引脚到低功耗形式,进入Halt。
成果:整机功耗=15.97 mA。
当RF处于Receive侦听形式下功耗大到近16 mA,这个数据远大于MCU全速运转的功耗(约5 mA)。
试验8:MCU装备一切I/O引脚为低功耗形式,经过SPI总线设置RF进入Transmit形式,MCU履行WFI(Waitfor Interrupt)指令节能,当发送完毕后MCU唤醒,循环发送数据帧。别离测验发送功率为:+20dBm on PA_BOOST和+7dBm on RFO_LF下的功耗值:
成果:+20dBm on PA_BOOST=123mA, +7dBm on RFO_LF =11mA
发射功率大的惊人吧,尤其是敞开功放和调整到最大功率+20dBm时,电流到达123 mA。
三、 动态低功耗
法国SigFox和俄罗斯的一些公司常常标称抄表无线产品用2节一般AA电池能够作业10年,开端听到觉得人家要么吹嘘,要么技能太高了让国人自暴自弃。人家是怎么完成的呢?咱们一起来看看。
从上面的试验得知,当无线产品处于Sleep形式下功耗仅0.6uA,Receive形式下功耗16mA,TX形式下功耗100mA(超长间隔)。任何一种无线通讯节能技能的中心是尽或许地Sleep,这样将带来极低的整机均匀功耗。
看一个实例,在大多数能耗表计的无线抄读要求:大约15分钟发送一次数据帧,约100ms;4秒内能唤醒,即每400秒需求一次5ms的接纳侦听;其他时刻都处于Sleep休眠。以15分钟(900秒)为单位,能耗如下:
发送:100ms * 100mA= 10mA.s
接纳:(900 / 4) *5ms * 16mA = 18mA.s
休眠:898s * 0.6uA= 0.54mA.s
均匀功耗:(10mA.s +18mA.s + 0.54mA.s) / 900s = 0.0317mA
设2节AA电池总电能为3000mAH,能功耗的时刻为:3000mAH / 0.0317mA = 94637H=10.8年。
从上述实例能够看出,要尽或许地延伸无线通讯产品的寿数需求以下规划准则:
l尽或许地Sleep,且Sleep下功耗尽或许地低;
l削减侦听的时刻;
l进步通讯成功率,尽或许地防止抵触重传。
完成上述规划,需求优异的网络协议栈,特别是RDC(Radio Duty Cycle)层算法要合理;而协议栈和软件运转的根底是操作体系,印证了智能产品规划“三分硬件,七分软件”的规则。
iWL881A选用了功耗强壮的物联网操作体系Contiki和Rime无线通讯协议栈,产品的动态功耗运用Contiki的energest模块来盯梢。
Contiki体系为便利盯梢节能规划了energest模块,它能盯梢组件运转时刻。它的数据结构如下图所示,energest_total_time记载组件总运转时刻,energest_current_time记载组件敞开时刻,energest_current_mode记载组件当时是否敞开,时刻的单位为rtimer_clock_t。
energest数据结构
当一个组件敞开时调用ENERGEST_ON(),当该组件封闭时调用ENERGEST_OFF()。这2个动作的时序逻辑如下图所示。
energest时序逻辑
当用户需求计算组件运转时刻,首要调用energest_flush()函数,它将一切组件的运转时刻结算到当时时刻;然后调用energest_type_time()函数,取出对应组件的运转时刻;最终能够依据组件的功率换算成耗费电能。
iWL881A运用Contiki的energest模块能够实时打印能耗盯梢信息:
CPU=5977ms, RF_TX=179ms,RF_RX=1512ms, IRQ count=30303
CPU=6023ms, RF_TX=181ms,RF_RX=1507ms, IRQ count=30304
CPU=5984ms, RF_TX=180ms,RF_RX=1497ms, IRQ count=30303
上述时刻是300秒内的计算值,它阐明:CPU大约6000 / 1000 / 300 * 100%=2%占空比,RF的发射大约180 / 1000 / 300 * 100%=0.06%的占空比,RF的接纳大约1500 / 1000 / 300 * 100%=0.5%的占空比,中止次数约30300 / 300=101次(测验体系包括100Hz的“心跳”时钟)。
四、 组网低功耗
无线产品在组网的运转中,往往会有抵触重传、睡觉唤醒、路由转发等多种通讯形式,这儿能耗的盯梢将更具挑战性,请持续重视“长沙市锐米通讯科技有限公司”的LoRa组网系列博文。