在LoRa终端与LoRa网关和服务器联调之前,有时候需要通过相对简单的PingPong终端序给Class A/B/C类型的终端发送数据,以验证Class A/B/C终端可以正常收发数据包。然而原生提供的 PingPong与Class A/B/C类型终端之间是无法发送数据帧的。

经过一番深入调研,发现主要有如下的几个原因,导致这两种应用程序之间无法发送物理层的帧,解决了这些问题,会对LoRa的射频芯片的物理层和相应的软件驱动程序有一个更加深入的理解。

先总结如下:

一. RF层

原因1:频点

问题原因:

PingPoing测试应用程序采用的TDD的模式,上下行采用了相同的频点,如470300000。

Class A/B/C的470频带,采用是的FDD模式,上行的发送频率是470300000,而下行的接收频点为:

CN470_FIRST_RX1_CHANNEL 500300000
CN470_RX_WND_2_FREQ        505300000

解决办法:

  • 修改PingPoing的接收和发送频点到500300000

#define RF_FREQUENCY                                500300000 //470300000 // Hz

原因2:频点变化

PingPoing采用单一频点,且采用了相同的频点:470300000

CN470 Band,26M主频时,上行发送有连续的96个频点,下行接收有连续的48个频点。

因此,因此PingPoing的发送的数据,Class A/B/C类型终端肯定收不到。

解决办法:

固定化Class A/B/C类型终端的接收频点:
bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate )

//frequency = CN470_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 48 ) * CN470_STEPWIDTH_RX1_CHANNEL;

frequency = CN470_FIRST_RX1_CHANNEL + CN470_STEPWIDTH_RX1_CHANNEL;

二. 调制解调层

三. LoRa物理层

原因1: LoRa同步字

PingPong终端程序使用了默认的LoRa同步字:,属于private network的配置。

#define LORA_MAC_PRIVATE_SYNCWORD 0x1424

LoRaWAN的终端,采用的是公网的配置:

#define LORA_MAC_PUBLIC_SYNCWORD  0x3444

解决方法:

在main()函数中增加对public network下同步字的设定,代替默认的配置。

Radio.SetPublicNetwork(1);

原因2: IQ翻转

PingPong终端程序的IQ翻转未使能。

ClassA-C终端的的IQ翻转使能。

解决办法:

PingPong终端程序的IQ翻转使能。

#define LORA_IQ_INVERSION_FLAG               1  // from 0 t0 1

Radio.SetTxConfig(
                                    MODEM_LORA,
                                    TX_OUTPUT_POWER,
                                    LORA_FDEV_NA,
                                    LORA_BANDWIDTH,
                                    LORA_SPREADING_FACTOR,
                                    LORA_CODINGRATE,
                                    LORA_PHY_PREAMBLE_LENGTH,
                                    LORA_PHY_PAYLOAD_LENGTH_FLAG,
                                    LORA_PHY_PAYLOAD_CRC_FLAG,
                                    LORA_FREQ_HOP_FLAG,
                                    LORA_FREQ_HOP_PERIOD,
                                    LORA_IQ_INVERSION_FLAG,
                                    TX_TIMEOUT_VALUE);

四. 数据包的收发控制

原因1:发送与接收窗口不对齐

PingPong终端程序定时发送,如5s。

ClassA-C有一定的接收窗口,即使classC, 其实也并不是一直设置在Rx模式。

解决办法:

case DEVICE_STATE_CYCLE:
            {
                printf("state: DEVICE_STATE_CYCLE=%d\r\n", DeviceState);

printf("Turn Rx on\r\n");
                Radio.Rx(0);  //确保class 终端,出发发送外,其他时间一直处于接收状态。

DeviceState = DEVICE_STATE_SLEEP;

// Schedule next packet transmission
                TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime );
                TimerStart( &TxNextPacketTimer );
                break;
            }


后记:

(1)解决了上述问题,LoRaWAN PingPong终端就可以向Class A/B/C类型终端发送数据。

(2)数据的发送只停留在物理层的值,并没有在MAC层进行加密和解密。因此只限于物理层之间的通信

物联网LoRa系列-28:LoRaWAN PingPong终端与Class A/B/C类型终端不能互通的原因与解决办法相关推荐

  1. 物联网LoRa系列-32:LoRaWAN无线智能水表如何进行水量数据采集?脉冲采集、双干簧管、磁性元件、光电转换、霍尔元件

    目录 1. 无线远传智能水表概述 2. 常用智能水表的发展与类型 3. 智能水表数据的采集的基本原理 3.1 光电转换型原理 3.2 双干簧管数据采集的基本原理 3.3 霍尔元件型原理 4. 干簧管脉 ...

  2. 物联网LoRa系列-24:LoRa终端--PingPong应用程序常见问题解析

    前言: 前面对LoRa终端的各种技术的拆解, 从技术的内容角度看,主要是包括LoRa的SX1261/SX1262终端的硬件设计.SX1261/SX1262芯片资料的解读.以及PingPong应用程序的 ...

  3. 物联网LoRa系列-30:LoRaWAN A类/C类终端的载波信道资源与时间资源上下行调度算法

    前言: 本文将从频率.时间这两个资源的角度,来剖析LoRaWAN A类/C类终端的信道选择算法与代码实现示例. 不同的地区的频段,有不同的规范要求,算法有所差异,本文将以中国区的470M频段为例进行拆 ...

  4. 物联网LoRa系列-11:LoRa终端--基于物理层协议的PingPong应用程序的软件架构

    至此,我们已经搭建好LoRa终端的软硬件开发环境,接下来,将解构和实现LoRa终端的应用程序. LoRa终端的应用程序,(1)可以直接基于LoRa的物理层协议(LoRa芯片实现):(2)也可以基于Lo ...

  5. 物联网LoRa系列-15:图解、详解无线终端的天线对无线电磁波的发送与接收

    前言: 任何一个无线射频设备,都离不开天线,它负责发送和接收来自空中的电磁辐射,或者说电磁波. 在发送方向,天线能够把射频设备的产生的高频率的电流信号,转换电磁波,并发送到空气中进行传播. 在接收方向 ...

  6. 关于三星某些系列笔记本电脑无法安装Windows10的原因及解决办法

    最近,微软发布了Windows10的正式版,然而在之前的预览版和此次的正式版上都存在一个问题就是无法在三星RV411,R429,R428,Q430等系列笔记本上安装(目前个人倾向把此问题的责任归咎于微 ...

  7. 物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构

    前言: 本文是在了解LoRoWAN协议的基础之上,对LoRa Class A/B/C终端的通用的软件实现架构进行拆解. 从软件架构的角度拆解LoRa Class A/B/C终端的软件功能实体之间的关系 ...

  8. 物联网LoRa系列-4:LoRa终端射频芯片SX1268、SX1278、SX1262对比与选择

    1. 产品简述 LoRa的射频芯片主要分两大类,一类是LoRa终端射频芯片,另一类是LoRa基站/网关射频芯片. LoRa终端射频芯片目前有三款:SX1278.SX12786.SX1262: LoRa ...

  9. 物联网LoRa系列-12:LoRa终端--数据发送和接收的整个过程

    在上文<全面拆解和构建5G物联网-11:LoRa终端--基于物理层协议的PingPong应用程序的软件架构>中,我们已经通过开发板提供商提供的软件工程文件,在两个LoRa节点之间进行了点对 ...

最新文章

  1. 无限极:对虚假宣传行为查处不力 推十条整改措施
  2. 麦肯锡全球调研160个案例,发布5个行业34个AI应用场景
  3. OpenStack 虚拟机启动流程 UML 分析(内含 UML 源码)
  4. 深度:应用安全是信息安全防护的短板
  5. (十)更快的排序算法(归并、快排、基数)
  6. webscoket绑定php uid,Think-Swoole之WebSocket客户端消息解析与使用SocketIO处理用户UID与fd关联...
  7. 编辑器source insight,sublime,编码 utf-8和 GB2312
  8. android contacts电话查询头像,android透过查询电话号码获取联系人头像
  9. python股票网格交易法详解_干货 | 浅谈网格交易法
  10. 数据结构与算法读书笔记2----C# 选择排序
  11. linux初学者-DNS集群篇
  12. Android官方源码资料博客
  13. 【FlinkX】两个issue分析:reader和writer的通道数不一致+获取JobId
  14. littlevgl技术参考手册_树莓派littlevGL系列教程:littlevGL简单了解
  15. 如何检查您附近(或任何地方)的空气质量
  16. ExoPlayer修改播放器UI
  17. php如何访问web api,如何在PHP中创建Web API服务?
  18. ipad如何分屏_基于ipad的生态型无纸化学习说明书
  19. linux的地址随机化ASLR,[翻译]Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)...
  20. 微信小程序云开发简单入门教程

热门文章

  1. Python关于def函数的介绍
  2. 数据仓库面试知识总结
  3. 大数据常见面试题之数据仓库
  4. Vue2组件封装 Vue组件封装
  5. Mac 安装CocoaPods报错解决 :Ignoring ffi-1.13.1 because its extensions are not built.
  6. 定投的基金什么时候赎回划算呢
  7. iris数据集及简介
  8. OpenGL的glViewPort窗口设置函数实现分屏
  9. Python frozenset() 函数的使用与作用
  10. WAF详解及WAF绕过