MCU低功耗设计(三)产品

发布者:心愿成真最新更新时间:2016-08-14 来源: eefocus关键字:MCU  低功耗设计 手机看文章 扫描二维码
随时随地手机看文章

引言:

能耗对电池供电的产品来说是一个重大问题,一旦电能耗尽设备将“罢工”。在《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

 

IC输入,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组网系列博文。

关键字:MCU  低功耗设计 引用地址:MCU低功耗设计(三)产品

上一篇:MCU低功耗设计(二)实践
下一篇:msp430的一些常用的C语言控制程序---ZLG7289

推荐阅读最新更新时间:2024-03-16 15:04

使用单片机实现数字电压表的资料详细说明
1. 实验任务 利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。 2. 电路原理图 图1.28.1 3. 系统板上硬件连线 a) 把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 b) 把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。 d) 把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。 e
[单片机]
使用<font color='red'>单片机</font>实现数字电压表的资料详细说明
基于AT89C51单片机的温度数据显示设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD12864+DS18B20温度检测模块。 系统的通过AT89C51作为控制核心,使用DS18B20温度检测模块,利用LCD12864显示采集的温度数据,LCD12864相对于LCD1602来说能够显示文字,LCD12864显示器被称为点矩阵液晶显示模块,也称为12864,因为它是包括12864个液晶显示点的128行64个阵列。每个显示点应该有一个二进制数,0表示消失,1表示明亮。如果模块内设置了词典就不需要进行汉字的设计。 二.仿真概述 1.LCD12864显示屏上显示环境温度。 2.按下界面切换后显示日期和时间数据。 三.程序设计 使用Keil 51进行程序设
[单片机]
基于AT89C51<font color='red'>单片机</font>的温度数据显示设计
OLED显示模块与C8051F单片机的接口设计
  有机发光显示OLED(Organic Light Emitting Display)是比液晶显示技术更为先进的新一代平板显示技术,是被业界公认为最具发展前景的下一代显示技术。它与液晶显示技术相比,具有超轻薄、高亮度、广视角、自发光、响应速度快、适应温度范围宽、抗震强、功耗低、可实现柔软显示等优越性能,可广泛应用于通信、计算机、消费电子、工业应用、商业、交通等领域。下面以VGS12864E显示模块为例,介绍C8051F020单片机与它的接口设计及软件编程方法。 1 VGS12864E显示模块   VGS12864E是128×64行点阵的OLED单色、字符、图形显示模块。模块内藏64×64的显示数据RAM,其中的每位数据都对应
[单片机]
OLED显示模块与C8051F<font color='red'>单片机</font>的接口设计
单片机的“灵魂”数据存储器的应用
  我们可以说程序存储器的里面存放的是单片机的灵魂,它就是工作程序。小的可能只有1KB(最多只能装1024条8位数据,因为实际指令还有许多2字节、3字节指令,所以它还装不下1024条指令)大的也有128KB的。      这些8位数据要么在工厂里做摸子光刻进去,要么一次性的烧写进去,要么……用编程器这个特殊工具把调试成功的机器码装载进去,或者像AVR单片机那样自己花几块钱做一条下载线,把电脑里这些东西灌进去(或许是AVR最吸引人之处),它一旦进驻电脑的程序存储器中,除了借助上述装置便不能自由改写,在单片机运行时,只是从其中读出指令或固定的数据,所以给程序存储器一个“只读存储器”的别名,简写为ROM,包括用编程器写紫外线擦除内容的E
[单片机]
基于MSP430单片机的可调恒流源Proteus仿真程序设计
单片机源程序如下: /****************************************************************** * 实验说明: * 通设置系统主时钟(MCLK=8Mhz ) 、辅助时钟(ACLK=8Mhz )、 * 子系统时钟(SMCLK=8Mhz ) ******************************************************************/ #include MSP430x24x.h #include string.h #define uchar unsigned char #define uint unsigned int /
[单片机]
基于MSP430<font color='red'>单片机</font>的可调恒流源Proteus仿真程序设计
胰岛素泵的检测及供电系统设计
  胰岛素泵是一种便携式医疗设备,在美国,其设计和制造由美国食品与药物管理局(FDA)监管。这意味着:其设计和建造必须遵循准确规定的流程;其性能必须满足严格的文档化管理、开发测试、生产测试和现场维护等要求。如图1中设备,还必须包含全面的自检和故障显示功能,从而需要额外电路以及使用具有自检功能的器件。 便携性   胰岛素泵是可佩戴的设备,因此,必须非常小而轻(图2)。其体积通常约2×3×0.75英寸(5.7×7.6×1.9厘米),重量为2和4盎司(57克和113克)。这些外形要求,使 设计师 在选择器件时,会优先考虑其大小和功耗。 图1:胰岛素泵系统功能框图;美信可提供蓝色部分的解决方案。   为节省空间
[医疗电子]
胰岛素泵的检测及供电系统设计
彩色STN模块VP2188与51单片机接口设计
  VP2188是精电蓬远生产的一款彩色STN液晶显示模块,此模块为点阵透射式彩色STN显示屏,色阶为65 k色、白色LED背光,其核心控制器是Philips COG封装的PCF8837.PCF8837是单片式彩色STN控制驱动器,存储容量为176*132*16=45 kB,有3种颜色显示模式(RGB 565或444或332),驱动能力为176行,396列(132*RGB)输出.   PCF8837的特点是有内部集成驱动电源功能模块及OPT功能模块,具备内部DC-DC升压、变换及电压、帧频率温度补偿电路,可以通过软件管理驱动电源的工作 ,并有灵活的串口和并口连接方式、矩阵式存储器管理以及由此带来的方便的图像管理功能、区域滚动模式
[单片机]
彩色STN模块VP2188与51<font color='red'>单片机</font>接口设计
PC机与单片机串行通信中实现命令批处理
    摘要: 介绍PC机与MCS-51单片机通信批处理命令的实现思想、方法、通信协议和C51程序平台。为PC机与单片机间串行通信程序设计提供一种方法上的新思路。     关键词: 批处理 MCS-51单片机 通信协议 在PC机与MCS-51单片机之间进行串行通信时,基本是一对一的,即用PC机向单片机每发1条命令,就等待单片机的1条返回信息。这样可能把大量时间浪费在PC机与单片机的通信过程中了。为此笔者经过实践,设计出可以批处理执行PC机发给单片机的命令,就像DOS操作系统中的批处理命令一样,可连续批处理信息,结果当然提高了系统速度。文中提供了部分平台式C51软件源代码,以供大家参考。 1 通信协议
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved