Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ART-Pi
SX1302
基于ART-Pi与SX1302的lora-gw-driver应用笔记
发布于 2021-09-15 08:13:28 浏览:2002
订阅该版
[tocm] # 1 前言 本文描述了基于RTOS(RT-Thread)、ART-Pi[STM32H7]+LRS007[SX1302]、lora-gw-driver-lib软件包等的lora-gw-driver-tester实现,lora-gw-driver-tester当前主要实现了基于LoRa网关模块SX1302的LoRa单\双向通信与CW性能测试等功能。 lora-gw-driver-lib软件包详细说明可查看《[lora-gw-driver-lib使用说明](https://github.com/Forest-Rain/lora-gw-driver-lib/blob/master/docs/ReadMe_lora-gw-driver.md)》 - [https://github.com/Forest-Rain/sdk-bsp-stm32h750-realthread-artpi/tree/master/projects/lrs007_lora_gw_driver](https://github.com/Forest-Rain/sdk-bsp-stm32h750-realthread-artpi/tree/master/projects/lrs007_lora_gw_driver) - [https://github.com/Forest-Rain/sdk-bsp-stm32h750-realthread-artpi/tree/master/projects/lrs007_lora_loopback](https://github.com/Forest-Rain/sdk-bsp-stm32h750-realthread-artpi/tree/master/projects/lrs007_lora_loopback) ## 1.1 功能简介 lora-gw-driver-tester当前主要支持以下功能: - 支持丰富shell命令 - 可灵活\动态配置lgd运行参数 - 支持设定8个LoRa接收信道 - 支持自定义频率组方式 - 支持自动设置频率组方式等 - 支持设定上行\下行(IQ反向接收) - 支持设定TX运行参数(发射功率、发送频点、IQ反向等) - 支持设定LoRaWAN公网\私有 - 支持常用的射频性能测试、空口数据包监听、单向\\双向\\主\\从通信测试等功能 - Concentrator模式 - 连续接收与应答 - Device模式 - 主动发送,支持自定义数据包个数、数据包长度 - CW模式 - 载波发射,支持设定CW频率等 - 支持上述模式动态切换 - 可以与[lora-radio-driver](https://github.com/Forest-Rain/lora-radio-driver/tree/master)软件包配合进行单向\\双向空口loopback测试等(ping-pong) - 当前主要测试的LoRa 网关模块 - LoRa Gateway Baseband Processor (SPI) - SX130X - SX1302 - [LSD4WN-2K730NE0 (CN470频段)](http://bbs.lierda.com/forum.php?mod=viewthread&tid=87) - TX: 470~510 MHz,最大功率~22dBm - RX: 470~480 MHz - [LSD4WN-2K830NE0 (EU868频段)](http://wsn.lierda.com/index.php/Home/Product/detail/id/99.html) - TX: 860~870 MHz,最大功率~22dBm - RX: 860~870 MHz - 当前测试的IDE - MDK5.29 - RT-Thread Studio 2.x ## 1.2 准备工作 ### 1.2.1 所需硬件 - [ART-Pi 开源平台](https://art-pi.gitee.io/website/) - RT-Thread官方开源硬件平台  - [ART-Pi LoRa开发套件](http://wsn.lierda.com/index.php/Home/product/detail/id/113.html) - LoRa扩展板(LRS007) - SX1302模块 - [LSD4WN-2K730NE0(SX1302) Mini PCIe模块](http://wsn.lierda.com/index.php/Home/product/detail/id/100.html)[ (CN470频段)](http://wsn.lierda.com/index.php/Home/Product/detail/id/99.html) - TX 470~510MHz - RX 470~480MHz - [LSD4WN-2K830NE0 Mini PCIe模块 (EU868频段) ](http://wsn.lierda.com/index.php/Home/Product/detail/id/99.html) - TX: 860~870 MHz,最大功率~22dBm - RX: 860~870 MHz  ### 1.1.2 所需软件 - IDE开发工具 - [RT-Thread Studio 最新版本](https://www.rt-thread.org/document/site/rtthread-studio/um/studio-user-begin/) - MDK5 - ART-Pi SDK开发包 - [https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi](https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi) - lora-gw-driver-lib - SX130x spi驱动 - [https://github.com/forest-rain/lora-gw-driver-lib](https://github.com/forest-rain/lora-gw-driver-lib) - lora-radio-driver - SX126x/SX127x SPI驱动包 - [https://github.com/forest-rain/lora-radio-driver](https://github.com/forest-rain/lora-radio-driver) # 2 ART-Pi lora-gw-driver-tester系统概述 ## 2.1 ART-Pi lora-gw-driver-tester功能框图 lora-gw-driver-tester使用ART-Pi、LRS007扩展板上SX1302模块与LRS101的SX1268模块,进行单\双向ping通信、CW等测试,如下所示  lora-gw-driver-tester使用ART-Pi、LRS007扩展板上SX1302模块与SX1268模块,进行lora-loopback测试(双向通信),如下所示  ## 2.2 ART-Pi lora-gw-driver-tester功能简介 基于ART-Pi的lora-gw-driver-tester当前支持CW模式、Concentrator模式、Device模式。 - CW模式 - SX130x发送载波信号,可用于测试发射功率等 - Concentrator模式 - 上电后,SX130x默认处于Concentrator模式,即一直保持接收模式,接收到lora终端设备数据后,并自动回发ACK给终端设备。 - Device模式 - SX130x模拟lora终端设备,SX130x主动发送ping包,等待接收设备回发ack。 -  ## 2.3 ART-Pi lora-gw-driver-tester shell命令集 当前支持shell命令如下所示 | 序号 | finish命令 | 说明 | | ---- | --------------------------------- | ------------------------------------------------------------ | | 0 | lgd | 显示lgd当前支持shell命令 | | 1 | lgd probe | 测试LGD设备(SPI)访问是否正常,读取芯片版本号与芯片固化的EUI | | 2 | lgd txc
| 配置LGD发送参数
:发射频率,单位Hz
:发射功率,单位dBm
:扩频因子,有效范围7~12
:带宽,有效范围125,250,500,only for LoRa High Speed IF8
:IQ invert,
0 - No,
1 - Yes | | 3 | lgd rxc
| 配置LGD接收参数
:变参类型,有效值: "rf0"、"rf1"、"auto"
当
="rf0" 或者 "rf1",
:为radio chain0\1的channel Center Frequence,单位Hz
当
设置为"auto",
为LGD工作信道组的起始频点,单位Hz
当
设置为"iq",
:rx iq invert,
0-disable invert,
1-enable invert | | 4 | lgd mac
| 配置MAC参数
设置LoRaWAN公网(同步字),
0 - No,
1 - Yes, | | 5 | lgd cw
| CW模式,LGD发送载波(CW)
:CW频点,单位
Hz
:功率,单位dBm | | 6 | lgd ping
| Device模式,启动ping通信测试(自动初始化sx130x),LGD作为master
: 发送数据包个数
: 发送用户数据长度 | | 7 | lgd rx
| Concentraror模式,LGD启动数据包接收
:
0 - 回发接收到数据包(loopback功能)
1 - 仅接收,并本地以16进制格式与ASCII码显示接收到的数据 | | 8 | lgd reboot | 重新启动sx130x | # 3 ART-Pi lora-gw-driver-tester设计说明 ## 3.1 依赖 ### 3.1.1 RT-Thread - RT-Thread 4.0.x - spi device - i2c device - ulog lora-gw-driver-tester目前主要基于RT-Thread 4.0.3测试验证。 ### 3.1.2 lora-gw-driver-lib软件包 使用 lora-gw-driver-lib软件包,需要在 RT-Thread 的包管理中选中它,具体路径,如下示例以ART-Pi平台为例: ```c RT-Thread online packages ---> peripheral libraries and drivers ---> [*] lora_gw_driver_lib: lora-gw-driver-lib is lora gateway chip(SX130x) driver binary libraries. ---> Select LoRa Gateway Chip (SX1302) ---> (lgd1302) Setup LoRa Gw Driver Spi Device Name (spi2) Setup LoRa Gw Driver Spi Bus Name (eg:spi1,spi2..,Define BSP_USING_SPIx in [Target Platform]\Board\Kconfig) (i2c3) Setup LoRa Gw Driver I2C Device Name for Temperture(eg:i2c1,i2c2..,Define BSP_USING_IICx in [Target Platform]\Board\Kconfig) [ ] Select lora-gw-driver Services [*] Enable lora-gw-driver GPIO Setup Select Supported Target Borad ---> --- ART-Pi and LRS007[LSD4WN-2K730NE0(SX1302)] [ ] Select LoRa Gw GPIO by Pin Name (NEW) [*] Select LoRa Gw GPIO by Pin Number (NEW) (128) LoRa Gw SPI NSS Pin number (NEW) (15) LoRa Gw RESET Pin number (NEW) (126) LoRa Gw PowerOn Pin number (NEW) (127) LoRa Gw PPS Pin number (NEW) (119) LoRa Gw GPIO6 Pin number (NEW) Select LoRa GW Driver Samples ---> Version (latest) ---> ``` ### 3.1.3 ulog组件 ulog组件——lgd-tester.c使用ulog接口,用于打印调试信息、原始16进制数据等 - 使能ulog - ulog缓存大小设置≥ 1024 Byte - 使能ulog内置过滤功能"Enable runtime log filter" - 可根据需要过滤不同等级的日志 - 使能浮点数,用于显示RSSI、SNR - ulog使用示例: 设置ulog日志过滤等级为Info ```c msh >ulog_lvl Please input: ulog_lvl
. Assert : 0 Error : 3 Warning : 4 Info : 6 Debug : 7 msh >ulog_lvl 6 ``` ## 3.2 BSP相关功能实现 ART-Pi LoRa开发套件中,[LSD4WN-2K730NE0[SX1302] ](http://wsn.lierda.com/index.php/Home/product/detail/id/100.html)模块使用到了ART-Pi[STM32H7]的SPI2外设 ### 3.2.1 STM32CubeMX使能SPI2外设 在STM32CubeMX使能SPI2外设,ART-Pi硬件使用SPI2默认引脚  点击Generate Code后,STM32CubeMX在stm32h7xx_hal_msp.c自动生成SPI2外设的初始化代码 ``` else if(hspi->Instance==SPI2) { /* USER CODE BEGIN SPI2_MspInit 0 */ /* USER CODE END SPI2_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_SPI2_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE(); /**SPI2 GPIO Configuration PI1 ------> SPI2_SCK PI2 ------> SPI2_MISO PI3 ------> SPI2_MOSI */ GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); /* USER CODE BEGIN SPI2_MspInit 1 */ /* USER CODE END SPI2_MspInit 1 */ } ``` ### 3.2.2 board.c 新增SPI2外设时钟设置 在board.c中新增SPI2外设设置的初始化操作 ``` void system_clock_config(int target_freq_mhz) { PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC|RCC_PERIPHCLK_USART3 |RCC_PERIPHCLK_UART4|RCC_PERIPHCLK_SPI4 |RCC_PERIPHCLK_SPI1|RCC_PERIPHCLK_SPI2|RCC_PERIPHCLK_SDMMC |RCC_PERIPHCLK_USB|RCC_PERIPHCLK_FMC; } ``` ### 3.3.3 libraries\Kconfig增加BSP_USING_SPI定义 根据实际所使用的MCU平台与SX1302模块,实现BSP SPI外设功能。 ART-Pi+LRS007+[LSD4WN-2K730NE0(SX1302) ](http://wsn.lierda.com/index.php/Home/product/detail/id/100.html)使用了SPI2,ART-Pi的sdk-bsp-stm32h750-realthread-artpi\\libraries\\Kconfig(Note:不同项目bsp配置路径kconfig可能需实际情况调整)已经定义并实现了BSP_USING_SPI2如下所示,因此直接使能SPI2即可 ``` menuconfig BSP_USING_SPI bool "Enable SPI" default n select RT_USING_SPI if BSP_USING_SPI config BSP_USING_SPI1 bool "Enable SPI1" default n config BSP_USING_SPI2 bool "Enable SPI2" default n config BSP_USING_SPI4 bool "Enable SPI4" default n endif ``` ### 3.3.4 配置SX1302模块GPIO 根据实际所使用的MCU平台与SX1302模块的IO连接情况,适配BSP GPIO配置。 ART-Pi+LRS007+[LSD4WN-2K730NE0(SX1302)](http://wsn.lierda.com/index.php/Home/product/detail/id/100.html)的硬件IO接口如下所示 | LSD4WN-2K730NE0[SX1302]模块接口 | ART-Pi[STM32H7] | 描述 | | ------------------------------- | --------------- | ------------ | | SX1302_SPI_CS | PI0 | GPIO | | SX1302_SPI_SCLK | PI1 | SPI2 SCLK | | SX1302_SPI_MISO | PI2 | SPI2 MISO | | SX1302_SPI_MOSI | PI3 | SPI2 MOSI | | SX1302_PPS | PH15 | 当前暂未使用 | | SX1302_RESET | PA15 | GPIO | | POWR_ON | PH14 | GPIO | | GPIO6 | PA8 | 当前暂未使用 | # 4 lora-gw-driver-tester测试 若使能 [* ] LoRa GW Driver Tester,则可以通过shell(finish)命令直接进行lora-gw-driver-tester的相关功能测试 ### 4.1.1 lgd-tester操作示例 lora-gw-driver-tester当前支持的shell命令,如下示例所示  ### 4.1.2 Concentrator模式 通信示例 运行lora-gw-driver-tester的Concentrator模式,双向ping通信测试示例,如下图所示 - slaver - ART-Pi[STM32H7] + LRS007 + SX1302( 图左 lgd rx ) - lora-gw-driver-tester - master - LSD4RF-TEST2002[STM32L4] + LRS007 + SX1268(图右 lora ping) - lora-radio-driver-tester - 发送频点 471.3 - 接收频点 473.1 - master分别采用SF7\\SF8\\SF9\\SF10\\SF11\\SF12 (BW125)与slaver 进行双向PING通信  ### 4.1.3 Device模式 通信测试 运行lora-gw-driver-tester的Device模式,双向ping通信测试示例,如下图所示 - master - ART-Pi[STM32H7] + LRS007[SX1302]( 图左 lgd ping) - lora-gw-driver-tester - slaver - LSD4RF-TEST2002[STM32L4] + LRS101[SX1268](图右 lora ping -s) - lora-radio-driver-tester - 发送频点 471.3 - 接收频点 473.1 - master使用SF7 BW125与slaver进行双向通信  ### 4.1.4 ART-Pi loopback测试 ART-Pi lookback使用ART-Pi+LRS007(同一块板子)的SX1302模块与SX1268模块,直接进行双向通信测试等,如下图所示 - master - ART-Pi[STM32H7] + LRS007[SX1302]( 图左 lgd ping) - lora-gw-driver-tester - 使用SPI2 - slaver - ART-Pi[STM32H7]+ LRS007[SX1268](图右 lora ping -s) - lora-radio-driver-tester - 使能ART-PI LoRa Radio - 使用SPI4 - master与slaver角色互换  # 5 注意事项 1. LoRa网关模块(SX1302)需连接天线后使用,避免因未接天线导致天线阻抗不匹配,进而影响接收的情况 1. 在实验室等极近距离通信(比如1~2米),可能会出现邻信道干扰情况,这种场景,可适当拉远距离或者减小发送端的发射功率等 1. 为了保证日志输出完整,ulog日志最大长度可设置大些,比如≥1024 1. 当前在ART-Pi平台测试发现MPU使能的时候,会出现SPI访问不稳定情况,目前采用的是不使能MPU的方式 1. 配置STM32CubeMX后,出现Error: L6218E: Undefined symbol DelayBlock_Enable,解决方式如下 > 手动修改 stm32h7xx_hal_conf.h USE_SD_TRANSCEIVER 为0 > \#define USE_SD_TRANSCEIVER 0U # 6 参考 - Semtech SX1302 libloragw - https://github.com/Lora-net/sx1302_hal/tree/master/libloragw - Semtech官方资料 - [https://www.semtech.com/lora](https://www.semtech.com/lora) - RT-Thread官方资料 - [https://www.rt-thread.org/](https://www.rt-thread.org/)
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
ForestRain
这家伙很懒,什么也没写!
文章
12
回答
12
被采纳
5
关注TA
发私信
相关文章
1
RT-Thread Studio 编译ART-Pi 的SDK报错 求助!-
2
ART-Pi 在 Studio 中使用TouchGFX Library 编译报错
3
RT-Thread Studio 更新错误
4
基于ART-Pi开发板创建的工程,RT-Thread Settings打不开
5
在 ART-Pi 平台使用 openocd 直接烧录到外部 spi flash?
6
ART-Pi工程用mdk5打开后提示文件找不到
7
ART-PI demo是否能够增加demo流程框图或者详细设计文档
8
ART-Pi 的ST_Link无法识别
9
请把ART-Pi仓库放到gitee上一份。
10
仅有ART-Pi开发包时,RTT Studio无法创建ART-Pi工程
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
rt-smart
RTC
FAL
I2C_IIC
cubemx
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
SFUD
ulog
msh
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
a1012112796
2
个答案
1
次被采纳
聚散无由
2
个答案
1
次被采纳
加缪
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部