物联网LoRa系列-21:LoRa终端--射频芯片SX1261 SX1262的FSK调制解调器与配置

2023-11-11

目录:

 

1. SX1261/2功能模块

2. 调制技术的基本原理

3. FSK调制技术的基本原理

4. SX1261/2的FSK调制器主要的性能参数

5. SX1261/2的FSK调制器主要寄存器设置


1. SX1261/2功能模块:

MCU与SX1261/2物理上通过两组接口进行通信:

(1)SPI总线

(2)GPIO中断等控制总线

SX1261/2内部通过两种方式给MCU提供服务

(1)寄存器,主要用于MCU控制和配置射频芯片SX1261/2,并且通过寄存器获取SX1261/2内部状态。

(2)Data buffer:用于MCU接收和发送数据净荷,data buffer中存放的是数据净荷,物理层帧的头信息在寄存器中。

功能模块:

(1)Data buffer:用于存放接收和发送数据的净荷。

(2)Protocol Engine:

在发送方向:会根据选择的调制解调器的类型,从data buffer读取数据净荷,与寄存器中的物理层的帧头配置,共同组装成物理层的帧结构,并添加CRC到物理帧的尾部,然后进行数据的白噪化(Whitening)处理,把二进制数据流送给选择的调制解调器。

在接收方向:会根据选择的调制解调器的类型,去表数据的白噪化处理(Whitening),然后识别物理层的帧结构,提取帧头信息和数据净荷信息,并进行CRC校验检查,最后把帧头信息存放到寄存器中,把数据净荷存放到Data buffer中。

白噪化处理(Whitening)实际是一种物理层的编码。

因此物理层的帧结构定义以及物理层的组帧和去帧s是Protocol Engine最重要的功能。

(3)FSK Modem和LoRa Modem调制解调器

在发送方向:调制解调器负责把物理层帧的二进制数据流,调制到高频的载波信号上,变成模拟的电信号。

在接收方向:调制解调器从高频的载波电信号上,把调制的二进制数据给卸载下来,变成二进制的数据流。

这是调制解调器的最重要的功能。


2. 调制技术的基本原理

调制:通信系统中发送端的原始电信号通常具有频率很低的频谱分量或数字信号,一般不适宜直接在无线信道中进行传输。因此,通常需要将原始信号变换成频带适合信道传输的高频信号,这一过程被称为调制。

解调: 正好相反,在接收端将收到的数字频带信号还原成数字基带信号。

在这里,

数字基带信号:就是Protocol Engine与FSK调制之间的经过白造化处理后的物理层帧的二进制数据流。

载波信号:433M或890M的正弦波信号。

数字频带信号:就是载波信号,叠加了数字基带信号之后的信号,这个叠加的过程就是调制,去叠加的过程就是解调。

调制和解调技术有多种,这里要探讨的就是SX1261/2支持的FSK调制技术。


3. FSK调制技术的基本原理

(1)FSK的基本概念

FSK(Frequency-shift keying)是信息传输中使用得较早的一种调制方式。

它的主要优点是: 实现起来较容易,抗噪声与抗衰减的性能较好。在中低速数据传输中得到了广泛的应用。

2-FSK(Frequency Shift Keying)为二进制数字频率调制(二进制频移键控),用载波的频率来传送数字信息,即用所传送的数字信息(0或1)控制载波的频率。

2-FSK信号便是符号“0”对应于载频 f1,而符号“1”对应于载频 f2(与 f1 不同的另一载频)的已调波形,而且 f1 与 f2 之间的改变是瞬间的。

传“0”信号时,发送频率为 f1 的载波;

传“1”信号时,发送频率为 f2的载波。

可见,FSK 是用不同频率的载波来传递数字消息的。

(2)2-FSK的示意图:

在上图,有两个频率的载波信号来标识二进制的数据

当传送的载波信号是f2频率时,表示传送的二进制数据是0.

当传送的载波信号是f1频率时,表示传送的二进制数据是1.

(3) GFSK

高斯频移键控GFSK - Gauss frequency Shift Keying ,是在调制之前通过一个高斯低通滤波器来限制信号的频谱宽度。GFSK 高斯频移键控调制是把输入数据经高斯低通滤波器预调制滤波后,再进行FSK调制的数字调制方式。

SX1261/2采用的GFSK。

子所以,先采用高斯低通滤波器来限制信号的频谱宽度,这是因为二进制是方波脉冲信号,内含了非常高的高频分量,不利于通过SX1261/2支持的载波频率进行传送。

所谓低通滤波器,就是允许低于某个频率门限的信号分量通过,抑制掉高于某个频率分量的所以高频分量的信号。

(4)2-FSK信号发送调制原理

上图中,用二进制数据控制开关的开合

在实际应用中,并不是直接用0和1的高电平控制载波f1和f2的开关,而是用代表0和1的基带信号,去控制载波f1和f2的开关。

在SX1261 1262中是高斯滤波后得到的基带信号,而不是直接方波信号。

上述开关信号切换的快慢,就反应了载波调制的比特率。

考虑到实际系统中0和1并非均匀变化,有可能连续的传送1或连续的传送0,因此f1和f2就需要一定的带宽,承载各自频率下所支持的数据波特率。

(5)2-FSK 信号接收解调原理

w1和w2滤波器: 过滤出f1和f2两个高频信号,

包络检波器:通过包络检波器,去掉高频信号,得到代表0和1的基带信号的波形。

抽样判决器:判决器通过基带信号的波形,判定是数字0还是1.

w1和w2滤波器: 过滤出f1和f2两个高频信号,

乘法器:通过相乘法,去掉高频信号w1或w2,得到代表0和1的基带信号的波形。

抽样判决器:判决器通过基带信号的波形,判定是数字0还是1.

注意:

这里的带宽滤波器的大小,取决与基带信号的带宽。

(6)二进制数据的bit率与载波带宽之间的关系

需要传送的比特率流越大,载波信号的带宽就越大。

这里涉及到深层次的问题:就是如何用模拟信号表示一个方波信号的比例流。即数字方波信号的基带表示!!

这就是傅里叶变换:

方波信号的比特率越高,为了恢复方波信号所生成的基带信号所需要的谐波分量就越多,就带宽越大。

这就是bit率与基带信号带宽之间的定性关系!!


4. SX1261/2常见的FSK的性能参数:

(1)FSK BER = 0.1%:  比特出错概率

(2)2-level FSK modulation without pre-filtering: 2 FSK调制

(3)BR(bit rate 比特率):The bit rate range is from 600 b/s up to 300 kb/s with a default value at 4.8 kb/s。

通信速率指的信息bit位在空中传输的速率,其单位是bps(bits per second ),其数值等于数字调制中的调制速率。

该参数也是客户应用中最关心的参数之一,因为其直接影响通信时间。

但从射频性能来看,速率的选择又会影响接收灵敏度的体现,故而会间接影响通信距离。

(4)FDA = ± 5 kHz: FrequencyDeviation(频率偏差)

在FSK信号调制中,信号‘0’和信号‘1’是用不同的频率来表征。

信号‘1’的频率与中心频率(或者中心频率与信号‘0’的频率)之间的差值即为FSK调制信号的Frequency Deviation(简称Fdev),其单位是Hz或KHz。

下图是FSK调制信号频谱图

图中MARK1是信号‘0’,

MARK2是信号‘1’,

MARK3是载波频率,

三个频率关系:Fdev=Fmark3-Fmark1 或 Fdev=Fmark2-Fmark3。

(5)BW_F = 20 kHz double-sided: 接收带宽。

是指承载在高频信号上的基带信号的带宽。其决定了允许进入接收电路的信号的带宽,此值需要根据以上两个参数取值来决定。在上图中,就是f1和f2信号的带宽。

接收带宽取值过大,则会引入过多噪声干扰信号影响灵敏度性能;

如果取值过小,则会无法接收频偏的射频信号,故需要做相应的权衡。

(6)性能参数的关系

调制的二进制比特率越大,所需要的载波的带宽就越大,同时代表0和1的F1和F2离中心频点的距离就越越远,编码F1和F2的频谱重叠,相互干扰。


5. SX1261/2 FSK参数设置

(1)SetPacketType(...):设置调制解调器的类型


(2)SetRfFrequency命令:设置载波频率

该公式的含义是:

FXTAL:静态震荡器的频率,在这里是32M = 32 * 10^6.

2^25是对静态震荡器32M进行分频的分频因子,相除以后得到的结果,表明每个二进制比特所代表的频率粒度,或者载波频率设置的步长。

RF_frefq:是期望的频率,比如433M或470M或其他数值。

RF_requency:期望的载波频率所对应的寄存器的值。


(3)设置调制解调器参数: SetModulationParams(...).

设置波特率

设置带宽

设置FDA

FSK上述三个参数的制约关系:


(4)设置FSK物理层帧的参数:SetPacketParams

发送的物理层帧的前导字节的长度:(每个字节的前导的模式为0x55,即0x0101 01010)

接收的物理帧的前导字节的长度:

同步字的长度:

同步至的模式:

节点的地址的控制开关:

节点地址是用来过滤的,因此该参数用于接受一侧的过滤,主要用于点对多点的通信模式,不能用于点对点通信。

在这种模式下,每个节点只能接收地址域与自己一致的数据包。

允许接受的广播地址:

设置数据包的长度类型:定长或变长,如果接收和发送方采用定长模式,则在数据包中就不包含长度信息,节省了数据量。

payload的长度:发送payload长度,以及接收的最大数据的payload的长度。

CRC类型

白噪声编解码使能:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物联网LoRa系列-21:LoRa终端--射频芯片SX1261 SX1262的FSK调制解调器与配置 的相关文章

随机推荐

  • CTF_ctfshow_meng新_web1-web24

    打开靶机 发现包含有个config php文件 打开进去没有数据 所以直接开始代码审计吧 有个变量为id 参数必须为1000才能获得flag 但id gt 999直接返回退出了 尝试一下sql注入 整形注入 看一下回显点 回显点为三 版本
  • LTV-MPC

    For compatibility with the adaptive mode the plant model specified in your controller object must be LTI state space OK
  • java中文档注释的标记是_javadoc中文档注释标记的使用

    javadoc中文档注释标记的使用 author 标记 author指定一个类的作者 它的语法如下 author description 其中 description通常是编写这个类的作者名字 标记 author只能用在类的文档中 在执行j
  • PCL 改进体素滤波

    一 改进简介 PCL的VoxelGrid类是通过输入的点云数据创建一个三维体素栅格 用每个体素内用体素中所有点的重心来近似显示体素中的其他点 这样该体素内所有点都用一个重心点来最终表示 该重心点不一定就是原始点云中的点 有失原始点云的细小特
  • 用c语言浮点输出时,如何让小数点后没用的0不显示

    动态控制浮点数小数位数 2020年7月29日 存在问题 C语言把浮点数直接通过sprintf函数保存在字符数组中 末尾的0显得很多余 想办法把末尾的0去掉 解决问题 在打印时 通过格式控制输出 一般情况使用 f即可输出浮点数 我们通过 f
  • linux查看3306是哪个进程占用,linux查看端口占用

    发表于 2019 08 18 21 00 36 by 月小升 一 例子 lsof i 7000 COMMAND PID USER FD TYPE DEVICE SIZE OFF NODE NAME frps 1249 root 3u IPv
  • 二叉树代码

    1 普通二叉树的构建 构建结点以及搜索与删除的方法 public class Node private int no private String name private Node left private Node right priv
  • C++ srand()只能调用一次,否则rand()每次返回相同值

    C srand 只能调用一次 否则rand 每次返回相同值 面试的时候写一个洗牌算法 结果遇到这个问题坑死我了 幸运的是面试官也不太看得出来问题出在哪 他主攻Java 所以给了我足够时间去调试 问题描述 自己创作的洗牌算法 include
  • npm的一些常用命令和被墙问题的解决

    npm node package manager 1 npm网站 npmjs com 2 npm命令行工具 安装 node同时也就已经安装了npm 1 查询npm版本号 在cmd中输入npm v或者npm version即可 2 升级npm
  • java select 函数_五种I/O模型和select函数简介

    一 五种I O模型 1 阻塞I O 我们在前面所说的I O模型都是阻塞I O 即调用recv系统调用 如果没有数据则阻塞等待 当数据到来则将数据从内核空间 套接口缓冲区 拷贝到用户空间 recv函数提供的buf 然后recv返回 进行数据处
  • 策略模式(Strategy)

    设计模式之策略模式 策略模式的主要作用是 整体地替换算法 无论什么程序 其目的都是解决问题 而为了解决问题 我们需要编写特定的算法 使用Strategy模式可以整体地替换算法的实现部分 能够整体地替换算法 能让我们轻松地以不同的算法解决同一
  • win10添加环境变量后没用_教你Win10系统配置的环境变量未生效的解决方法

    教你Win10系统配置的环境变量未生效的解决方法 一些Win10小伙伴经常遇到配置了环境变量无法生效的情况 那么Win10系统安装了jdk 修改环境变量配置不生效要如何解决呢 有遇到此类问题的小伙伴就跟着Win10专业版官网小编一起来看看W
  • 协同过滤推荐算法

    Collaborative Filtering Recommendation 转自 http www cnblogs com zhangchaoyang articles 2664366 html 另 一定要看文献 协同过滤推荐算法综述 马
  • gazebo崩溃gazebo-2 process has died exit code 139

    错误信息 gazebo 2 process has died pid 7605 exit code 139 cmd opt ros kinetic lib gazebo ros gzserver e ode Ubuntu 16 04 on
  • JUC常用到的类

    JUC java util concurrent 并发包中包含了许多并发编程中需要用到的类 锁 如ReentratLock ReadWriteLock ReentrantLock重入锁 可以替代synchronized使用 并且有更多强大的
  • 小白,想入门程序员,应该从什么开始学,顺序是什么?

    首先 你需要选择一门自己感兴趣的编程语言 现在常见的编程语言有 1 C C 属于大多数情况下能接触到的相对基础的编程语言了 优势是基本掌握以后面对其他语言均可以 无压力 坏处是学习起来非常的困难 需要系统性的了解非常多知识点 且耗时一般较长
  • 锁(Lock)、内存屏障(Memory barrier)与 缓存一致性( Cache coherence)

    文章目录 前言 Optimization Barrier Memory barrier Cache coherence 总结 参考资料 前言 在应用层 关于锁的使用大家应该都很熟悉了 作用就是为了保护共享变量不被同时操作而导致无法预测的情况
  • 01-----在Ubuntu16.04上搭建git服务器

    一 在Ubuntu16 04上搭建git服务器的步骤 1 下载git apt get install y git 注 上面可能下载失败 更新一下包即可 然后重新下载 apt get update apt get install y git
  • fullCalendar日程表在Vue项目中的应用

    fullCalendar日程表在Vue项目中的应用 fullCalendar相关API 使用fullCalendar插件在项目中实现日程排版 支持天 月日程转换 自定义事件 页面布局 通过按钮切换天与月视图的转换 天视图回显具体的时分排版项
  • 物联网LoRa系列-21:LoRa终端--射频芯片SX1261 SX1262的FSK调制解调器与配置

    目录 1 SX1261 2功能模块 2 调制技术的基本原理 3 FSK调制技术的基本原理 4 SX1261 2的FSK调制器主要的性能参数 5 SX1261 2的FSK调制器主要寄存器设置 1 SX1261 2功能模块 MCU与SX1261