SX1278与STM8L的精美结合。

2024-08-31 08:58
文章标签 sx1278 stm8l 精美 结合

本文主要是介绍SX1278与STM8L的精美结合。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

一.   引言

 

能耗对于电池供电的产品来说是一个重大的问题,一旦电能耗尽设备将“罢工”,在某些场合电能意味着电子产品的生命。物联网时代将会有越来越多电池供电的设备通过无线通信连接,降低能耗再次摆在工程师的桌面上—解决它。不但具备空旷环境传输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的精美结合。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123454

相关文章

Go 语言中Select与for结合使用break

func test(){i := 0for {select {case <-time.After(time.Second * time.Duration(2)):i++if i == 5{fmt.Println("break now")break }fmt.Println("inside the select: ")}fmt.Println("inside the for: ")}} 执行后

Jenkins--pipeline认识及与RF文件的结合应用

什么是pipeline? Pipeline,就是可运行在Jenkins上的工作流框架,将原本独立运行的单个或多个节点任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。 为什么要使用pipeline? 1.流程可视化显示 2.可自定义流程任务 3.所有步骤代码化实现 如何使用pipeline 首先需要安装pipeline插件: 流水线有声明式和脚本式的流水线语法 流水线结构介绍 Node:

GraphPad Prism 10 for Mac/Win:高效统计分析与精美绘图的科学利器

GraphPad Prism 10 是一款专为科研工作者设计的强大统计分析与绘图软件,无论是Mac还是Windows用户,都能享受到其带来的便捷与高效。该软件广泛应用于生物医学研究、实验设计和数据分析领域,以其直观的操作界面、丰富的统计方法和多样化的图表样式,成为科学研究的得力助手。 数据处理与整理 GraphPad Prism 10 支持从多种数据源导入数据,如Excel、CSV文件及数据库

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中,用户界面设计和数据处理紧密结合,以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论,尤其是如何通过PyQt5等图形界面库实现交互式功能。同时,我们将探讨如何通过嵌入式预测模型为用户提供赛果预测服务。 本文的主要内容包括: 基于PyQt5的图形用户界面设计。结合数据进行比赛预测。文件处理和数据分析流程。 1. PyQt5 图形用户界面设计

第二十一章 rust与动静态库的结合使用

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust与动静态库的结合使用 目录 注意一、前言二、库生成三、库使用四、总结 一、前言 rust中多了很多类型的库,比如前面章节中我们提到基本的bin与lib这两种crate类型库。 如果你在命令行执行下列语句: rustc --help 那么你将能找到这样的内容: --crate-type [bin|li

“设计模式双剑合璧:工厂模式与策略模式在支付系统中的完美结合”

工厂模式(Factory Pattern)和策略模式(Strategy Pattern)都是常见的设计模式,但它们解决的问题和应用场景不同。下面是它们的区别: 1. 目的不同: 工厂模式(Factory Pattern): 工厂模式的主要目的是创建对象。它通过定义一个创建对象的接口,让子类决定实例化哪一个具体类,从而将对象创建的逻辑与使用的代码分离。 工厂模式可以分为简单工厂、工厂方法和抽象

除了实践干货,还有精美礼品可以拿

除了实践干货,还有精美礼品可以拿 干货云集,让你不虚此行 10 场分论坛深度探讨7 款重磅产品发布50 位业界大咖精益分享30 场行业实践破局认知 你将收获什么 行业:聚焦多行业应用实践、内容维度更深入 与行业领袖们一起把握数字化时代的脉搏,共同分享探讨科技力量如何推动业务快速创新升级的最佳实践,推动云计算、大数据在更大范围、更多领域创新应用,助推企业的数字化转型。 能力:核心技术

2024高教社杯全国大学生数学建模竞赛C题精美可视化(python代码)

2024高教社杯全国大学生数学建模竞赛C题原创python代码 C题题目:农作物的种植策略 先给大家看看图吧: #描述性统计分析import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom scipy.stats import kurtosis, s

基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的包装盒纸板破损缺陷检测系统是一种高效、智能的解决方案,旨在提高生产线上包装盒纸板的质量检测效率与准确性。该系统利用YOLOv8这一前沿的深度学习模型,通过其强大的目标检测能力,能够实时识别并标记出包装盒纸板上的各种破损缺陷,如划痕、撕裂、孔洞等。 在系统中,首先需对包含破损缺陷的包装盒纸板图像进行数据采集和标注,形成训练数据集。随后,利用这些数据进行模型训练,使

Windows电脑本地安装HFS文件共享服务结合内网穿透搭建低成本NAS

文章目录 前言1.软件下载安装1.1 设置HFS访客1.2 虚拟文件系统 2. 使用cpolar建立一条内网穿透数据隧道2.1 保留隧道2.2 隧道名称2.3 创建二级子域名访问本地hfs 总结 前言 本文主要介绍如何在Windows系统电脑使用HFS并结合cpolar内网穿透工具搭建低成本NAS,并实现使用公网地址远程访问管理本地局域网电脑存储的文件。 云存储作为一个新概念