LuatOS核心库API——【lora2】lora 驱动模块
在构建低功耗广域网(LPWAN)应用中,LoRa模块凭借其出色的抗干扰能力和超远传输距离脱颖而出。而驱动程序作为连接硬件与上层应用的桥梁,直接影响系统的稳定性与响应效率。本文围绕LoRa模块的驱动设计,介绍其核心架构、初始化流程及数据收发机制,为开发者提供实用的技术参考。
一、概述
LuatOS 的 lora2 驱动模块,支持多设备挂载,提供完整的 lora 通信功能。仅支持 LLCC68、SX1268 两款主流 lora 芯片。
1.1 lora 通信原理
LoRa(Long Range)是 semtech 公司创建的低功耗、远距离、无线、广域网的标准。
LoRa 模块采用扩频通信技术,其核心原理是将信号的频谱扩展到一个很宽的频率范围内,从而提高信号的抗干扰能力和安全性。LoRa 模块主要采用的是基于线性调频(LFM)的扩频技术,即 Chirp Spread Spectrum(CSS)。
LoRa 模块在发送数据时,会将数据信号与一个高速的伪随机码(PN 序列)进行模二加运算,生成扩频信号。接收端使用相同的 PN 序列对接收到的扩频信号进行解扩,恢复出原始数据信号。
如果您需要权威参考,建议查阅 Semtech 官方发布的 LoRa 技术文档或 LLCC68/SX1268 系列芯片数据手册。
1.2 工作模式
发送模式:用于无线发送数据,发送完成触发 "tx_done"事件。
接收模式:监听并接收无线信号,接收成功触发 "rx_done"事件 ,超时触发 "rx_timeout"事件。
待机模式:准备就绪状态,介于工作和睡眠之间,作为发送/接收操作前的过渡状态。
1.3 注意事项
由于 LoRa 设备的半双工特性,当设备 A 处于发送模式时,若设备 B 同时发送数据,设备 A 将无法接收,导致数据丢失。
二、核心示例
核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;
核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

三、常量详解
核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;
每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;
如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;
3.1 lora2.SLEEP

3.2 lora2.STANDBY

四、函数详解
4.1 lora2.init(ic, loraconfig,spiconfig)
功能
lora 设备初始化,创建并返回一个 lora 设备对象;
注意事项
当前仅支持 llcc68 和 sx1268 两个 lora 型号;
初始化前需要确保 SPI 设备已正确配置;
参数
ic

loraconfig

spiconfig

返回值
local lora_device = lora2.init(ic, loraconfig, spiconfig)
lora_device

示例

4.2 lora_device:set_channel(freq)
功能
设置 lora 设备的通信频道频率;
注意事项
常用频段:433MHz、868MHz、915MHz; 需要确保频率在 lora 设备支持的范围内;
参数
freq

返回值
无
示例

4.3 lora_device:set_txconfig(txconfig)
功能
配置 LoRa 设备的发送参数;
注意事项
发送参数配置必须在 lora 设备初始化成功后调用;
配置后需要调用接收配置函数以建立完整通信链路;
参数
txconfig




返回值
无
示例

4.4 lora_device:set_rxconfig(set_rxconfig)
功能
配置 lora 设备的接收参数;
注意事项
接收参数配置必须在 lora 设备初始化成功后调用;
接收参数应与发送端参数匹配才能正常通信;
参数
rxconfig




返回值
无
示例

4.5 lora_device:send(data)
功能
发数据
注意事项
1、发送数据前必须确保 lora 设备已正确初始化并配置了发送参数;
2、数据长度受 lora 协议限制,最大载荷长度为 255 字节;
3、发送操作是异步的,发送完成后会触发"tx_done"事件;
4、在发送过程中设备会切换到发送模式,完成后自动返回待机模式;
5、在发送模式下不能连续调用此接口发送数据,前一次发送完成事件"tx_done"触发后,才能开始下一次发送,需要通过事件回调机制来管理连续的数据发送。
参数
data

返回值
无
示例

4.6 lora_device:recv(timeout)
功能
启动 lora 设备的数据接收模式,监听并接收来自其他 lora 设备发送的数据;
注意事项
1、接收操作是异步的,接收到的数据通过事件回调函数返回;
2、接收超时后会触发"rx_timeout"事件;
3、成功接收到数据后会触发"rx_done"事件;
4、接收过程中发生错误会触发"rx_error"事件;
5、调用此函数后设备会切换到接收模式,直到收到数据、超时或发生错误;
参数
timeout

返回值
无
示例

4.7 lora_device:mode(mode)
功能
设置 lora 设备的工作模式,用于控制设备的功耗状态和运行状态;
注意事项
在 SLEEP 模式下,通信功能被禁用;
在 STANDBY 模式下,设备处于就绪状态,可以快速切换到发送或接收;
参数
mode

返回值
无
示例

4.8 lora_device:on(cb)
功能
注册 lora 设备的事件回调函数的接口;
注意事项
回调函数中应避免执行耗时操作,以免影响事件处理效率;
参数
cb

返回值
无
示例

五、模组支持说明
支持 LuatOS 模组的所有产品都支持 lora2 核心库。
六、参考资料
今天的内容就分享到这里了~
更多推荐
所有评论(0)