其他分享
首页 > 其他分享> > 1、STM32L151+LoRa开发板笔记

1、STM32L151+LoRa开发板笔记

作者:互联网

1、支持 LoRaWAN 协议
2、可接插锂电池、板载 USB 转串口

1、介绍
LoRa_Kit_151 的射频部分是基于 Semtech SX127x 芯片的模块,主控芯片采用 STM32L151CBU6。是一款低功耗、高性价比的LoRaWAN 方案评估板。

1.2、产品特性
板载 CP2102 USB 转串口芯片(被连到 151 的 USART1),方便调试和烧写程
序(驱动程序);

2 个 LED 指示灯:橙色:电源指示(闪烁 – 通电; 长明 – 充电; 熄灭 – 充电完成),白色:连接到 PB8,高电平点亮;

RTC 时钟采用 32.768KHz 外部晶振;

板载锂电池充放电管理芯片,可直接对锂电池充电或使用锂电池供电;

工作频段:433MHz ~ 510MHz;

发射功率:18dBm ± 1dBm,发射电流:≈100mA;

接收灵敏度:-139dBm(SF12、带宽 125KHz);

完整的 STM32L151 特性:SPI、USART、IIC、GPIO、ADC……

提供支持 LoRaWAN Class A/C 协议的 SDK 开发包;

系统资源:FLASH – 128K, RAM – 16K, EEPROM – 4K;

用户可用资源:FLASH – 64K, RAM – 8K, EEPROM – 4K。

2、SDK开发包指南
2.1、开发包简介

开发环境:MDK-ARM μVision5.23.0.0

完全符合 LoRaWAN 1.0.1 和 1.0.2 协议标准

支持 Class A 和 Class C 协议

支持 ABP 和 OTAA 激活

支持上下行双向通信

基础的低功耗设计

2.2、开发包使用方法

V5.23 版本或高于此版本的 MDK-ARM 是可以对该开发包直接打开并编译的。

例程中包含 868MHz、915 MHz 等国际常用频段的定义,默认是使用 470-510 频段的,注意确认其中的宏定义部分(参照图 2-1)。若需要使用 868 MHz、915 MHz等频段,按需自行修改宏定义即可。
在这里插入图片描述

2.2.1、 头文件“Comissioning.h”中的一些参数
在这里插入图片描述
2.2.2、 头文件“LoRaMac-definitions.h”及信道

该头文件定义了 LoRaWAN 的基础通信配置的参数,,其中根据不同频段参数有所不同。我们默认的例程使用的是 470~510MHz 频段。

#define LORA_MAX_NB_CHANNELS 96

通过上面的宏定义,可知该频段总共支持 96 个上行信道,具体的信道配置如
下图红框内的代码:
在这里插入图片描述
由以上代码可知:从 470.3MHz 开始,信道之间间隔 200KHz,489.3MHz 结束。

与 96 上行信道对应的下行信道只有 48 个,从 500.3MHz 开始,通信间隔200KHz,509.7MHz 结束:

#define LORAMAC_FIRST_RX1_CHANNEL ( (uint32_t) 500.3e6 )

#define LORAMAC_LAST_RX1_CHANNEL ( (uint32_t) 509.7e6 )

通过如下函数与上行信道对应:

RxWindowSetup( LORAMAC_FIRST_RX1_CHANNEL + ( Channel % 48 ) * LORAMAC_STEPWIDTH_RX1
_CHANNEL, RxWindowsParams[0].Datarate, RxWindowsParams[0].Bandwidth, RxWindowsParam
s[0].RxWindowTimeout, false );

其中利用(channel % 48)将上行信道分为 0~47 和 48~95,分别与下行信道的 0~47对应,另外还有一个固定的下行 RX2 信道:

#define RX_WND_2_CHANNEL { 505300000, DR_0 }

实际上,单SX1301的网关只有 8个上行信道,所以需要设置SDK的信道掩码,
只开启需要的信道即可:

LoRaMacParamsDefaults.ChannelsMask[0] = 0x00FF;
LoRaMacParamsDefaults.ChannelsMask[1] = 0x0000;
LoRaMacParamsDefaults.ChannelsMask[2] = 0x0000;
LoRaMacParamsDefaults.ChannelsMask[3] = 0x0000;
LoRaMacParamsDefaults.ChannelsMask[4] = 0x0000;
LoRaMacParamsDefaults.ChannelsMask[5] = 0x0000;

上面代码中,LoRaMacParamsDefaults.ChannelsMask 数组元素为 uint16_t 型,
其中每 1bit 代表一个信道,所以该 6 个长度的数组,总共可代表 16*6=96 个信
道,并且每一个元素都是 LSB,即:

0x00FF; //bit 15~0
0x0000; //bit 31~16
0x0000; //bit 47~32
0x0000; //bit 63~48
0x0000; //bit 79~64
0x0000; //bit 95~80

所以在本例程中,LoRaMacParamsDefaults.ChannelsMask[0] = 0x00FF;表示只使
用 0~7 信道。

2.2.3 关于发送周期

LoRaWAN 的优势在于长距离通信,适合数据统计、自动化仪表周期性抄报等实时性要求不高的场景,不能够用于短时间内多次发送数据的场合。本例程发送数据的周期为 1 分钟,最快可以缩短到 10 秒钟一次,但需要节点很少,距离较近且干扰较小的情况才行。

#define APP_TX_DUTYCYCLE   60000 //ms

标签:频段,ChannelsMask,0x0000,开发板,信道,LoRaMacParamsDefaults,MHz,LoRa,STM32L151
来源: https://blog.csdn.net/weixin_46567262/article/details/114548367