<p>LoraWAN是Semtech公司主导推进的低功耗广域网LPWAN技术。由于采用了基于CSS(ChirpSpread Spectrum)的无线调制/解调技术,接收灵敏度达到,在低于1GHz的ISM频段,其传输距离达到了十几公里,非常适合抄表等低速的无线应用。</p>
<p> 但LoraWAN的协议只规定了MAC层的规范。关于Lora物理层,只是简单规定了可以采用两种调制方式:FSK和Lora。为了最大限度地发挥发挥LoRaWAN的优势,需要采用Lora调制。但Lora调制技术是Semtech公司的专利技术,并没有公开。该专利技术由法国公司Cycleo开发,Cycleo公司在2012年被Semtech收购。主要相关的专利为EP2763321(欧洲、2013)US7791415(美国、2008)。本文主要介绍LoraWAN的物理层,其中也包括一些国外对LoraWAN进行逆向工程的结果。</p>
<p><strong>Lora物理层概要</strong></p>
<p>为了尽可能降低耗电,在终端设备侧(Class-A),通过在发送之后设置两个接受窗口的方式,避免了其他一些技术(如基于802.15.4的一些标准)定时开机执行接收动作的操作,从而达到更长的睡眠时间。其缺点是下行数据不能自由发送,必须在有上行数据时才有机会发送。</p>
<p>Lora利用小于1GHz的ISM频段,而这些频段,各个国家和地区往往有不同的规定,因此,在Lora协议中,专门有一个单独的文档《LoRaWANRegional Parameters》用于规定各种频段的物理层参数。</p>
<p> Lora调制采用Chirp扩频技术。Chirp扩频源于雷达测距的应用,从上世纪九十年代开始探索Chirp扩频在通信中的应用。Chirp扩频通过在一个Symbol(符号)的时间周期内,让频率带宽范围内从低到高(UP)、或从高到低(DOWN)变化的方式来调制信号的方式来传输数据。Chirp扩频具有良好的抗多径、多普勒效应的优点,而得到了较多的关注。</p>
<p><strong>Lora物理层帧结构</strong></p>
<p>物理层帧格式如下:</p>
<p><img alt="物理层帧格式" data-entity-type="file" data-entity-uuid="3ca10061-8ae1-4aec-84fe-a1e80290b6eb" height="148" src="/sites/default/files/inline-images/%E7%89%A9%E7%90%86%E5%B1%82%E5%B8%A7%E6%A0%BC%E5%BC%8F.png" width="522" /></p>
<p>前导码Preamble保护一个Syncword用于同步,其长度和SyncWord在RegionalParameter中定义。如US902-928,对LORA调制方式,syncword为0x34,Preamble长度为8个Symbol。</p>
<p> Header部分可以隐含,有Implicitmode(隐含模式)和Explicitmode之分。如果SF=6,则采用Implicitmode,否则,采用Explicitmode。在Header中定义以下参数:</p>
<ul>
<li>payload长度(以byte为单位)</li>
<li>FEC(Forward Error Correction)编码率(coderate)</li>
<li>可选16bits的Payload CRC是否采用。</li>
</ul>
<p> 但在LORA协议中,规定Preamble长为8个Symbol,在下行包中不采用payloadCRC,但在上行包中采用。</p>
<p><strong>下行数据传输窗口</strong></p>
<p>在Class-A设备中,接收只能在发送之后的特定时间段内进行,该时间段为接收窗口。在每一个发送包之后,跟着两个接收窗口。其参数如下所示:</p>
<p>第一个接收窗口的参数:</p>
<ul>
<li>打开时间:Uplink Modulation结束后RECEIVE_DELAY1秒之后</li>
<li>最小持续时间:保证下行Preamble的有效检出。</li>
<li>所用频率:上行频率的函数,由Regional Parameter决定<br />
如US902-928,则:RX1Channel Number = Transmit Channel Number Modulo 8</li>
<li>数据速率:上行速率的函数,由Regional Parameter决定</li>
<li>如US902-928,由下表决定:</li>
</ul>
<p><img alt="US902-928" data-entity-type="file" data-entity-uuid="76e388a6-b170-4754-8a1f-b01a84fdbda3" src="/sites/default/files/inline-images/US902-928.png" /></p>
<p>RX1DROffset有效取值范围为:[0,3]。</p>
<p>第二个接收窗口的参数:</p>
<ul>
<li>打开时间:Uplink Modulation结束后RECEIVE_DELAY2秒之后</li>
<li>最小持续时间:保证下行Preamble的有效检出。</li>
<li>不打开条件:如在RX1中检出有效的发给本设备的Frame,且通过MIC检查。</li>
<li>所用频率:一个可配置的固定频率<br />
如US902-928中,缺省为923.3MHz</li>
<li>数据速率:一个可配置的固定速率<br />
如US902-928中,缺省为DR8</li>
</ul>
<p><strong>Lora调制</strong></p>
<p>采用Lora调制时,只需要给物理层指定简单的几个参数:</p>
<ul>
<li>Data Rate:数据速率</li>
<li>TX Power:Maximum Transmit Power</li>
<li>ChMask&ChMaskCntl:定义可用的信道。</li>
<li>NBTrans:the number of transmissions of eachuplink message, applied ONLY to “UNCONFIRMED” uplink frames. 但如果在相应的RX1或RX2收到下行包,则停止重发。</li>
</ul>
<p>由于数据速率与带宽和扩频系数存在一对一的关系,因此也相当于指定了带宽和扩频系数。下表是EU867-870频段的数据速率与带宽和扩频系数的关系。</p>
<p><img alt="EU867-870频段的数据速率与带宽和扩频系数的关系" data-entity-type="file" data-entity-uuid="11a98b6e-79dd-4054-a42f-121f7e059c37" src="/sites/default/files/inline-images/EU867-870%E9%A2%91%E6%AE%B5%E7%9A%84%E6%95%B0%E6%8D%AE%E9%80%9F%E7%8E%87%E4%B8%8E%E5%B8%A6%E5%AE%BD%E5%92%8C%E6%89%A9%E9%A2%91%E7%B3%BB%E6%95%B0%E7%9A%84%E5%85%B3%E7%B3%BB.png" /></p>
<p>在Lora调制中,使用的基本参数如下:</p>
<ul>
<li>频度宽度:BW</li>
<li>扩频因子:SF</li>
<li>CodingRate:CR</li>
</ul>
<p>一个扩频符号(Symbol)周期Ts为:</p>
<p><img alt="一个扩频符号(Symbol)周期Ts" data-entity-type="file" data-entity-uuid="61cd8e12-f5e7-4e8c-bea8-ca6485c7983f" src="/sites/default/files/inline-images/1_3.png" /></p>
<p>因此符号速率为:</p>
<p><img alt="符号速率" data-entity-type="file" data-entity-uuid="4fa1b769-7adf-4efd-b9b5-36d71edb2baf" src="/sites/default/files/inline-images/%E7%AC%A6%E5%8F%B7%E9%80%9F%E7%8E%87.png" /></p>
<p>一个扩频符号(Symbol)编码的bit数与扩频因子相同,因此调制的bit速率为:</p>
<p><img alt="调制的bit速率" data-entity-type="file" data-entity-uuid="3c3661fc-5983-4dee-b464-70c1559123b4" src="/sites/default/files/inline-images/%E8%B0%83%E5%88%B6%E7%9A%84bit%E9%80%9F%E7%8E%87_0.png" /></p>
<p>通过总结各路大拿分析的LORA的信号,可以得到以下一些有用信息:</p>
<p>1) Preamble的构成为:PreambleLength寄存器指定个数Symbol的up-chirp,再加上两个up-chirp的syncword编码的Symbol,外加两个symbol长的down-chirp,最后是1/4个Symbol长的up-chirp。</p>
<p>2) 所有的数据都以一个Symbol长的up-chirp编码,在一个Symbol中通过起始频率的偏移来编码SF bit的数据。在一个Symbol中当频率达到频带的边界时,反转到另一侧。在一个Symbol的时间范围内,整个频带都覆盖一次。4bitsyncnword的编码如下图所示:</p>
<p><img alt="4bitsyncnword的编码" data-entity-type="file" data-entity-uuid="e2fd316d-ff99-4724-a5d8-e6868a7a14f6" src="/sites/default/files/inline-images/4bitsyncnword%E7%9A%84%E7%BC%96%E7%A0%81.jpg" /></p>
<p>3) 一个Symbol的时间长度为 Ts。</p>
<p>但是对以下两个问题,还没有明确的答案:</p>
<p>1) 怎样保证不同Device在任意时间点发出的数据包完整可解?</p>
<p>2) 多Device同时发送时,怎样保证不冲突?</p>
<p>文章转载自:<a href="http://blog.csdn.net/ronhu">ronhu的博客</a></p>
<ul>
</ul>