嵌入式技术william hill官网
直播中

siyugege

9年用户 766经验值
擅长:可编程逻辑
私信 关注
[经验]

在STM32L上的LoRa-Radio-Driver驱动程序使用示例分享

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支持

原作者:林雨

更多回帖

发帖
×
20
完善资料,
赚取积分