单片机型号:STM32L053R8T6

本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片唤醒驱动程序。

一、RxDutyCycle模式

在讲述本篇内容之前,我们先来看一下SX1268的一种模式RxDutyCycle,译为中文为接收占空比模式。其可使用SetRxDutyCycle命令进入RxDutyCycle模式,我们来看一下该命令的详细解释。

该命令具有2个参数,从字面的意思可以看出,1个是指接收周期时间,另1个是指睡眠周期时间。我们可分析出,该命令是在RX模式和SLEEP模式之间自动转换的一种模式,其目的是为了节省芯片功耗。如果在使能外部中断后,则单片机可以进入睡眠态,SX1268大部分时间也是睡眠,而且可自动唤醒,功耗则大幅度节省。

When this command is sent in STDBY_RC mode, the context (device configuration) is saved and the chip enters in a loop

defined by the following steps:(当从STDBY_RC模式进入时,器件配置信息会被保存,芯片循环以下步骤)

The chip enters RX and listens for a packet for a period of time defined by rxPeriod(芯片在RX模式持续rxPeriod所定义的时间)

The chip is looking for a preamble in either LoRa® or FSK(芯片自动搜索LoRa或FSK报头)

Upon preamble detection, the timeout is stopped and restarted with the value 2 * rxPeriod + sleepPeriod(搜索到前导码,超时停止,并以2 * rxPeriod + sleepPeriod的时间重新开始)

If no packet is received during the RX window (defined by rxPeriod), the chip goes into SLEEP mode with context saved

for a period of time defined by sleepPeriod(经过rxPeriod时间未收到包,芯片则将配置信息保存后进入SLEEP模式,其时间由sleepPeriod确定)

At the end of the SLEEP window, the chip automatically restarts the process of restoring context and enters the RX

mode, and so on. At any time, the host can stop the procedure(睡眠结束后,芯片恢复配置信息重新启动,进入RX模式,如此周而复始。在任何时候,主机都可停止该循环)

循环可以通过以下方式中止:

在RX模式接收到1包数据,芯片置位RX_DONE标志位,中断主机,并进入STDBY_RC模式

芯片在RX模式接收到SetStandby命令(睡眠模式时接收不到的,必须通过拉低NSS进行唤醒)

SLEEP模式时间:sleepPeriod * 15.625 μs

RX模式时间:rxPeriod * 15.625 μs

在RX模式时,接收到前导码,则定时器将进入SLEEP模式的时间调整为2 * rxPeriod + sleepPeriod,应确保在这段时间内接收到前导码和报头,公式如下:

二、芯片唤醒

接下来,我们再看模式转换图,有3种模式需要唤醒,上电或复位、睡眠模式、RxDutyCycle模式。这3种模式,都先进入STARTUP模式,再进入STDBY模式。上电或复位操作与睡眠模式操作的方式是相同的,RxDutyCycle也存在睡眠模式,所以我们均需考虑使用NSS拉低的方式将其唤醒。

三、唤醒函数

在看一次唤醒时序图,NSS拉低后可将芯片唤醒。具体解释:可以通过NSS的下降沿使得芯片从sleep模式唤醒。下降沿发生后,芯片内部的稳压器都将打开。芯片开始初始化,然后具备接收第1个SPI命令的能力。这意味着NSS下降沿到SCK上升沿之间的延时,需考虑唤醒序列和芯片的初始化。在睡眠模式和初始化阶段,BUSY引脚为高电平,以表明芯片不能够接收1个新的命令。一旦芯片进入了STDBY_RC模式,BUSY引脚将变低,此时主机可以发送命令。整个过程同样适用于上电启动和硬复位。

程序如下:

void CSX1268::SX126xWakeup(void)

{

this->Select();

SX126xWaitOnBusy();

this->Deselect();

SX126xWaitOnBusy();

}

四、SX126xCheckDeviceReady函数

有了上述准备后,我们再来看一下SX126xCheckDeviceReady函数,程序如下。开始判断当前模式是否是SLEEP或RxDutyCycle模式,如果是先进行唤醒操作,然后将天线打开;如果不是,直接等待BUSY为低就绪即可。上电或复位,与从SLEEP模式唤醒的操作是相同的,我们只需在程序的起始,将模式设定为SLEEP模式即可。

void CSX1268::SX126xCheckDeviceReady(void)

{

if((SX126xGetOperatingMode() == MODE_SLEEP) || (SX126xGetOperatingMode() == MODE_RX_DC))

{

SX126xWakeup();

// Switch is turned off when device is in sleep mode and turned on is all other modes

SX126xAntSwOn();//打开天线开关,此函数就是将相应的引脚设置为输出,还需仔细探讨

}

SX126xWaitOnBusy();

}

在这里又牵扯到天线打开与关闭函数,我们将在下一篇日志中介绍。

sx1268 中文_STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)相关推荐

  1. 【嵌入式硬件芯片开发笔记】HART调制解调器AD5700芯片配置流程

    [嵌入式硬件芯片开发笔记]HART调制解调器AD5700芯片配置流程 低功耗HART调制解调器 适用于AD5700/AD5700-1 我的是XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO ...

  2. sx1268 中文_微雪电子SX1268 Lora 433M频段简介

    树莓派LoRa扩展板SX1268433MHz频段 新一代LoRa扩频技术,通信距离达5km,UART控制接口,兼容Arduino/STM32等主控板 型号SX1268433MLoRaHAT 产品简介[ ...

  3. S32K144开发笔记5 - SPI驱动MCP2515

    1.接线图 PTB13 - INT 接收数据中断引脚 PTB14 - CLK 时钟 PTB15 - MISO 接收 PTB16 - MOSI 发送 PTB17 - CSN 片选 2.软件SPI 2.1 ...

  4. stm32f429vref怎么接_STM32开发笔记58: STM32F407特殊引脚连接电路

    单片机型号:STM32F407VGT6 本文介绍STM32F407特殊引脚连接电路,见下图: 引脚:49.73 VCAP_1和VCAP_2,按照下列电路设计方法进行设计.这里应该着重看最后1句话,其表 ...

  5. 嵌入式系统开发笔记85:Modbus释疑

    文章目录 前言 一.ADU.PDU.RTU 1.ADU 2.PDU 3.RTU 二.内存分布 三.数据寻址 四.数据地址起始值 五.标准功能码 1.0​类​代码 2.1类代码 3.2类代码 六.Mod ...

  6. DSP28377D开发笔记(一) 初步认识DSP28377D芯片

    前言 由于DSP28377D芯片包含众多的外设,且开发DSP所涉及的知识面比较广.所以本文只是简要的对该芯片的一些重要特性进行介绍,以及对如何学习DSP的开发提出一些本人的想法.在后续的文章中,将会对 ...

  7. 1553B通信项目开发笔记(二)bu61580芯片介绍

    BU-61580是DDC公司在90年代初研制的一种可在处理机与1553B总线之间全集成化的接口芯片,该芯片有如下几个特点:         1)全集成化的1553B总线标准的终端接口.         ...

  8. DW1000开发笔记(一)DW1000芯片概览

    一.DW1000介绍 DW1000(官方网站)是一个完全集成的低功耗射频收发器,遵循IEEE 802.15.4-2011 超宽带标准.它可以被用于双向测距或者TDOA定位系统中,精度为10cm.它使用 ...

  9. DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动

    系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 一.官方驱动 Decawave官方提 ...

最新文章

  1. html表格鼠标高亮行列,JS实现的表格行鼠标点击高亮效果代码
  2. python数据结构 树_python数据结构之二叉树的建立实例
  3. python Sigmoid和Tanh 可视化
  4. 终聚.net平台开发
  5. Please set spring.main.web-application-type=reactive or remove spring-boot-starter-web dependency
  6. linux 根目录突然增大
  7. python实现文件传输_Python实现基于HTTP文件传输实例
  8. Java web中的web-xml中标签定义之jsp-config
  9. Helix QAC所提供的四种抑制方式
  10. idea新建sourceFolder
  11. 双十一过后,你的钱包还好嘛?快速回血攻略来了
  12. win7装xp双系统_UEFI新PC装Win7 32位系统:巧用”硬盘保护卡“解决
  13. 【python柱状图】图例大小、位置,X轴刻度大小,旋转角度
  14. pdf转换器电脑版免费,好用的办公操作软件集合
  15. 三种梯度下降算法的比较和几种优化算法
  16. android 混淆不起作用,Android代码混淆的写法总结
  17. 小米pro如何关闭安全启动_Apple的新安全功能不会让您维修MacBook Pro或iMac Pro [更新]...
  18. java 羽化_程序员羽化之路--假如需要一百万个对象
  19. kettle使用过程记录(详细)
  20. AFEPack 使用 Tutorial(一):解二维泊松方程

热门文章

  1. Android RIL源码研究笔记 の ril (一)
  2. 《我的成长》6月下2009年第7期(总第7期)
  3. vim文本编辑器的配置vimrc
  4. easyui 收费_收费班长喻玉华三尺岗亭献青春
  5. windows无法访问指定设备路径或文件_完全免费的文件数据恢复工具:Microsoft Windows File Recovery...
  6. 主设备号与次设备号以及申请
  7. Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案...
  8. spring boot+mybatis+generator生成domain大小写问题
  9. 高阶篇:8.1)开模前评审及提交资料;
  10. 【练习---日志文件的恢复】-----多元化成员中,单个成员丢失