1 简介
LoRa Trance 芯片是基于 RT-Radio-r-Thread 实现的 LoRa Trance 芯片(SX12 等)的驱动文件,驱动文件,访问 LoRa Trarer 芯片,可用于通过快速驱动的 SPI 驱动(基于 LoRax 等)驱动文件产品。 LoRa软件包在LoRaWAN开源协议LoRaMAC -Node中的收音机基础上,进一步封装实现栈。
主要特点:
当前支持LoRa收发器(sx126x\sx127x )
支持响应方式
洛拉
FSK
可通过EVN工具菜单配置直接定义LoRa模块的接口,降低入门窗帘
支持使用密码来定义GPIO
支持使用名称来定义GPIO
常用的实例代码、可用于无线电通信的性能测试、空口数据包监听、测试等
可作为phy层对LoRaWAN End-Device协议栈
当前测试的LoRa模块\芯片
LoRa 收发器 (SPI)
SX126X (SX1262\ASR6500S\LLCC68\SX1268..)
SX1268
LSD4RF-2R717N40
SX1262
ASR6500S
LLCC68
LR1110
SX127X (SX1272\SX1276\SX1278..)
SX1278
LSD4RF-2F717N20
Ra-01
SX1276
LoRa SIP\SoC
当前测试的MCU平台
LoRa Radio Driver当前主要在STM32L平台测试通过,未来计划将支持更多的MCU平台(华、nRF、K)
STM32L0系列
STM32L4系列
当前支持的RTOS
RT-线程
RT-Thread Nano
2 LoRa Radio Driver驱动程序组织结构
劳拉电台
sx126x
lora-radio-sx126x.c
稍后提供了上层访问接口实现
lora-spi-sx126x.c
sx126x芯片的spi读写接口实现,独立于MCU平台
rt_device
SPI裸机方式
sx126x.c
lora芯片sx126x驱动能量
sx127x
lora-radio-sx127x.c
上层访问接口
lora-spi-sx127x.c
sx127x芯片的spi读写接口实现,独立于MCU平台
rt_device
SPI裸机方式
sx127x.c
lora芯片sx127x驱动能量
常见的
lora-radio-timer.c
提供了lor-radio所需的接口,用于发送与接收定时服务等,基于RT-Thread内核rt_timer
注意这种方式提供的定时缩小度系统TICK D_tick RT_PER_SE
注:如果能够使能了Multi-Rtimer,则优先使用Multi-Rtimer提供定时\rtimer服务
包括
lora-radio.h
上层接口服务
lora-radio-debug.h
根据需要使能输出lora-radio不同层级的调试信息
lora-radio-rtos-config.h
rtos为层,选择,当前默认为RT-Thread
未来支持RT-Thread-Nano、以及其他RTOS....
样品
lora 无线电驱动程序示例文件
lora-radio-test-shell
shell示例,主要实现了shell命令测试、空口数据监听、通信测试等,便于日常测试
港口
主要包含当前在不同MCU平台下支持的lora模块,lora-module文件夹中的xxxx-borad.c包含了与LoRa模块直接相关的主要硬件接口配置:
lora 模块
stm32_adapter
lora-board-spi.c
STM32平台的SPI外设初始化等通用接口
LSD4RF-2F717N20 (SX1278 LoRa模块)
LSD4RF-2R717N40 (SX1268 LoRa模块)
Ra-01 (SX1278 LoRa模块)
xxxx-borad.c
LoRa模块功率输出方式(PA\RFO...)
LoRa模块的RF高频开关控制方式(TXE、RXE、无..)
LoRa模块的DIO口(DIO0、DIO1、DIO2....)
LoRa模块的工作限制频率等
xxx_适配器
其他mcu平台下的硬件接口实现
3 LoRa Radio Driver 使用说明
3.1 依赖
SPI外设——用户需根据实际MCU平台,自定义LoRa模块实际所需要的SPI外设
注:如果在工业温度范围、时间精度要求高usms等级)的情况下,设置RTC外部32768晶可能,否则会建议源为使用并丢包的情况。
任选内核组件
ulog组件——用于打印日志信息
使能ulog
ulog缓存大小设置≥ 128 Byte
lora-raido-内部驱动程序可查看更多劳拉的纠错信息
lora-radi-test-shell.c使用ulog接口,打印调试信息、原始16个故障数据等
如果没有使用ulog,默认使用rt_kprintf来实现信息输出功能
3.2 吃零食
使用软件包或收音机驱动程序,需要在 RT-Thread 的包管理中加载它,具体路径如下:
选择 LoRa 芯片 \ LoRa 模块
“设置 LoRa 无线电设备名称”
LoRa Radio设备名称,为“lora-radio0”
“设置 LoRa Radio Spi 名称”
设置 LoRa Radio Spi 名称
若在 [目标平台配置]\Board\Kconfig 提前好所使用的 BSP_USING_SPIx,设置自动
“选择 LoRa Radio 单实例”
选择实例对象,当前只支持单个lora设备
“选择 LoRa 芯片类型”
选择实际使用的 LoRa 芯片类型
目前支持SX126X、SX127x收发器
“选择支持的 LoRa 模块”
选择模块,根据实际使用的 MCU 硬件平台与模块,配置连接的 GPIO 或模块等功能模块
设置LoRa模块的GPIO口(如RESET、NSS、BUSY、DIO1、TXE、RXE...)
“按引脚号选择 LoRa 芯片 GPIO”
代表支持输入号来A10 10
“按引脚名称选择 LoRa 芯片 GPIO”
支持使用输入名称来定义 GPIO,例如输入 A10 输出脚(STM32 输入 GPIO 的 PIN1)
选择 LoRa 无线电驱动程序示例
根据实际情况,可用测试示例
3.3 新增LoRa模块
在lora-radio-driver\ports\lora-module文件的旧参考模板,根据实际增加的新mcu平台文件,需要安装、的lora模块驱动xxxx-board.c
4 使用示例
4.1 硬件测试平台
当前所使用的硬件测试平台如下所示
4.2 Shell测试命令
若能 [* ] LoRa Radio Test Shell,则可以通过 shell(finish)命令直接进行 LoRa 相关测试
lora ping包2个通信示例(SX178 <-> SX1268)
lora r 单向接收(监听)lora数据测试(SX1278 <- 或-> SX1268)
4.3 应用层调用说明
用户层可以参考如下步骤
Radio.Send( Buffer, len );
可定义射频 DIO 支持服务功能
调用lora-radio初始化
配置射频参数通信
发送数据
数据接收
选择SPI外设
在bsp\目标板XX\board\Kconfig中添加如下定义
定时服务用于提供服务所需的频率\定时,当前支持以下的一种方式,二选一
内核 SOFT_TIMER
未解决Multi-Rtimer若_程序,则默认采用内核的rttimer来提供定时服务(lora-radio-timer.c)
注意检测是否开启 RT-Thread内核的SOFT_TIMER
多定时器铝制
若能使multi-rtimer,loraradio-driver优先使用multi-rtimer提供定时\晶圆服务。
5 版本更新历史
V1.0.0 版本 2020-06-20
主体功能实现基于STM32平台
支持SX126x、SX127x系列芯片
测试LoRa芯片支持LSD4RF-2R717N40(SX1268)、SX1278、ASR6500S@ zyk6271
支持基于RT-Thread内核rt_timers的loraradio-timer接口@ AnswerInTheWind
优化日志换行功能@ zyk6271
V1.1.0 版本 2020-08-30
完善用户使用指南
.lora-radio-driver
新增选择lora-radio-radio-radio-debug日志,也可以用于输出不同日志的方式
新增rtos、选择适合的rtos-config,选择适合未来的rtos-rt-thread-nano平台
劳拉收音机(sx126x\sx127x)
同步更新到lorawan4.4.4版本的广播
sx126x更新SX126xSetLoRaSymbNumTimeout(同步到loramac-node-master)
sx126x 更新 RadioRandom 与 SX126xGetRandom
更新 RadioIrqProcess
更新 RadioTimeOnAir
RadioIrqProcess 增加危险区保护,防止出现硬件异常
调整lora-radio-driver架构,为未来提供不同的MCU平台
端口目录下新增mcu平台,如stm32_adapter
lora-radio-test-shell
修复问题后PHY CRC Error,没有重新进入接收
劳拉平命令
新增发送空口数据包的 TOA 时间显示
新增主机接收到数据包后,seqno显示
配置
更新lora-radio-driver\Kconfig包配置文件
不是单实例(单lora模块)与多实例(多lora模块)的情况,目前支持单实例
移除了Kconfig中对BSP_USING_SPIx的直接定义,BSP_USING_SPIx定义调整到[Target Platform]\Board\Kconfig)
定义宏定义_X为宏重定义_X(如REGION_CN47REGION_REGION -> PHY_CN470),以便与LoRaWAN协议栈重定位中REGION_X共存
V1.1.2 版本 2020-10-12
Ra-01未同步与v1.1.1更新导致的问题
优化 drv_gpio.h 使用,RT-Thread Studio
优化 lora-radio-test-shell.c 功能
新增接收时间设置
V1.2 版本 2020-10-14
硬件硬件测试平台
ARTPi+LSD4-SX17RF7170平台(4~510N36-2MHz2F模块)
ARTPi+LSD4-SX17RF7170平台(4~5106RF-8MHz20模块)
ARTPi+LSD4-SX1222RF822R800平台(86/91526MHz-2MHz2模块)
V1.4.0 版本 2021-04-25
重设计lora config命令,方便快速配置radio
ping数据包长度最大255Byte,可通过shell自定义ping测试数据包长度支持
shell新增iq版本、公网参数设置
使用 LORA_RADIO_DEBUG_LOG 而不是 rt_kprintf
V1.5.0 版本 2021-11-15
新增doxygen支持
原作者:林雨