历史上的今天
返回首页

历史上的今天

今天是:2025年03月08日(星期六)

2020年03月08日 | STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)

2020-03-08 来源:eefocus

单片机型号: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();

}


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

推荐阅读

史海拾趣

aconno公司的发展小趣事

aconno深知人才是企业发展的核心动力。因此,公司一直致力于打造一支高素质、专业化的团队。通过招聘优秀人才、提供专业培训、建立激励机制等一系列措施,aconno成功吸引和留住了一批业内精英。这些人才为公司的技术创新和市场拓展提供了有力支持,成为aconno发展壮大的重要保障。

承兴(CX)公司的发展小趣事

然而,随着市场竞争的加剧和行业的变革,承兴也面临着巨大的挑战。为了应对这些挑战,承兴公司积极调整策略,加大对研发和创新的投入。公司不断推出具有自主知识产权的新产品和技术,以满足市场的不断变化和消费者的多样化需求。

Auctor Corp公司的发展小趣事

Auctor Corp公司的创始人,一群富有远见和冒险精神的工程师,怀揣着对电子技术的热情和对市场的敏锐洞察,决定共同创办这家公司。在创业初期,公司面临着资金紧张、技术储备不足等多重困难。然而,团队成员们凭借着坚韧不拔的精神和对技术的执着追求,通过自主研发和不断改进,逐渐在市场上站稳了脚跟。

品赞(G-Switch)公司的发展小趣事
电路结构相对简单,易于实现和维护。
Densei-Lambda (TDK)公司的发展小趣事
电路结构相对简单,易于实现和维护。
APC (APC by Schneider Electric)公司的发展小趣事

在电子行业的早期,电源的稳定性是许多企业和个人用户面临的一大难题。正是在这样的背景下,APC公司凭借其敏锐的市场洞察力,将重心放在小型桌面不中断电力供应(UPS)系统的电源保护及开发上。1984年,APC推出了公司的首个UPS产品,为PC、PC服务器及其网络提供了可靠的电力保障。这一创新举措不仅解决了当时的电力供应问题,更为APC在UPS电源保护领域奠定了坚实的基础。

问答坊 | AI 解惑

急救啊!!一个反射式红外传感器的问题!!

我在做一个防盗电路,那个反射式红外传感器不能过滤可见光!!!应如何解决啊!!是不是换一个可过滤可见光的反射式红外传感器就可以啦???应该用什么型号的啊!!麻烦教教小弟!!我上传了电路图…

查看全部问答>

诚聘嵌入式开发人员

因业务需要,本公司急聘嵌入式开发人员,职位要求如下,工作地点杭州,欢迎加入,待遇从优。如果你想让自己更能找到发挥的潜力,展现自己的能力,请联系job@shtacom.com。 Firmware Engineer    Work Location: HangZhou Ope ...…

查看全部问答>

如何保证LED芯片固晶质量

replyreload += \',\' + 373442;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

RS485通讯再次发帖

    我现在用MAX485做半双工发送。碰到一个问题:波特率选择115200,下位机MCU通过中断接收。上位机(COMMASTER)向下位机MAX485发数据,然后MCU进行处理。当上位机如果每次只发送一位数据的时候,通讯正常;如果上位机发送一串字符串的 ...…

查看全部问答>

求助,ldrls pc, [pc, r3, lsl #2]的意思

今天打开汇编看了下有句 ldrls        pc, [pc, r3, lsl #2] 不知道哪位大哥给解释一下这句汇编的意思!! 谢谢…

查看全部问答>

eboot.nb0生成不了的问题???

只生成了eboot.bin,查看build.log,错误如下: BUILD: [01:0000000144:INFO  ] Writing E:\\WINCE600\\platform\\SMDK6410\\target\\ARMV4I\\retail\\EBOOT.bin BUILD: [01:0000000145:INFO  ] Table of contents &nbs ...…

查看全部问答>

谁有TFT的VHDL例程参考下啊?

如题 谢谢了,从网上找 了一些都不太适合 我的TFT引脚如下: RS,WR,RD,CS,RESET,DB0-DB7 从网上找到一些很复杂的,谁有比较简单的共享下啊…

查看全部问答>

程序库之旅 4: 独立于MCU的LED闪烁库

   我们知道,这样一个程序,需要两个部分。1. LED的亮灭控制;2. 延时函数;   如果只是像那些入门教程那样直接写在main函数里,这是非常简单的。           现在让我们考虑,如何实现 独立于 ...…

查看全部问答>

基于430的心率计资料共享

基于430的心率计资料共享…

查看全部问答>

求关于MSP430F149的例程帮助

我需要3个例程,关于MSP430F149的红外发射与接收,红外解码以及74HC165并转串的开发板例程。有的朋友帮我一下,谢谢啦。…

查看全部问答>