转发请注重原创出处,谢谢!

一.   引言

能耗对于电池供电的产品来说是一个重大的问题,一旦电能耗尽设备将“罢工”,在某些场合电能意味着电子产品的生命。物联网时代将会有越来越多电池供电的设备通过无线通信连接,降低能耗再次摆在工程师的桌面上—解决它。不但具备空旷环境传输5km的超长距离优势,还将休眠能耗降低到极致(0.4uA,带RTC为1.4uA)。我们是怎么做到的呢?接下来,一步一步解密。

二.   硬件设计

1.   选用低功耗器件

终端MCU选用STM8L151C8T6,它属于超低功耗,不带RTC休眠为400nA,带RTC下休眠为1.4uA。该MCU拥有较大的RAM(4KB)和自带EEPROM(2KB),不用扩展外部存储设备,进行一步降低功耗和成本。

终端射频芯片选用SX1278,在休眠模式下,该芯片功耗低至忽略不计。

2.   尽可能快地让射频模块休眠

SX1278属于LoRa TM扩频调制技术,它的远距离优势得益于调制增益,不是靠增大发射功率(那将消耗更多电能)。该射频芯片的电流消耗如下:休眠<0.2uA,空闲=1.6mA,接收=12mA,发射(最大功率)=120mA.

终端MCU通过“中断+定时器超时”方式控制SX1278,一旦射频完成发送或接收,立即进入休眠模式。

第一:

虽然MCU是停机了,但是电路板还有其他的芯片在工作,它们仍然在消耗电量,所以我们在停机前应该要把其他芯片给关闭(可以通过特定的指令或者片选线)。条件好的可以直接用切断它们的电源。

第二:

我是这样理解的:进入停机模式后,只是MCU中最耗电的内核部分被关了,而所有寄存器和内存中的值是保持不变的,所以它的外设还在消耗电量,所以我们要在停机之前把开启的外设给关了。这里要注意一点:外设开启时是先开时钟再设置寄存器,关闭时先清除寄存器再关闭时钟。我是这样理解的:操纵一个外设的寄存器肯定是需要时钟的,如果我们先把时钟给关了,那么还怎么操作寄存器呢,如果光关了时钟,不清寄存器的相应位,那么外设还处于“静态耗电”的状态。在研究低功耗的过程中,我被这个坑了好久。关于这一点的实例可以参考这篇博客:

http://blog.csdn.net/qq_25186745/article/details/52777375

第三:

关于IO口的电平,这个是非常重要的一点,和之前提到的外设一样,GPIO也是一种外设,但是特殊的是,这个外设是和芯片外部直接打交道的,如果GPIO外部接了个上拉电阻,而你在停机之前设置的IO口是低电平的,那么电流不就通过电阻,流到IO口里来了,比如正常的说接了个10k的上拉电阻,接到3.3v电压上,那么电流就是330uA,这个值可不小呢,stm8l在停机时极限最小电流好像能达到0.4uA。那么你这个电路就是因为这个电阻,停机电流比别人大了将近800倍了,那么假如你的产品能待机1年,人家待机800年,这还怎么比?所以IO口是绝对不能被忽视的。stm8l芯片复位以后所有引脚都是浮空输入模式,理论上悬浮空输入时IO口的状态为高阻态是最省电的,那么我们只要把所有IO都DeInit就可以了。但是事实上不是,我把没有用到的管脚全部推挽输出高电平或低电平,不用的外部晶振的引脚要改为上拉输入才省电,外部有上拉下拉电阻的引脚分别推挽输出高电平和低电平,一般电路中上拉电阻比较多(比如IIC的总线外部都有上拉的)。和外部芯片相连的引脚都推挽输出低电平,因为外部芯片断电后所有引脚都是高阻态或接地的吧,如果你弄个高电平,就可能会有电流流过去。

但是。。但是。。。。但是。。。。。。不是所有STM8L系列的芯片GPIO都是一样的。

比如

/ 所有端口输出开漏,低电平

GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

GPIO_Init(GPIOG, GPIO_Pin_All, GPIO_Mode_Out_OD_Low_Slow);

或者

/ 所有端口输出开漏,高电平

GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

GPIO_Init(GPIOG, GPIO_Pin_All, GPIO_Mode_Out_OD_Hig_Slow);

或者是输入上拉,输入浮空。。。。。。。。。。。。。。。。。。。。。功耗是完全不一样的

精品来了

经过很长的努力,终于把SX1278和STM8L的总体功耗降低为 1.4ua。是的,你没有听错,1.4ua

模块再发送的时候功耗在65ma--120ma

工程程序https://download.csdn.net/download/u013184273/10932372

电路图https://download.csdn.net/download/u013184273/10932365

其中电路图是CADENCE才能打开。

SX1278与STM8L的精美结合。相关推荐

  1. SX1278与STM8L的精美结合

    转发请注重原创出处,谢谢! 一.   引言 能耗对于电池供电的产品来说是一个重大的问题,一旦电能耗尽设备将"罢工",在某些场合电能意味着电子产品的生命.物联网时代将会有越来越多电池 ...

  2. SX1278与STM8L

    转载自:https://blog.csdn.net/u013184273/article/details/80051263 一.   引言 能耗对于电池供电的产品来说是一个重大的问题,一旦电能耗尽设备 ...

  3. stm8l+sx1278: 1278发送完成中断TxDone处理

    1278发送完成中断TxDone处理问题: 问题描述: SX1278 RaLo扩频模式下,当数据发送完成后,进行sleep模式,在开发过程发现一个问题,DIO0初始状态低电平,中断上升沿触发 ,数据发 ...

  4. 网页素材大宝库:50套非常精美的图标素材

    图标对网页设计师来说是宝贵的财富,高质量的图标素材既能为设计师节省时间,又能有很不错的效果.网上的免费图标素材非常多,可以说是琳琅满目,那些充满分享精神的设计师们把素材共享出来,让更多的人可以使用他们 ...

  5. 精美素材分享:16套免费的扁平化图标下载

    在这篇文章中你可以看到16套华丽的扁平化图标素材,对于设计师来说非常有价值,能够帮助他们节省大量的时间.这些精美的扁平化图标可用于多种用途,如:GUI 设计,印刷材料,WordPress 主题,演示, ...

  6. 70佳精美的PSD素材免费下载(上篇)

    设计师经常会去网上搜罗各种各样的素材,这些免费素材不仅能帮助他们节省大量的时间,而且能有很好的效果.今天,本文与大家分享70佳精美的PSD素材,非常感谢那些很有才华的设计师分享它们的劳动成果,让更多的 ...

  7. 20个精美图表,教你玩转 Pyecharts 可视化

    作者 |俊欣 来源 |关于数据分析与可视化 本篇文章我们将继续聚焦c模块并且用它来绘制精美的图表,希望读者在看完之后会有不少收获 01 内嵌饼状图 内接一个环状的饼图,里面还有一个饼状的图 (Pie( ...

  8. 3d旋转相册代码源码_如何使用CSS开发精美3D旋转相册?

    借助CSS所提供的animation动画属性及2D.3D变换属性,我们可以摆脱对JavaScript的依赖,设计开发各类效果优秀的前端动态效果,在之前文章和视频中我们也介绍了不少基于CSS与JavaS ...

  9. 在线作图丨如何绘制精美的3D饼图

    ​Question 1:什么是饼图? 饼图(pie chart)是常用的基本统计图形之一,可以直观地展示整体与个体之间的比较情况.在生信分析中,饼图常用于展示各元素数值相对于总数的占比情况,图中每个扇 ...

  10. 怎么使图表居中显示_文字怎么排版又精美又好看?

    大家好,我是广邕君~ 前几天我新开的星球里面有一个小伙伴问我"文字怎么排版又精美又好看?" 当时我思考一会回了一段话,下面有截图: 后面我又认真的整理一下,所以有了今天的这篇分享, ...

最新文章

  1. All in one: pentest under metasploit
  2. 转子接地保护原理_罗茨鼓风机(压缩机)原理和操作规程
  3. ProceedingJoinPoint pjp 获取不到方法上
  4. 50题真 • 一文入门TensorFlow2.x
  5. 【Python 必会技巧】判断字符串是否为字母/数字/大小写/空白字符/有效标识符/可打印字符
  6. int 为什么是2147483647_现在的C语言编辑器里的int范围为什么是-2147483648~2147483647...
  7. azure备份存储层分类_备份到Azure –为什么要这样做?
  8. 如何进行时间序列的特征工程?
  9. javascript中引号嵌套
  10. Effective C# 原则42:使用特性进行简单的反射(译)
  11. 【简历优化】如何写好项目的亮点难点?项目经历怎么写最好?
  12. Wordpress主题制作之首页
  13. 美国薪资最高的技术技能:Golang、Kafka、DynamoDB、Redshift、Cassandra
  14. CCCF“CNCC2017特邀报告”丘成桐:现代几何学与计算机科学
  15. 别扔掉你的登机牌,黑客可以用它获取个人信息
  16. Android Studio Shape属性(上)
  17. 【Axure教程】拖动排序——扣款顺序
  18. C 语言中负数移位运算讲解
  19. 22.【实战】车辆统计
  20. 软件测试流程有哪些?

热门文章

  1. Java *2.8(当前时间)程序清单2-7给出了显示当前格林尼治时间的程序。修改这个程序,提示用户输入相对GMT的时区偏移量,然后显示在这个特定时区的时间。
  2. Selenium 打开新标签页获取元素
  3. 红米note3全网通 |2015112| 官方线刷包救砖包解账户锁屏幕锁
  4. 微信小程序调用Android手机蓝牙BLE传输数据
  5. 物理学原理与工程应用期末复习之公式总结
  6. 行人重识别综述之Person Re-identification:Past, Present and Future
  7. Java 判断是否为大写字母
  8. 【Turtlrbot3-burger】从零开始配置Turtlrbot3小车1
  9. 消逝的光芒 Dying Light for Mac 跑酷僵尸游戏 动作生存游戏
  10. 香橙派python编程_香橙派4B Python3.7安装OpenCV