【STM32WLE5系列#3 stm32wle5ccu6移植LoRaWAN_End_Node通信】

STM32WLE5系列#3 stm32wle5ccu6移植LoRaWAN_End_Node通信

第一章 stm32wle5ccu6简介和开发环境搭建
第二章 stm32wle5ccu6移植pingpong通信
第三章 stm32wle5ccu6移植LoRaWAN_End_Node工程
第四章 stm32wle5ccu6移植LoRaWAN_AT_Slave工程
第五章 stm32wle5ccu6的序列器和定时器分析



简介

官方只提供了STM32WL55JC和STM32WL55JC1的相关应用demo,由于封装不通我们并不能直接使用相关程序,需要移植才能使用。本次我们移植LoRaWAN_End_Node通信demo,为lorawan节点主动上传。.
`


一、工程移植

1、打开STM32CubeMX,选择start My projext from MCU开始工程

在这里插入图片描述
2、在MCU/MPU处选择使用STM32WLE5CCU6
在这里插入图片描述3、在File->import project导入pingpong例程,选择导入工程为C"\Users\用户\STM32Cube\Repository\STM32CuBE_FW_WLV1.2.0\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\LoRaWAN_End_Node\LoRaWAN_End_Node.ioc
用户为自己实际的用户名
在这里插入图片描述

导入后会有些报错,是因为原来WL55JC是BGA的封装引脚要多一些,而stm32wle5ccu6没有

4、在Project Manager->Project中设置工程名和存放路径,Toolchain/IDE设置为MDK-ARM;Code Generator设置为Copy all used libraries into the project folder
在这里插入图片描述

在这里插入图片描述
5、时钟输入配置,HSE和LSE都配置为Crystal/Ceramic Resonator
在这里插入图片描述
6、RTC开启Alarm A并且使能中断
在这里插入图片描述
7、LORAWAN设置如下
LoRaWAN middleware中使能CN470、lorawan版本设置为1.0.3、板级设置选BSP
在这里插入图片描述
设置静态DEVEUI,配置OTAA入网所需要的参数DEVEUI、APPEUI、APPKEY、NWKEY(注意:同一服务器中DEVEUI必须是唯一的)
在这里插入图片描述
关闭Probes Lines in Platform Settings
在这里插入图片描述

Platform Setting设置如下
在这里插入图片描述

8、时钟树配置,RTC使用LSE

在这里插入图片描述
9、点击GENERATE CODE生成代码,打开keil工程然后编译会报以下错误,是由于我们没有添加BSP包
在这里插入图片描述
10、把下载的软件包C:\Users\用户\STM32Cube\Repository\STM32Cube_FW_WL_V1.2.0\Drivers中的BSP包拷贝到当前工程下。然后在keil中添加文件和其所在目录索引。
在这里插入图片描述11、然后编译工程,0 error 0 waring
在这里插入图片描述

二、应用移植

1、首先是BSP包中关于板级文件设置与上一章节移植pingpong通信中的保持一致。为了方便也可以直接使用上一节中修改好了的BSP包。

2、工程移植后主要是lora_app.c发生了变化,应用部分变成空的了。所以我们需要对应软件包中的lora_app.c进行相关修改,这里源码太长了就不放上来了,可自行对比软件包中的源码。使用CN470的时候,需要修改信道数量,因为我们网关只有8个信道但是默认是配置的96个信道。在RegionCN470.h中

//#define CN470_MAX_NB_CHANNELS                        96
#define CN470_MAX_NB_CHANNELS                        8

3、如果需要直接在程序中修改lorawan的加密参数,可在se-identity.h中进行配置


#define STATIC_DEVICE_EUI                                  1

/*!
 * end-device IEEE EUI (big endian)
 */
#define LORAWAN_DEVICE_EUI                                 { 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x05, 0x54, 0x89 }

/*!
 * App/Join server IEEE EUI (big endian)
 */
#define LORAWAN_JOIN_EUI                                   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }

/*!
 * When set to 1 DevAddr is LORAWAN_DEVICE_ADDRESS
 * When set to 0 DevAddr is automatically set with a value provided by a pseudo
 *      random generator seeded with a value provided by the MCU platform
 */
#define STATIC_DEVICE_ADDRESS                              0

/*!
 * Device address on the network (big endian)
 */
#define LORAWAN_DEVICE_ADDRESS                             ( uint32_t )0x0100000A

/*!
 * Application root key
 */
#define LORAWAN_APP_KEY                                    10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01

/*!
 * Network root key
 */
#define LORAWAN_NWK_KEY                                    10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01

/*!
 * Forwarding Network session key
 */
#define LORAWAN_NWK_S_KEY                                  2B,7E,15,16,28,AE,D2,A6,AB,F7,15,88,09,CF,4F,3C

/*!
 * Application session key
 */
#define LORAWAN_APP_S_KEY                                  2B,7E,15,16,28,AE,D2,A6,AB,F7,15,88,09,CF,4F,3C

/*

4、修改入网方式即其他MAC参数在lora_app.h中修改


/* LoraWAN application configuration (Mw is configured by lorawan_conf.h) */
#define ACTIVE_REGION                               LORAMAC_REGION_CN470

/*!
 * CAYENNE_LPP is myDevices Application server.
 */
/*#define CAYENNE_LPP*/

/*!
 * Defines the application data transmission duty cycle. 10s, value in [ms].
 */
#define APP_TX_DUTYCYCLE                            10000

/*!
 * LoRaWAN User application port
 * @note do not use 224. It is reserved for certification
 */
#define LORAWAN_USER_APP_PORT                       2

/*!
 * LoRaWAN Switch class application port
 * @note do not use 224. It is reserved for certification
 */
#define LORAWAN_SWITCH_CLASS_PORT                   3

/*!
 * LoRaWAN default class
 */
#define LORAWAN_DEFAULT_CLASS                       CLASS_A

/*!
 * LoRaWAN default confirm state
 */
#define LORAWAN_DEFAULT_CONFIRMED_MSG_STATE         LORAMAC_HANDLER_CONFIRMED_MSG

/*!
 * LoRaWAN Adaptive Data Rate
 * @note Please note that when ADR is enabled the end-device should be static
 */
#define LORAWAN_ADR_STATE                           LORAMAC_HANDLER_ADR_ON

/*!
 * LoRaWAN Default data Rate Data Rate
 * @note Please note that LORAWAN_DEFAULT_DATA_RATE is used only when LORAWAN_ADR_STATE is disabled
 */
#define LORAWAN_DEFAULT_DATA_RATE                   DR_0

/*!
 * LoRaWAN default activation type
 */
#define LORAWAN_DEFAULT_ACTIVATION_TYPE             ACTIVATION_TYPE_OTAA

/*!
 * LoRaWAN force rejoin even if the NVM context is restored
 * @note useful only when context management is enabled by CONTEXT_MANAGEMENT_ENABLED
 */
#define LORAWAN_FORCE_REJOIN_AT_BOOT                false

/*!
 * User application data buffer size
 */
#define LORAWAN_APP_DATA_BUFFER_MAX_SIZE            242

/*!
 * Default Unicast ping slots periodicity
 *
 * \remark periodicity is equal to 2^LORAWAN_DEFAULT_PING_SLOT_PERIODICITY seconds
 *         example: 2^4 = 16 seconds. The end-device will open an Rx slot every 16 seconds.
 */
#define LORAWAN_DEFAULT_PING_SLOT_PERIODICITY       4

/*!
 * Default response timeout for class b and class c confirmed
 * downlink frames in milli seconds.
 *
 * The value shall not be smaller than RETRANSMIT_TIMEOUT plus
 * the maximum time on air.
 */
#define LORAWAN_DEFAULT_CLASS_B_C_RESP_TIMEOUT      8000

三、结果验证

我们使用TTN作为lorawan服务器,首先注册网关上线,然后按照配置的参数注册节点。
在这里插入图片描述
在这里插入图片描述
烧录程序后效果如下,节点端
在这里插入图片描述
服务器端也收到上行数据
在这里插入图片描述

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值