使用CubeMX创建STM32WL板子的LoRaWAN应用

描述

引言

本篇 LAT 介绍使用 CubeMX 创建基于采用 STM32WLE5JC/STM32WL55JC 的 STM32WL 板子 的 LoRaWAN 应用。

其中,参考使用了 STM32Cube_FW_WL_V1.0.0ProjectsNUCLEOWL55JCApplicationsLoRaWANLoRaWAN_End_Node 创建一个 WLE5Jx_EndNode 的例子。

关于不同 MCU 间的移植可参考

UM1718 11.9 Switching to another MCU

UM1718 15 Tutorial 5: Exporting current project configuration to a compatible MCU

需要提前准备的环境:

mcu

1.配置 CubeMX

1.1 配置 CubeMX 并下载 CubeWL

可以使用 CubeMX 默认安装的仓库目录也可以自定义仓库目录,本例使用自定义的仓库目录C:UsersgongwSTM32CubeRepositoryCubeWL,如下Help=>Updater Settings=>Repository Forlder=>C:UsersgongwSTM32CubeRepositoryCubeWL=>OK

mcu

mcu

选择 Manage software installations 中的 Install or remove embedded software packages 下的

“INSTALL / REMOVE”

mcu

mcu

点Refresh 更新数据库

mcu

Fresh 结束后,点开 STM32WL 左侧的黑色三角,选中 STM32WL 下版本 1.0.0 的 STM32Cube

MCU Package for STM32WL Series,点 Install Now

mcu

点击 Close

1.2 CubeMX 新建项目

打开 STM32CubeMX,在 New Project 下有三中选择, 请根据需求选择 New Project 的方式!

mcu

1.2.1 Start My project from MCU

第 1 种可使用于所有的 WL 产品,只能生成和配置的用户自定义(User Defined)的LoRaWAN/SigFox/SUBGHZ 应用,不能生成 CubeWL 中 AT_Slave/EndNode/PingPong demo

1.2.2 Start My project from BOARD

第 2 种适用于 NUCLEO-WL55JC1 和 NUCLEO-WL55JC1 两种 Demo 板,只能生成和配置的用

户自定义(User Defined)的LoRaWAN/SigFox/SUBGHZ 应用,不能生成 CubeWL 中AT_Slave/EndNode/PingPong demo

1.2.3 Start My project from EXAMPLES

第 3 种适用于生成 CubeWL 中 NUCLEO-WL55JC1 和 NUCLEO-WL55JC1 的 Examples,可生成和配置 CubeWL 中AT_Slave/EndNode/PingPong demo

1.2.4 Start My project from MCU STM32WLEx

在 New Project 下选择,”Start My project from MCU ”下的”ACCESS TO MCU SELECTOR“

mcu

mcu

mcu

mcu

mcu

mcu

mcu

mcu

mcu

1.3 CubeMX 导入参考项目

mcu

mcu

mcu

mcu

此时再查看 File =>Import Project 选项,变为灰色,表示新项目已被配置,不能再 import 参考项

目。

mcu

1.4 CubeMX 配置项目

1.4.1 CubeMX 配置 Project Manager

选择 Project Manager

1.4.1.1 配置 Project

选择右侧 Project 并配置如下:

mcu

mcu

注意:

通过 Browse 选择 Project 保存的目录

项目名称 WLEx_AT_Slave 创建在STM32Cube_FW_WL_V1.0.0ProjectsNUCLEO

WL55JCApplicationsLoRaWAN 下,和LoRaWAN_End_Node 同级目录,即C:UsersgongwSTM32CubeRepositoryCubeWLSTM32Cube_FW_WL_V1.0.0ProjectsNUCLEO-

WL55JCApplicationsLoRaWANWLEx_AT_Slave,以便于与 LoRaWAN_End_Node 进行比较

配置 Application Structure 为 Advanced 与 basic 有什么区别?

Application Structure 为 Advanced 时目录结构分类分级目录更清晰。

Application Structure 为 Basic 时,所有的*.h 都在 WLEx_AT_SlaveInc 目录下,所有的*.c 在

WLEx_AT_SlaveSrc 目录下。

一旦生成过一次代码后目录结构就无法更改了!!!

mcu

1.4.1.2 配置 Code Generator

选择右侧 Code Generator 并配置如下,选择”Add necessary library files as reference in the toolchain project configuration file “,这样将不生成 Drivers 和 Middlewares 目录。

选择 Generated files 下的“Generate peripheral initialization as a pair of ‘.c/.h’ per peripheral”

mcu

mcu

注意:

Copy all used library Package (如复制 DriversSTM32WLxx_HAL_Driver 下的所有驱动)

WLEx_AT_Slave 复制到其他目录下,还能工作

Copy only the necessary library files(如仅复制 DriversSTM32WLxx_HAL_Driver 下使用到的驱动)WLEx_AT_Slave 复制到其他目录下,还能工作

Add necessary library files as reference in the toolchain project configuration file(不生成 Drivers 和Middlewares 目录,仅参考DriversSTM32WLxx_HAL_Driver 下的所有驱动)

WLEx_AT_Slave 复制到其他目录下,不能工作

参考 UM1718 4.9 Project Manager view

mcu

3. 配置外设

2.1 使能外设

2.1.1 Middleware=>LORAWAN

Middleware=>LORAWAN=>Mode 中勾选Enabled,LORAWAN 功能就使能了,同时SIGFOX 和 SUBGHZ_PHY 就失能了,默认界面如下,后续再继续配置 LORAWAN 应用。

mcu

2.1.2 Timers=>RTC 使能

Timers=>RTC=>勾选 Activate Clock Source,并配置 Alarm A 为 Internal Alarm A

mcu

2.2 RTC

配置 Alarm A 为 Internal Alarm A

mcu

Clock Configuration => RTC Clock Mux=>LSE

在 Clock Configuration 中检查 RTC Clock Mux 是否配置为 LSE

mcu

Timer =>RTC=>Users Constants

mcu

mcu

mcu

Timer =>RTC=>Parameter Settings

mcu

Timer =>RTC=>NVIC Settings

mcu

Middleware => LORAWAN => Platform Settings => Timer Server => RTC

mcu

2.3 DebugLine

Connectivity=>LPUART1 (AT_Slave)

mcu

mcu

mcu

mcu

mcu

mcu

mcu

mcu

Clock Configuration => USART2 Clock Mux => SYSCLK

mcu

Middleware => LORAWAN => LoRaWAN middleware => radio_board_if =>Activate Debug Line

mcu

Platform Settings => VCOM => USART2

mcu

2.4 System Core => GPIO (RF SW CTRL / BUTTON / LED)

2.4.1 RF_CTRL

NUCLEO-WL55JC

mcu

mcu

mcu

mcu

2.4.2 LED

配置控制 LED 的 GPIO

mcu

mcu

2.4.3 BUT 

配置控制 BUTTON 的 GPIO

mcu

mcu

mcu

mcu

2.4.4 DBG

mcu

mcu

2.4.5 SWD(可选) 

需使能 Trace and Debug => DEBUG => JTAG and Trace => Serial Wire

mcu

mcu

2.4.6 Middleware=>LORAWAN=>Platform Settings 

Board resources => LED & BUTTON

Radio => RF SW CTRL

Debug = > Debug Line

mcu

2.5 ADC

Analog=>ADC

mcu

mcu

Middleware=>LORAWAN=>Platform Settings => Vrefint T calibration => ADC (EndNode)

3 STM32WL Templates Patches for CubeMX

STM32WL Templates 在如下目录,如需要可自行定制自己的 Templates

mcu

针对不同的客户定制化的板子,硬件外设配置不一致,客户可根据需要定制化自己的外设配置。

从 NUCLEO-WL55JC(BGA73) 移植到STM32WLExCxUx(QFN48)定制化的板子上,射频开关(RF SW CTRL),按键(BUTTON), LED 的配置会不一样,可能导致编译错误,如想生成的代码不会产生编译错误,需要编辑一下 STM32WL的 template。

3.1 CubeMX template patches for stm32wl

请参考

mcu

3.2 CubeMX Updates from v6.1.1 to v6.2.0

mcu

mcu

mcu

4.验证

4.0 参考工程

mcu

4.1 生成代码 GENERATE CODE

此时,可以先选择 GENERATE CODE 生成 Project,(如需,请自己选择项目保存的目录)

mcu

mcu

mcu

可选择 Open Project 使用 IDE 直接打开 Project。

或选择 Open Folder 后,还需再选择 EWARMProject.eww 打开 Project

mcu

4.2 编译并下载

用 IAR 打开STM32Cube_FW_WL_V1.0.0ProjectsNUCLEO

WL55JCApplicationsLoRaWANWLEx_AT_SlaveEWARMProject.eww 如果 IAR 之前已经打开了 WLEx_AT_Slave,在每次重新生成代码时都如有如下提示,选择“Yes

to All”

mcu

按 F7 或选择 Project=>Make(F7)来编译工程,如果编译无错误,选择

Project=>Download=>Download Active Application 下载 WLEx_AT_Slave 应用

5 接入 cn1.LoRiot Network Server

如果不需要将 WL 的 Sensor 数据转发到 cn1.LoRiot Network Server 网络服务器上,可跳过此步骤。

如果需要将 WL 的 Sensor 数据转发到 cn1.LoRiot Network Serve 网络服务器上,需用 CubeMX 重新配置下

LORAWAN 的一些参数。

5.1 WL Sensor End Device 信息更改

5.1.1 配置 REGION_EU868

默认配置即可

mcu

5.1.2 配置 REGION_CN470

mcu

mcu

mcu

mcu

mcu

mcu

5.2 配置 DevEUI, AppEUI 和 AppKey

在 LoRaWANAppse-identity.h 中更改设备信息 DevEUI, AppEUI 和 AppKey

mcu

DevAddr 不需要设置静态地址,可以配置的

mcu

mcu

5.3 转发到 myDevuces Cayenne 应用服务器(可选)

mcu

5.4 WL Sensor End Device 信息获取和确认

其中包含更新过的 WLE5Jx_EndNode.ioc

用 IAR 编译 ProjectsNUCLEO-WL55JCApplicationsLoRaWANWLE5Jx_EndNodeEWARMProject.eww,并下载

到 WL 中,注意 STLINKv3 的设置。

连接 WL 串口到 PC,PC 端打开串口,配置如下,然后重启 WL,会看到 DEV EUI,APP EUI,APP KEY

Open a terminal emulation software such as Tera Term and configure it with the following settings:

– Port: (Virtual COM port number assigned to the board)

– Baud rate: 115200

– Data: 8 bit

– Parity: none

– Stop: 1 bit

mcu

mcu

mcu

mcu

mcu

mcu

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分