三、Introduction on LoRaWAN options

本文件描述了一种用于可为移动的或固定在一个固定位置的电池供电的终端设备而优化的LoRaWAN™网络协议。LORA™是一个由Semtech公司开发的长距离低功耗低通信速率无线调制应用。设备实现多类包括CLASSA在内的通信模式。LoRaWAN网络通常部署成星型网络拓扑结构, 网关中继终端及后端网络中央服务器的数据。网关通过标准IP协议连接至网络服务器,而终端采用单跳网络LORA™或FSK与一个或多个网关通信。所有通信一般是双向的,当然上行通信预计将是主要的流量。各个终端设备和网关的通信分散在不同的频率信道和通信速率之中。通信速率将根据通信范围和消息的持续时间取一个折中值,以不同的速率通信实现互不干扰。Lora的通信速率范围从0.3kbps到50kbps。为了最大限度的提高终端设备的电池寿命和网络容量,LoRa基础网络能管理通信速率和每个终端设备的RF输出,也就是说,具备自适应通信速率(ADR)功能。只要遵守以下规则,终端设备可能用任何可用的信道、任何可用的通信速率通信:

  • [x] 1)终端的每次通信以伪随机的方式改变通信信道。产生的频率多样性使系统在干扰上更具鲁棒性。
  • [x] 2)终端遵守该子带规定的最大发送占空比和地方法规。
  • [x] 3)终端遵守该子带规定的最大发射持续时间(或滞留时间)和地方法规。

所有LoRaWAN设备至少实现了CLASSA的功能。此外,他们还可能实现了本文档描述的CLASS B,CLASS C或被其他人自定义的功能。
所有多字节采用的都是小端模式(little endian)和EUI是64位整数,发送为小端模式。

LoRaWAN CLASSA CLASSB CLASSC 区分

双向终端设备(CLASSA)

A类的终端设备允许双向通信,每一个终端设备的上行传输,跟随两个短的下行接收窗口。发送时隙的调度基于终端设备自己的通信需求,该时隙是基于随机时间基础(ALOHA类型的协议的)上的很小变动。CLASSA适用于超低功耗终端系统的应用,该类应用只要求终端发送上行传输之后,服务端再下行传输至终端。从服务端在任何其他时间下行链路通信将必须等待直到下一个预定的上行链路通信(即每次只能先上行数据才能收到下行数据)。

带接收时隙的双向终端设备(CLASSB)

B类的终端设备允许更多的接收时隙。除A类随机接收窗口,B类设备中在计划的时间打开额外的接收窗口。为了使终端设备打开它的接收窗口,在计划的时间中接收到来自网关的同步信标(Beacon帧)。这允许服务端知道什么时候终端正在侦听信号。

最大接收时隙的双向终端设备(CLASSC)

C类有近连续打开接收窗口的终端设备,只有发射时才关闭接收。CLASSC终端设备将比CLASS A、CLASS B功耗更大,但CLASS C终端设备的通信延迟最低。

LoRa调制解调器的链路控制

通过配置寄存器RegOpMode,就能将FSK调制解调器切换成LoRaTM调制解调器,切换操作可以在飞行模式(睡眠模式)下进行;LoRa调制解调器采用专有的调制和解调程序,将扩频调制与循环纠错编码技术结合起来,从而提高了链路预算和抗干扰性。LoRa调制解调器的配置图:

LoRa调制解调器拥有独立的双端口数据缓冲FIFO,而且在所有操作模式下均可通过SPI接口访问该通道。选定LoRa调制模式之后,配置寄存器中SX1276/77/78的映射关系发生变化。

RegOpMode寄存器

name bits description
LongRangeMode 7bit 0:FSK/OOK模式 1:LoRa模式 该位仅可在睡眠模式下修改。
AccessSharedReg 6bit 设置该位,允许在LoRa 模式下访问FSK 寄存器页面
reserved 5~4bits 预留
LowFrequencyModeOn 3bit 访问低频模式寄存器(从地址0x61开始)0:高频 1:低频
Mode 2~0bits 收发器模式(睡眠、待机等)

RegOpMode.LongRangeMode进入Lora模式

#define OPMODE_LORA      0x80     //LoRa模式,该位仅可在睡眠模式下修改。
// 进入Lora模式的操作
static void opmodeLora() {u1_t u = OPMODE_LORA;
#ifdef CFG_sx1276_radiou |= 0x8;   // TBD: sx1276 high freq
#endifwriteReg(RegOpMode, u);
}

RegOpMode.AccessSharedReg

一般情况下仅当器件设置为 LoRa 模式时,才能访问到 LoRa 寄存器(同理, FSK 寄存器仅在 FSK 模式下才能访问);但是如果设置了AccessSharedReg位,则允许在LoRa模式下访问位于地址空间(0x0D:0x3F)的 FSK 寄存器页面 。
该位在器件处于睡眠模式时工作。为确保之后能够正常访问 LoRa 寄存器,完成相关设置后清零该位。

RegOpMode.AccessSharedReg=0:访问LoRa寄存器页面0x0D:0x3F
RegOpMode.AccessSharedReg=1:(在LoRa模式下)访问FSK寄存器页面0x0D:0x3F

RegOpMode.mode(2~0bits) 进入操作模式

#define OPMODE_SLEEP     0x00     //000:睡眠模式
#define OPMODE_STANDBY   0x01     //001:待机模式
#define OPMODE_FSTX      0x02     //010:频率合成发送(FSTx)
#define OPMODE_TX        0x03     //011:发送(Tx)
#define OPMODE_FSRX      0x04     //100:频率合成接收(FSRx)
#define OPMODE_RX        0x05     //101:持续接收(RXCONTINUOUS)
#define OPMODE_RX_SINGLE 0x06     //110:单次接收(RXSINGLE)
#define OPMODE_CAD       0x07     //111:信道活动检测(CAD)
// 操作进入相应模式
static void opmode (u1_t mode) {writeReg(RegOpMode, (readReg(RegOpMode) & ~OPMODE_MASK) | mode);
}
opmode(OPMODE_SLEEP);
opmode(OPMODE_STANDBY);
// ...

扩频因子(SF值)、调制带宽(BW)、纠错编码率(CR)

针对特定的应用,可以通过调整 扩频因子(SF值)、调制带宽(BW)及纠错编码率(CR) 这三个关键设计参数对LoRa调制解技术进行优化。对上述某个或多个参数进行调整之后,可实现在链路预算、 抗干扰性、频谱占用度及标称数据速率之间达到平衡。

扩频因子

LoRaTM扩频调制技术采用多个信息码片来代表有效负载信息的每个位。扩频信息的发送速度称为符号速率(Rs),而码片速率与标称符号速率之间的比值即为扩频因子,其表示每个信息位发送的符号数量。

扩频因子取值

RegModulationCfg2.SF 扩频因子(码片/符号) LoRa解调器 信噪比(SNR)
6 64 -5 dB
7 128 -7.5dB
8 256 -10 dB
9 512 -12.5 dB
10 1024 -15 dB
11 2048 -17.5 dB
12 4096 -20 dB

因为不同扩频因子(SpreadingFactor)之间为正交关系,因此必须提前获知链路发
送端和接收端的扩频因子。另外,还必须获知接收机输入端的信噪比。在负信噪比条件下信号也能正常接收, 这改善了LoRa接收机的灵敏度、链路预算及覆盖范围。
扩频因子寄存器取值在RegModemConfig2寄存器中。

RegModemConfig2寄存器

  • [x] RegModemConfig2.SpreadingFactor 取值(SF值):
#define SX1272_MC2_SF7  0x70    //RegModemConfig2.SpreadingFactor=7     128 码片/符号
#define SX1272_MC2_SF8  0x80    //RegModemConfig2.SpreadingFactor=8     256 码片/符号
#define SX1272_MC2_SF9  0x90    //RegModemConfig2.SpreadingFactor=9     512 码片/符号
#define SX1272_MC2_SF10 0xA0    //RegModemConfig2.SpreadingFactor=10    1024 码片/符号
#define SX1272_MC2_SF11 0xB0    //RegModemConfig2.SpreadingFactor=11    2048 码片/符号
#define SX1272_MC2_SF12 0xC0    //RegModemConfig2.SpreadingFactor=12    4096 码片/符号/* sf_t sf = getSf(LMIC.rps);enum _sf_t { FSK=0, SF7, SF8, SF9, SF10, SF11, SF12, SFrfu };SX1272_MC2_SF7 + [0~5]<<4 即可得到SF7、SF8、SF9、SF10、SF11、SF12
*/
mc2 = (SX1272_MC2_SF7 + ((sf-1)<<4));
if (getNocrc(LMIC.rps) == 0) {mc2 |= SX1276_MC2_RX_PAYLOAD_CRCON;
}writeReg(LORARegModemConfig2, mc2);
  • [x] RegModemConfig2.RxPayloadCrcOn取值:
  • 上行数据格式

    前导码 可选报头 数据有效负载
    0x34(8bytes) 报头+报头_CRC PayLoad+PayLoad_CRC
  • 下行数据格式

    前导码 可选报头 数据有效负载
    0x34(8bytes) 报头+报头_CRC PayLoad

    上行、下行报头CRC及数据有效负载CRC都是芯片自动填充的,并且有时候某一项PayLoad_CRC不是必选项。

//RegModemConfig2.RxPayloadCrcOn = 0: CRC 关闭
//RegModemConfig2.RxPayloadCrcOn = 1: CRC 开启
#define SX1276_MC2_RX_PAYLOAD_CRCON        0x04if (getNocrc(LMIC.rps) == 0) {mc2 |= SX1276_MC2_RX_PAYLOAD_CRCON;
}writeReg(LORARegModemConfig2, mc2);

扩频因子6(SF6)设置(特定)


当扩频因子SF为6时, LoRa调制解调器的数据传输速率最快,因此这一扩频因子仅在特定情况下使用。使用时,需在SX1276/77/78寄存器上进行以下几项设置:

  • [x] 将RegModemConfig2.SpreadingFactor设置为6;
  • [x] 将报头设置为隐式模式(即RegModemConfig1.ImplicitHeaderModeOn设置为1);传输对时间有苛求的数据时使用隐式报头。
  • [x] 在寄存器地址(0x31)的2至0位中写入0b101一值;0x31在Lora模式下为预留寄存器,除本情况外不使用。
  • [x] 在寄存器地址(0x37)中写入0x0C一值。0x37在Lora模式下为预留寄存器,除本情况外不使用。

编码率

LoRaTM调制解调器采用循环纠错编码进行前向错误检测与纠错,以提高链路的鲁棒性。使用纠错编码之后,会产生额外的传输开销。每次传输产生的循环编码开销见下表。

编码率(RegTxCfg1) 循环编码率 开销比率
1 4/5 1.25
2 4/6 1.5
3 4/7 1.75
4 4/8 2

前向纠错能有效提高链路的可靠性。由此,编码率(及抗干扰性能)可以随着信道条件的变化而变化——可以选择在报头中加入编码率以便接收端能够解析。

RegModemConfig1.CodingRate 纠错编码率

隐式报头模式下应在接收机上设置该位,以确定预期编码率。

RegModemConfig1.CodingRate = 001 : 4/5
RegModemConfig1.CodingRate = 010 : 4/6
RegModemConfig1.CodingRate = 011 : 4/7
RegModemConfig1.CodingRate = 100 : 4/8
所有其他值:预留

#define SX1276_MC1_CR_4_5            0x02
#define SX1276_MC1_CR_4_6            0x04
#define SX1276_MC1_CR_4_7            0x06
#define SX1276_MC1_CR_4_8            0x08
// ...
switch( getCr(LMIC.rps) ) {
case CR_4_5: mc1 |= SX1276_MC1_CR_4_5; break;
case CR_4_6: mc1 |= SX1276_MC1_CR_4_6; break;
case CR_4_7: mc1 |= SX1276_MC1_CR_4_7; break;
case CR_4_8: mc1 |= SX1276_MC1_CR_4_8; break;
default:ASSERT(0);
}
// ...
// set ModemConfig1
writeReg(LORARegModemConfig1, mc1);
// ...

信号带宽

增加信号带宽,可以提高有效数据速率以缩短传输时间,但这是以牺牲部分一接收灵敏度为代价。当然,多数国家对允许占用带宽都设有一定的约束。FSK调制解调器描述的带宽是指单边带带宽,而LoRaTM调制解调器中描述的带宽则是指双边带带宽(或全信道带宽)。LoRaTM调制解调器规格表中列出了在多数规范约束的带宽范围。

带宽(kHz) 扩频因子 编码率 标称比特率(bps)
7.8 12 4/5 18
10.4 12 4/5 24
15.6 12 4/5 37
20.8 12 4/5 49
31.2 12 4/5 73
41.7 12 4/5 98
62.5 12 4/5 146
125 12 4/5 293
250 12 4/5 586
500 12 4/5 1172

注意: 较低频段(169 MHz)不支持250kHz和500kHz的带宽。

RegModemConfig1.Bw 信号带宽

#define SX1276_MC1_BW_125                0x70
#define SX1276_MC1_BW_250                0x80
#define SX1276_MC1_BW_500                0x90// ...
switch (getBw(LMIC.rps)) {
case BW125: mc1 |= SX1276_MC1_BW_125; break;
case BW250: mc1 |= SX1276_MC1_BW_250; break;
case BW500: mc1 |= SX1276_MC1_BW_500; break;
default:ASSERT(0);
}
// ...
// set ModemConfig1
writeReg(LORARegModemConfig1, mc1);
// ...

比特速率、码片速率和符号速率等区分

经过信源编码的含有信息的数据称为“比特”;
经过信道编码和交织后的数据称为“符号”;
经过最终扩频得到的数据称为“码片”。

符号表示约定

  • BW表示带宽(BandWidth)
  • SF表示扩频因子(SpreadingFactor)
  • Rs符号速率(Symbol Rate)
  • cps码片速率(chip per-second)
  • Rb比特率(Bit Rate)

符号速率(Symbol Rate)

  • SymbolRateBitRate的对应关系要依据调制方式。如是BPSK调制,那么1bit可以代表0,1两种信息,此时BitRate=SymbolRate。如是QPSK调制,4个信息就需要2bit来表示,此时BitRate=2 SymbolRate
  • 符号速率*扩频因子=码片速率。

码片速率(chip per-second)

  • 系统通过扩频把比特转换成码片。码片相当于模拟调制中的载波作用,是数字信号的载体。
  • 一个数据信号(如逻辑1或0)通常要用多个编码信号来进行编码,那么其中的一个编码信号就称为一个码片。
  • 码片数率是指扩频调制之后的数据数率,用cps表示(chip per-second) 。

LoRa发送参数关系(扩频因子、码片速率、符号速率)

  • [x] LoRa符号速率
Rs = \frac{BW}{2^{SF}}

发送信号为恒包络信号。每赫兹每秒发送一个码片。

  • [x] 扩频因子
    码片速率=符号速率×扩频因子
SF = \frac{cps}{{Rs}}

转载于:https://www.cnblogs.com/younining/p/9514464.html

(3)LoraWAN:链路控制、SF BW CR相关推荐

  1. srsLTE源码学习:RLC,无线链路控制子层抓包rlc_pcap.h,rlc_pcap.cc

    RLC,无线链路控制子层 RLC(Radio Link Control,无线链路层控制协议)是GPRS/WCDMA/TD-SCDMA/LTE 等无线通信系统中的无线链路控制层协议.在WCDMA系统中, ...

  2. 蓝牙协议规范(射频、基带链路控制、链路管理)

    转自:http://blog.csdn.net/xubin341719/article/details/38303881 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!) 欢迎 ...

  3. 蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)

    关键词:蓝牙核心技术协议射频基带链路控制链路管理 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!) 欢迎指正错误,共同学习.共同进步!! 下载链接:Bluetooth PROF ...

  4. 蓝牙核心技术概述: 蓝牙协议规范(射频、基带链路控制、链路管理)

    原文出处:https://blog.csdn.net/xubin341719/article/details/38303881 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!) ...

  5. 全链路控制、构建Devops改善中台问题,让IT成为企业核心竞争力

    全链路控制.构建Devops改善中台问题,让IT成为企业核心竞争力 2018云栖大会上海峰会ET农业大脑专场,伯俊软件总裁孙一晖带来以"中台赋能让IT成为企业核心竞争力"为题的演讲 ...

  6. LLC 逻辑链路控制

    LLC  协  议 4.2.1 LLC帧格式 LLC协议定义了LLC层之间通信的帧格式,参见图4.3. 图4.3  LLC帧格式 LLC帧格式中各个字段的含义如下: ① 服务访问点(SAP)地址:SA ...

  7. 网络协议分析(Network Protocol Analysis)之点到链路控制协议LCP

    LCP用于配置.维护和终止PPP链路. 一.链路配置 发送方 向 回应方发送Configure-Request报文,发起链路建立和配置过程,其中可以包含多种选项.回应方可能的回应包括三种: 1.若所有 ...

  8. NR 5G RLC无线链路控制

    RLC架构 RLC实体 1.RRC通常控制RLC配置: 2.RLC子层的功能由RLC实体执行,对于在gNB处配置的RLC实体,存在在UE处配置的对等RLC实体,反之亦然: 3.RLC实体从/向上层接收 ...

  9. 【LLC】逻辑链路控制

    概述 逻辑链路控制(logical link control,LLC)层位于OSI网络模型的数据链路层,由IEEE802.2标准定义,用户的数据链路服务通过LLC子层为上层(IP层)提供统一的接口,提 ...

最新文章

  1. Widgets 整理
  2. 深入理解 JVM Class文件格式(二)
  3. easyui中onchange事件_React中类似Vue的“模板语法”
  4. STM32使用LWIP库新建tcp_sever
  5. 公交非接触IC卡读写器的应用设计
  6. IDEA导入一个项目
  7. No binary rubies available for: osx/10.15/x86_64/ruby-2.6.3. Continuing with compilation.
  8. LintCode 141. 对x开根 JavaScript算法
  9. OMV搭建系列教程[6] – 安装AriaNG Web前端
  10. js汉语转拼音(全拼、首字母、拼音首字母)
  11. 守望先锋:地图工坊FOR,IF,WHILE分享
  12. 构建nas_我的第一个diy nas服务器构建
  13. HDU1087 噜啦啦卢
  14. MySQl 实现 FULL JOIN
  15. 字符流、字节流、缓冲流、序列化流
  16. system verilog断言学习笔记
  17. 2012软件下载排行榜最新版下载地址:flashfxp VS竞技游戏平台 酷我音乐
  18. 力反馈OpenHaptic安装 + 配合 SOFA Geomagic插件
  19. 360移动开发者平台上架App
  20. c语言中能否将打开多个文件的行为放入循环中

热门文章

  1. c#如何通过ftp上传文件_ftp自动上传文件,如何设置ftp自动上传文件及环境配置...
  2. windows netstat 查看端口、进程
  3. CentOS 8 利用yum源安装nginx
  4. 用Gson实现json与对象、list集合之间的相互转化
  5. mui开发项目流程_【经验分享】用HBuilder开发的基于MUI和H5+的APP开发及上架经历...
  6. nutch的index-writers.xml
  7. 5.0安装没有costom mysql_Zabbix5.0监控mysql配置
  8. 小爱同学app安卓版_这一届的小爱Play,居然连喵都敢撩……
  9. 小甲鱼python课后题答案_Python 小甲鱼教程 课后练习44
  10. db2查最新值的前一天值_现在的C1驾照值多少钱?最新价格曝光,老司机一看赚翻了...