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工作模式
对于无线通信产品,贪婪地“吞噬”电能是射频模块(R
MCU低功耗设 相关文章:
- MCU低功耗设计(一)理论(11-11)
- MCU低功耗设计(二)实践(11-11)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)