SPMOD - LoRa
2023-06-21
概述
SPMOD_LoRa(LoRa 模块)采用 M-XL8 模块。
SPMOD - LoRa 介绍
- 采用 Sipeed-SPMOD 接口(2.54mm * 8PIN 排针),统一 MaixPy 开发板接口
- 利用 SP-MOD SPI 和 LoRa 模块通讯
- LoRa 模块:M-XL8 SX1276 模块是一个 SPI 接口,内置 LoRaTM 调制解调器和可调功率放大器的 LoRa 模块,它具有高性能和可靠性
- 370MHz-1200MHz, 最大20dBm (100mW)持续发射功率
- 模块尺寸:25.0*10.0*4.3mm
M-XL8 SX1276 LoRa 模块 介绍
功能特点: | 参数 |
---|---|
工作频段 | 370MHz-1200Mhz |
发射功率 | 20dBm(最大) |
通信接口 | SPI |
工作电压 | 1.8V~6.3V |
工作温度 | -40℃ - 80℃ |
天线 | 外置天线,IPEX或焊接 |
接收灵敏度 | -148dbm |
RSSI动态范围 | 127dB |
最大链路预算 | 168dB |
收发状态电流 | 9.9mA |
睡眠状态电流 | 50nA |
调制方式 | FSK, GFSK, MSK, GMSK, LoRaTM及OOK |
内置LoRaTM调制解调器,内置CRC,继承+12dBm可调PA+LNA
SPMOD_lora 模块引脚定义:
引脚序号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
1 | GND | G | 模块电源地 |
2 | CS | I/O | SPI片选引脚 |
3 | SO | I/O | MISO数据引脚,主机输入从机输出 |
4 | RST | I | 模块复位引脚,低有效 |
5 | 3V3 | V | 模块电源输入正 |
6 | SCK | I | SPI串行时钟引脚 |
7 | SI | I/O | MOSI数据引脚,主机输出从机输入 |
8 | IRQ | I | 连接至模块DIO0,可编程决定功能 |
- 接线方式:
MCU:FUN(IO) | SP_LCD |
---|---|
GPIOHS7(IO_7) | RST |
SPI:MISO(IO_15) | SO |
SPI:SS0(IO_20) | CS |
SPI:SCK(IO_21) | SCK |
SPI:MOSI(IO_8) | SI |
GPIOH(IO_6) | IRQ |
1.8-6.3V | 3.3V |
GND | GND |
使用例程
流程
- 创建 LoRa 对象并初始化
- 发送或者接收数据
C 示例:
fpioa_set_function(SPI_LoRa_SX127X_CS_PIN_NUM, FUNC_SPI1_SS0); // CS: 20
fpioa_set_function(SPI_LoRa_SX127X_SCK_PIN_NUM, FUNC_SPI1_SCLK); // SCLK: 21
fpioa_set_function(SPI_LoRa_SX127X_MOSI_PIN_NUM, FUNC_SPI1_D0); // MOSI: 8
fpioa_set_function(SPI_LoRa_SX127X_MISO_PIN_NUM, FUNC_SPI1_D1); // MISO: 15
fpioa_set_function(SPI_LoRa_SX127X_IRQ_PIN_NUM, FUNC_GPIOHS0 + SPI_LoRa_SX127X_IQR_GPIO_NUM); // IQR: 6
fpioa_set_function(SPI_LoRa_SX127X_RST_PIN_NUM, FUNC_GPIOHS0 + SPI_LoRa_SX127X_RST_GPIO_NUM); // RST: 7
spi_init(SPI_DEVICE_1, SPI_WORK_MODE_0, SPI_FF_STANDARD, DATALENGTH, 0);
sx1278_begin(&SX1278, SX1278_433MHZ, SX1278_POWER_17DBM, SX1278_LoRa_SF_8,
SX1278_LoRa_BW_20_8KHZ, 10);
if (master == 1)
{
printf("====MASTER====\r\n");
ret = sx1278_LoRaEntryTx(&SX1278, 16, 2000);
}
else
{
printf("====SALAVE====\r\n");
ret = sx1278_LoRaEntryRx(&SX1278, 16, 2000);
}
MaixPy 例程:
fm.register(20, fm.fpioa.GPIOHS20, force=True) # RST
fm.register(7, fm.fpioa.GPIOHS7, force=True) # CS
# set gpiohs work mode to output mode
cs = GPIO(GPIO.GPIOHS20, GPIO.OUT)
rst = GPIO(GPIO.GPIOHS7, GPIO.IN)
# The other pins are configured at SPI initialization time
spi1 = SPI(SPI.SPI1, mode=SPI.MODE_MASTER, baudrate=100 * 1000,
polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=21, mosi=8, miso = 15)
lora = SX127x(spi=spi1, pin_ss=cs)
lora.init()
#######receiver###########
receive(lora)
########sender###########
# send(lora)
运行环境
语言 | 开发板 | SDK/固件版本 |
---|---|---|
C | MaixCube | kendryte-standalone-sdk v0.5.6 |
MaixPy | MaixCube | maixpy v0.5.1 |
MaixPy固件建议自行从最新源码编译
运行结果
C
MaixPy
移植
修改以下参数即可适配其他 K210 开发板.
C
// board_config.h #define SPI_INDEX 1 #define SPI_SCLK_RATE 600*1000 #define SPI_CHIP_SELECT_NSS 0//SPI_CHIP_SELECT_0 #define SPI_LoRa_SX127X_CS_PIN_NUM 20 #define SPI_LoRa_SX127X_SCK_PIN_NUM 21 #define SPI_LoRa_SX127X_MOSI_PIN_NUM 8 #define SPI_LoRa_SX127X_MISO_PIN_NUM 15 #define SPI_LoRa_SX127X_IRQ_PIN_NUM 6 #define SPI_LoRa_SX127X_RST_PIN_NUM 7 #define SPI_LoRa_SX127X_IQR_GPIO_NUM 6 #define SPI_LoRa_SX127X_RST_GPIO_NUM 7
MaixPy
################### config ################### LoRa_RST = const(20) LoRa_CS = const(7) LoRa_SPI_SCK = const(21) LoRa_SPI_MOSI = const(8) LoRa_SPI_MISO = const(15) LoRa_SPI_NUM = SPI.SPI1 LoRa_SPI_FREQ_KHZ = const(100) ##############################################
参考设计
- SPMOD_LoRa 尺寸图:
资源链接
资源 | --- |
---|---|
官网 | www.sipeed.com |
SIPEED 官方淘宝店 | sipeed.taobao.com |
Github | https://github.com/sipeed |
BBS | http://bbs.sipeed.com |
MaixPy 文档官网 | http://maixpy.sipeed.com |
Sipeed 模型平台 | https://maix.sipeed.com |
SDK 相关信息 | https://dl.sipeed.com/MAIX/SDK |
HDK 相关信息 | https://dl.sipeed.com/MAIX/HDK |
E-mail(技术支持和商业合作) | Support@sipeed.com |
telgram link | https://t.me/sipeed |
MaixPy AI QQ 交流群(四群) | 862340358 |