lora低功耗模式以及组网简单分析

本文详细介绍了LoRa无线通信模块的配置,包括DIO映射、前导码长度设置、CAD模式以及中断处理。通过DIO0、DIO1和DIO3的中断函数,实现接收数据和CAD检测。代码示例展示了如何在STM32平台上初始化LoRa模块,设置接收和发送模式,并利用CAD检测进行低功耗操作。此外,还涉及了频率设置、数据速率配置以及实时通信的概念。

上面的DIO maping 看懂就比较好理解了,DIO0,DIO1,DIO3,

发送和接收都可以触发中断,cad模式需要使用CADDetected和CADDone。

CADDetected这个中断就是有数据接收了,触发进入接收模式,前导码个数的计算还是比较简单的。

从上图可以看出,若要可靠唤醒 WOR ,发送包的前导码必须大于 T1+2*T2 才能可靠唤醒。
TS=2^SF/BW 这个值是一个字节传输所用的时间,发送前导码的个数对应的的时间要不小于T1+2*T2才能唤醒。
举个例子:SF=9,BW=125K,传输一个码元的时间就是TS=2^SF/BW=2^9/125K=4.1ms/symb,
睡眠时间加上CAD时间除以单个码元的时间就是合理的前导码长度,这个长度在一个周期内足以唤醒模块。就是发包的时间有点久。
        lora_write(0x20,0x03)--前导码长度
        lora_write(0x21,0xec)--前导码长度
目前使用2017年在stm32平台开发的lora dtu,现在移植到lua 的平台。
想要实现实时通信,可以借助运营商基站工作原理(通信原理),蜂窝通信,一回事,使用一组公共信道(收发上行和下行,注册使用),然后从机使用公共信道注册,rssi符合要求,分配一组上行和下行信道给其使用。
local lora = {}
local sys = require "sys"


local spiId = 2
local _nss=13
local _dio0=8
local _dio1=4
local _dio3=5
local MC1={
  BW125=0x70,
  BW250=0x80,
  BW500=0x90,
  BW150=0x00
}

local MC2={
  FSK=0x00,
  SF6=0x60,
  SF7=0x70,
  SF8=0x80,
  SF9=0x90,
  SF10=0xA0,
  SF11=0xB0,
  SF12=0xC0
}

-- MC1["4/5"]=0x02
-- MC1["4/6"]=0x04
-- MC1["4/7"]=0x06
-- MC1["4/8"]=0x08
local _freq=470000000
local _bw=MC1.BW125
local _sf=MC2.SF9


local cspin = gpio.setup(_nss, 1)
local rst = gpio.setup(9, 1)

--收发数据
local function sendRecv(data,len)
    local r = ""
    cspin(0)
    if da
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值