【LoRa】SetLoRaSymbNumTimeout寄存器

2024-08-31 00:36

本文主要是介绍【LoRa】SetLoRaSymbNumTimeout寄存器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1 前言
  • 2 实验验证疑问
    • 2.1 SetRx的timeout模式和SetLoRaSymbNumTimeout
      • 2.1.1 实验1
      • 2.1.2 实验2
      • 2.1.3 结论
    • 2.2 SetRx的single与continuous模式和SetLoRaSymbNumTimeout
      • 2.2.1 实验1
      • 2.2.2 实验2
      • 2.2.3 实验3
  • 3 小结

1 前言

本章节介绍LoRa芯片的寄存器SetLoRaSymbNumTimeout,此寄存器的作用在datasheet中的解释是可降低误检测率,但经过了解及实验,使用SetRx的timeout功能也可以实现同样的效果,而且也更容易理解。相反,如果在代码中同时使用寄存器SetLoRaSymbNumTimeout和SetRx的timeout,其效果反而不好,本章将详细解释。
在此,我先将datasheet中对这个寄存器的描述放到这里,下图为SX126x的,其他系列芯片类似。
SetLoRaSymbNumTimeout

2 实验验证疑问

2.1 SetRx的timeout模式和SetLoRaSymbNumTimeout

Q:在使用SetRx的timeout模式时,会设定一个timeout值,在使用寄存器SetLoRaSymbNumTimeout时也会设定一个timeout值,是以哪个时间为准去产生timeout中断的?

2.1.1 实验1

程序中使用参数SF7,BW125,则单个symbol时间为1.02ms。将SymbNum设为200,则换算成时间为200 * 1.02ms = 204ms,程序如下:

sx126x_set_lora_symb_nb_timeout(context, 200 ); // 204ms

而将SetRx的timeout值设置为300ms,程序如下:

  sx126x_set_rx( context, 300 );	// 300ms

运行程序,然后通过逻辑分析仪抓取中断引脚DIO上的波形,此时为RX timeout中断,每隔205ms,产生一次,如下图:
实验1-DIO波形

2.1.2 实验2

修改SetRx的timeout值,其他条件与实验1相同,然后再次测试。程序如下:

sx126x_set_lora_symb_nb_timeout(context, 200 ); // 204ms
sx126x_set_rx( context, 100 );	// 100ms

通过逻辑分析仪抓取中断引脚DIO上的波形,每隔100ms产生一次RX timeout中断,如下图:
实验2-DIO波形

2.1.3 结论

SetRx和SetLoRaSymbNumTimeout分别设定了一个timeout值,哪个值,就以哪个值来产生timeout中断。
另外有一个小结论,就是SetLoRaSymbNumTimeout寄存器只需要在初始化的时候设置一遍即可,不用每产生一次timeout中断就设置一次。

2.2 SetRx的single与continuous模式和SetLoRaSymbNumTimeout

Q:如果使用SetRx的single或者continuous模式,并设置寄存器SetLoRaSymbNumTimeout,那么还会产生RX timeout中断吗?

2.2.1 实验1

使用RX的single模式,同时设置寄存器SetLoRaSymbNumTimeout。参数不变,使用SF7,BW125,单个symbol时间为1.02ms。将SymbNum设为200,换算成时间为200 * 1.02ms = 204ms。

sx126x_set_lora_symb_nb_timeout(context, 200 ); // 204ms
sx126x_set_rx( context, 0 );	// single mode

通过逻辑分析仪抓取中断引脚DIO上的波形,如下图,是每隔205ms产生一次timeout中断的。
DIO波形

2.2.2 实验2

使用RX的continuous模式,同时设置寄存器SetLoRaSymbNumTimeout。

sx126x_set_lora_symb_nb_timeout(context, 200 ); // 204ms
// continuous mode,但只在初始化时设置一次,正常来讲radio会一直处于RX状态
sx126x_set_rx_with_timeout_in_rtc_step(context, 0xFFFFFF);	

实验现象是产生了一次timeout中断后,就停止运行了,猜测原因是radio此时已经由RX转到standby模式了,所以需要再进行一次实验。

2.2.3 实验3

将continuous模式当作timeout模式看待,在RX Timeout中断回调函数中重新设置RX,程序如下:

// continuous mode,在每次timeout中断函数中重设RX
sx126x_set_rx_with_timeout_in_rtc_step(context, 0xFFFFFF);	

实验现象与实验1一致,每隔205ms产生一次timeout中断。

3 小结

  1. 简单理解,只要设置了寄存器SetLoRaSymbNumTimeout,RX由三种模式single、timeout和continuous变成了一种,即timeout模式。
  2. 当同时设置了寄存器SetLoRaSymbNumTimeout和SetRx的timeout模式,哪个设置的时间小,就以哪个时间产生timeout中断。
  3. datasheet中描述寄存器SetLoRaSymbNumTimeout的作用时,有这么一句话 … will wait for a total of SymbNum LoRa symbol to validate…。我分两种情况解析这句话,第一种假设当LoRa芯片检测到LoRa信号时,并且小于设定的SymbNum个数,那radio也会立马从检测模式进入信号解调模式。第二种是假设当LoRa芯片检测时间达到了设定的SymbNum个数时,还是没有检测到LoRa信号,就会产生timeout中断,那这与RX的timeout模式又没什么区别。所以综上而得出的结论是不建议使用寄存器SetLoRaSymbNumTimeout

这篇关于【LoRa】SetLoRaSymbNumTimeout寄存器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

寄存器B

MCS-51单片机的中央处理器包含运算部件和控制部件两部分。         1. 运算部件         运算部件以算术逻辑运算单元ALU为核心,包含累加器ACC、B寄存器、暂存器、标志寄存器PSW等许多部件,它能实现算术运算、逻辑运算、位运算、数据传输等处理。         算术逻辑运算单元ALU是一个8位的运算器,它不仅可以完成8位二进制数据加、减、乘、除等基本的算

浅谈SOC片上系统LoRa-STM32WLE5数据安全防御机制

随着物联网设备的普及,数以亿计的设备正在通过无线网络进行通信,传输大量的敏感数据。这种大规模的设备联网带来了便捷性,但也伴随着巨大的安全风险。SoC片上系统通过将无线通信、处理器、存储和安全机制集成在同一个芯片中,为物联网应用提供了高度集成的解决方案。这种设计大大简化了硬件开发流程,同时提高了设备的整体性能和安全性。SoC不仅能够满足长距离、低功耗的无线通信需求,还能通过先进的加密技术,确保数据在

士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

目录 前言: 士兰微电子介绍 士兰微 SC32F5432介绍 士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式 开漏输出模式 TTL输入模式 前言: 下面是对我在工作时公司所使用的一款国产芯片(士兰微 SC32F5432)开发过程所遇到的一些问题的记录与解决。 士兰微电子介绍 杭州士兰微电子股份有限公司(600460)坐落于杭州

笔记 14 : 彭老师课本第 8 章, UART : 寄存器介绍 ,

(99) 继续介绍 uart 的关于通道的 一整套 寄存器, UCON 等: ++ 接着介绍寄存器 UTRSTAT : ++ 接着介绍读写数据的寄存器: ++ 设置 uart 的波特率,有关的寄存器: ++ (100) (101) 谢谢

AUXR-特殊功能寄存器(只写)

AUXR : Auxiliary Register(只写) MnemonicAddbitB7B6B5B4B3B2B1B0Reset ValueAUXR8EHname -  -  - - - -EXTRAMALEOFFxxxx,xx00 禁止ALE信号输出(应用示例供参考,C语言):sfr AUXR = 0x8e; //声明AUXR寄存器的地址AUXR = 0x01;//ALEOFF位置1

基于OGC300工业级LORA网关与OM201L数传终端的化工厂人员定位系统解决方案

化工行业作为高风险的行业之一,其安全管理一直备受关注。化工生产过程中涉及到各种危险品和复杂的工艺,一旦发生事故,往往会造成严重的人员伤亡和财产损失。因此,化工企业急需一套可靠的安全管理系统来监测安全隐患、预防事故发生。 在这一背景下,基于先进的LORA自组网技术、BLE高精度定位技术、5G通讯技术、AI图像智能识别技术、云计算与数字孪生技术等前沿技术,北京东用科技提出了一套全新的化工厂人

Flux持续火爆,这些LoRA、ControlNet、工作流你值得拥有

大家好,我是每天分享AI应用的萤火君! Flux自发布以来,受到了广大AI绘画爱好者的一致好评,远远的将SD3甩在了脑后,其出图质量媲美Midjourney。而且Flux迭代迅速,接连发布了Flux.1的开发模型和个人模型,其Lora模型、ControlNet模型也迅速推出,社区创作热情高涨。 为了让大家对Flux有一个全面的认识,本文将介绍下Flux基础模型、LoRA模型,以及Control

【LoRa】打开硬件CRC校验功能,但没有起作用?

目录 1 前言2 解析3 结论 1 前言 在使用LoRa模式(非FSK)时,可能遇到明明RX端已经打开CRC校验了,为什么payload错误了,没有报CRC error中断?本章就这个问题展开讲讲,如何正确使用芯片的硬件CRC校验,并延申到CR和payload length的使用。 2 解析 确实存在前言中的现象,前提是使用的explicit header模式,即有heade

FPGA编程基础(一)--参数传递与寄存器使用

一、参数映射 参数映射的功能就是实现参数化元件。所谓的”参数化元件“就是指元件的某些参数是可调的,通过调整这些参数从而可实现一类结构类似而功能不同的电路。在应用中,很多电路都可采用参数映射来达到统一设计,如计数器、分频器、不同位宽的加法器以及不同刷新频率的VGA视频接口驱动电路等。 参数传递 参数传递就是在编译时对参数重新赋值而改变其值。传递的参数是子模块中定义的parameter,其传递方

如何使用树莓派构建 LoRa 网关?

顾名思义,远距离广域网或LoRaWAN技术广泛用于物联网(IoT)中的远距离、低功耗通信。 在本文中,我们将指导您如何将SX130x 868M LoRaWAN网关模块通过硬件附加在顶部(HAT)的方式连接到Raspberry Pi4。此设置创建了一个LoRaWAN网关,允许Raspberry Pi(RPi)与启用LoRaWAN的设备进行通信。 所需材料: Raspberry Pi 4(推荐