|
|
3 سال پیش | |
|---|---|---|
| .. | ||
| doxygen_image | 4 سال پیش | |
| pics | 5 سال پیش | |
| README.md | 4 سال پیش | |
| lora-radio-driver_Doxyfile | 3 سال پیش | |
LoRa-Radio-Driver软件包是基于RTOS( RT-Thread ) 实现的LoRa Tranceiver芯片(SX126x、SX127x等)的驱动文件,该驱动文件通过SPI访问LoRa Tranceiver芯片,可用于快速搭建基于LoRa等通信的应用产品。 LoRa-Radio-Driver软件包在LoRaWAN开源协议栈LoRaMAC-Node中的radio基础上,进一步封装实现。
LoRaMac\Radio https://github.com/Lora-net/LoRaMac-node/tree/master/src/radio
port
主要包含当前在不同MCU平台下支持的lora模块,lora-module文件夹中的xxxx-borad.c包含了与LoRa模块直接相关的主要硬件接口配置:
lora-module
其他mcu平台下的硬件接口实现
SPI外设——用户需根据实际MCU平台,自定义LoRa模块实际所需要使用的SPI外设
选择SPI外设
Hardware Drivers Config --->
On-chip Peripheral Drivers --->
[*] Enable SPI --->
--- Enable SPI
[ ] Enable SPI1
[ ] Enable SPI2
[ ] Enable SPI3
[ ] Enable SPI4
[ ] Enable SPI5
在bsp\目标板XX\board\Kconfig增加如下定义
menuconfig BSP_USING_SPI
bool "Enable SPI"
select RT_USING_SPI
if BSP_USING_SPI
config BSP_USING_SPI1
bool "Enable SPI1"
default n
if BSP_USING_SPI1
config BSP_SPI1_RX_USING_DMA
bool "Enable SPI1 RX DMA"
default n
config BSP_SPI1_TX_USING_DMA
bool "Enable SPI1 TX DMA"
default n
endif
# 根据实际需要,增加其他BSP_USING_SPI2、BSP_USING_SPI3...
endif
定时服务——用于提供射频通信所需的定时\超时服务,目前支持以下两种方式,二选一
Multi-Rtimer软件包
若使能multi-rtimer,lora-radio-driver优先使用multi-rtimer提供定时\超时服务。
注:如果应用在工业温度范围、时间精度要求高(us\ms级别)的场景,建议使用multi-rtimer,并设置RTC时钟源为外部32768晶振,否则可能会出现下行丢包的情况。
RT-Thread online packages --->
peripheral libraries and drivers --->
[*] multi_rtimer: a real-time and low power software timer module. --->
Version (latest) --->
multi_rtimer options --->
[] multi_rtimer demo example
可选内核组件
ulog组件——用于打印日志信息
如果没有使用ulog,默认使用rt_kprintf来实现信息输出功能
RT-Thread Components --->
Utiliess --->
[*] Enable ulog
[*] Enable ISR log.
使用 lora-radio-driver 软件包,需要在 RT-Thread 的包管理中选中它,具体路径如下:
RT-Thread online packages --->
peripheral libraries and drivers --->
[*] lora_radio_driver: lora chipset(sx126x\sx127x.)driver. --->
Select LoRa Radio Object Type (LoRa Radio Single-Instance)
(lora-radio0)Setup LoRa Radio Device Name
(spi3) Setup LoRa Radio Spi Name (Define BSP_USING_SPIx in [Target Platform]\Board\Kconfig)
Select LoRa Chip Type (LoRa Transceiver [SX126X]) --->
Select Supported LoRa Module [SX126X] --->
[ ] Enable LoRa Radio Debug
Select LoRa Radio Driver Sample --->
Version (latest) --->
Select LoRa Radio Driver Sample
根据实际情况,可选择测试示例
在 lora-radio-driver\ports\lora-module文件下,参考已有模板,根据实际需要增加新的mcu平台适配文件、新的lora模块驱动文件xxxx-board.c
当前所使用的硬件测试平台如下所示
| 序号 | 硬件平台 | MCU | LoRa模块 | 主要用户接口 |
| --- | --- | --- | --- | --- |
| 1 | LSD4RF-TEST2002 | STM32L476VG | LSD4RF-2R717N40
( SX1268 ) |
- 用户接口定义
- VCC - 3.3V
- GND
- SCK - PC10 (SPI3)
- MISO - PC11 (SPI3)
- MOSI - PC12 (SPI3)
- NSS - PA15
- RESET - PA7
- DIO0 - PB1
- BUSY - PB2
- RFSW1 - PB0
- RFSW2 - PC5
- 射频开关TX trace
- TX: RFSW1 = 1 , RFSW2 = 0
- TX: RFSW1 = 0 , RFSW2 = 1
|
| 2 | LSD4RF-TEST2002 | STM32L476VG | LSD4RF-2F717N20
( SX1278 ) |
- 用户接口定义
- VCC - 3.3V
- GND
- SCK - PC10 (SPI3)
- MISO - PC11 (SPI3)
- MOSI - PC12 (SPI3)
- NSS - PB6
- RESET - PA7
- DIO0 - PB1
- DIO1 - PC4
- DIO2 - PB2
- DIO3 - NC
- DIO4 - NC
- RFSW1 - PB0
- RFSW2 - PC5
- 射频开关TX trace
- TX: RFSW1 = 1 , RFSW2 = 0
- TX: RFSW1 = 0 , RFSW2 = 1
|
| 3 | Nucleo-L476RG | STM32L476RG | Ra-01
(RT-thread LoRa Adruino扩展板V1) |
- 用户接口定义
- VCC - 3.3V
- GND
- SCK - PA5(SPI1)
- MISO - PA6(SPI1)
- MOSI - PA7(SPI1)
- NSS - PB6
- RESET - PC7
- DIO0 - PA9
- DIO1 - PA8
|
若使能 [* ] LoRa Radio Test Shell,则可以通过shell(finish)命令直接进行LoRa相关测试
[*] Enable LoRa Radio Test Shell │ │
Select the RF frequency (Region CN470) ---> │ │
Select RF Modem (Modem LoRa) --->
| 序号 | finish命令 | 说明 |
|---|---|---|
| 1 | lora probe | 测试lora设备(SPI)访问是否正常 |
| 2 | lora cw | 输出CW,可用于测试发射功率、频点等 <para1>:频点,单位Hz <para2>:功率,单位dBm |
| 3 | lora ping | 单向\双向通信测试 <para1> : 主机\从机 -m 主机 -s 从机 <para2>: 发送数据包个数 |
| 4 | lora rx | 接收(监听)数据包,同时以16进制格式与ASCII码显示数据内容 |
| 5 | lora config | 配置射频参数 <para1>:radio参数,字符表示 freq 表示频率,单位Hz power 表示发射功率,单位dbm sf 表示扩频因子,有效值: 7~12 bw表示带宽,有效值: 0 (125kHz)、1 (250KHz)、2 (500KHz) public表示同步字,有效值: 0 (sync = 0x12), 1 (sync = 0x34) iq 表示iq反转,有效值: 0 (iq不反转),1 (iq反转) <para2>:radio参数的具体值 |