LoRa关键参数 1、扩频因子(SF) 2、编码率(CR) 3、信号带宽(BW) 4、LoRa信号带宽BW、符号速率Rs和数据速率DR的关系 5、

 LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释

  • 1、扩频因子(SF)
  • 2、编码率(CR)
  • 3、信号带宽(BW)
  • 4、LoRa信号带宽BW、符号速率Rs和数据速率DR的关系
  • 5、 LoRa信号带宽、扩频因子和编码率的设定

针对特定应用,开发人员可通过调制扩频因子、调制带宽、纠错编码率这三个关键设计参数,对LoRa调制解调技术进行优化。。

1、扩频因子(SF

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

 


LoRa扩频因子取值范围: 
 

注意:因为不同的SF之间为正交关系,因此必须提前获知链路发送端和接收端的SF。另外,还必须获知接受机输入端的信噪比。。在负信噪比条件下信号也能正常接收,这改善了LoRa接受机的林敏度,链路预算及覆盖范围。。

理解扩频因子的概念:

通俗的说 扩频时你的数据每一位都和扩频因子相乘,例如有一个1 bit需要传送,当扩频因子为1时,传输的时候数据1就用一个1来表示,扩频因子为6时(有6位)111111,这111111就来表示1,这样乘出来每一位都由一个6位的数据来表示,也就是说需要传输总的数据量增大了6倍。 
这样扩频后传输可以降低误码率也就是信噪比,但是在同样数据量条件下却减少了可以传输的实际数据,所以,扩频因子越大,传输的数据数率(比特率)就越小。。。

Lora扩频因子的使用:

当扩频因子SF6时,LoRa的数据传输速率最快,因此这一扩频因子仅在特定情况下使用。使用时需要配置LoRa芯片SX127x

  • 在RegModemConfig2,将SpreadingFactor设为6
  • 将报头设置为隐式模式
  • 在寄存器地址(0x31)的2至0位写入0b101
  • 在寄存器地址(0x37)写入0x0C

2、编码率(CR

编码率,是数据流中有用部分的比例。 
编码率(或信息率)是数据流中有用部分(非冗余)的比例。也就是说,如果编码率是k/n,则对每k位有用信息,编码器总共产生n位的数据,其中n-k是多余的。 
LoRa采用循环纠错编码进行前向错误检测与纠错。。使用该方式会产生传输开销。。 
每次传输产生的数据开销如下: 

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


3、信号带宽(BW

增加BW,可以提高有效数据速率以缩短传输时间,但是以牺牲部分接受灵敏度为代价。对于LoRa芯片SX127xLoRa带宽为双边带宽(全信道带宽),而FSK调制方式的BW是指单边带宽。

LoRa带宽选项:

 

 

 

注意:较低频段(169MHz)不支持250K500KHzBW


4LoRa信号带宽BW、符号速率Rs和数据速率DR的关系

LoRa符号速率Rs可以通过以下公式计算:

Rs=BW/(2^SF)

Hz每秒发送一个码片。。

LoRa数据速率DR可以通过以下公式计算:

DR=SF*( BW/2^SF)*CR


5LoRa信号带宽、扩频因子和编码率的设定

LoRaWAN主要使用了125kHz信号带宽设置,但其他专用协议可以利用其他的信号带宽(BW)设置。改变BWSFCR也就改变了链路预算和传输时间,需要在电池寿命和距离上做个权衡。

LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释_HowieXue的博客-CSDN博客_lora扩频因子

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个用MATLAB生成LoRa信号模型的示例代码: ```matlab % 生成LoRa信号 fc = 868e6; % 中心 fs = 2.5e6; % 采样 BW = 125e3; % 带宽 SF = 12; % 因子 CR = 4/5; % 纠错编码 PreambleLength = 8; % 前导码长度 PayloadLength = 20; % 负载长度 SymRate = BW/(2^SF); % 符号速率 Tsym = 1/SymRate; % 符号时间 Ts = 1/fs; % 采样间隔 % 生成前导码 Preamble = randi([0 1],1,PreambleLength); Preamble = reshape([Preamble; ~Preamble],1,[]); % 生成随机负载 Payload = randi([0 1],1,PayloadLength); % 生成数据 Data = [Preamble Payload]; % 生成符号序列 N = length(Data); K = floor(N*SF/8)*8; Data = [Data zeros(1,K-N)]; Data = reshape(Data,[],8); Data = bi2de(Data,'left-msb'); Data = fliplr(dec2bin(Data)); Data = Data(:)'-'0'; Symbol = reshape(Data,[],SF); % 生成载波 t = 0:Ts:(length(Symbol)*Tsym-Ts); Carrier = exp(1j*2*pi*fc*t); % 生成LoRa信号 Signal = []; for i = 1:size(Symbol,1) % Spread = ones(1,SF)*Symbol(i,:); Spread = reshape(Spread,1,[]); Spread = repmat(Spread,1,8); Spread = Spread(1:K); Spread = reshape(Spread,SF,[]); Spread = fliplr(Spread); Spread = reshape(Spread,1,[]); Spread = repmat(Spread,1,length(Carrier)/length(Spread)); % 调制 Modulated = Spread.*Carrier; % 附加到信号中 Signal = [Signal Modulated]; end % 绘制信号谱 f = linspace(-fs/2,fs/2,length(Signal)); S = fftshift(abs(fft(Signal))); plot(f,S); xlabel(' (Hz)'); ylabel('幅度'); title('LoRa信号谱'); ``` 该代码生成一个长度为28的数据包,其中前8位为前导码,后20位为随机生成的负载。生成的数据和调制后形成LoRa信号,最后绘制出其谱。可以根据需要修改代码中的参数来生成不同的LoRa信号模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值