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

发布者:ping777最新更新时间:2023-05-10 来源: elecfans关键字:CubeMX 手机看文章 扫描二维码
随时随地手机看文章

引言

本篇 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

需要提前准备的环境:

c2e688b8-fdd8-11ec-ba43-dac502259ad0.png

1.配置 CubeMX

1.1 配置 CubeMX 并下载 CubeWL

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

c2f98440-fdd8-11ec-ba43-dac502259ad0.png

c30c69de-fdd8-11ec-ba43-dac502259ad0.png

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

“INSTALL / REMOVE”

c322ca76-fdd8-11ec-ba43-dac502259ad0.png

c341be04-fdd8-11ec-ba43-dac502259ad0.png

点Refresh 更新数据库

c369052c-fdd8-11ec-ba43-dac502259ad0.png

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

MCU Package for STM32WL Series,点 Install Now

c37f2e74-fdd8-11ec-ba43-dac502259ad0.png

点击 Close

1.2 CubeMX 新建项目

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

c39ad386-fdd8-11ec-ba43-dac502259ad0.png

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“

c3aac462-fdd8-11ec-ba43-dac502259ad0.png

c3bbc50a-fdd8-11ec-ba43-dac502259ad0.png

c3d48e82-fdd8-11ec-ba43-dac502259ad0.png

c3e8ba06-fdd8-11ec-ba43-dac502259ad0.png

c4000300-fdd8-11ec-ba43-dac502259ad0.png

c40e6486-fdd8-11ec-ba43-dac502259ad0.png

c429c85c-fdd8-11ec-ba43-dac502259ad0.png

c447767c-fdd8-11ec-ba43-dac502259ad0.png

c4650c82-fdd8-11ec-ba43-dac502259ad0.png

1.3 CubeMX 导入参考项目

c4a063ea-fdd8-11ec-ba43-dac502259ad0.png

c4b7d14c-fdd8-11ec-ba43-dac502259ad0.png

c4cd5f76-fdd8-11ec-ba43-dac502259ad0.png

c4d9d35a-fdd8-11ec-ba43-dac502259ad0.png

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

目。

c4f997ee-fdd8-11ec-ba43-dac502259ad0.png

1.4 CubeMX 配置项目

1.4.1 CubeMX 配置 Project Manager

选择 Project Manager

1.4.1.1 配置 Project

选择右侧 Project 并配置如下:

c5175036-fdd8-11ec-ba43-dac502259ad0.png

c5294a52-fdd8-11ec-ba43-dac502259ad0.png

注意:

通过 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 目录下。

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

c5407f6a-fdd8-11ec-ba43-dac502259ad0.png

1.4.1.2 配置 Code Generator

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

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

c55144c6-fdd8-11ec-ba43-dac502259ad0.png

c565aeac-fdd8-11ec-ba43-dac502259ad0.png

注意:

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

c582ecc4-fdd8-11ec-ba43-dac502259ad0.png

3.配置外设

2.1 使能外设

2.1.1 Middleware=>LORAWAN

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

c5972392-fdd8-11ec-ba43-dac502259ad0.png

2.1.2 Timers=>RTC 使能

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

c5b5a560-fdd8-11ec-ba43-dac502259ad0.png

2.2 RTC

配置 Alarm A 为 Internal Alarm A

c5c7c1d2-fdd8-11ec-ba43-dac502259ad0.png

Clock Configuration => RTC Clock Mux=>LSE

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

c5e11042-fdd8-11ec-ba43-dac502259ad0.png

Timer =>RTC=>Users Constants

c5f3a2b6-fdd8-11ec-ba43-dac502259ad0.png

c61c6930-fdd8-11ec-ba43-dac502259ad0.png

c6348880-fdd8-11ec-ba43-dac502259ad0.png

Timer =>RTC=>Parameter Settings

c646824c-fdd8-11ec-ba43-dac502259ad0.png

Timer =>RTC=>NVIC Settings

c6657260-fdd8-11ec-ba43-dac502259ad0.png

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

c691db5c-fdd8-11ec-ba43-dac502259ad0.png

2.3 DebugLine

Connectivity=>LPUART1 (AT_Slave)

c6a8215a-fdd8-11ec-ba43-dac502259ad0.png

c6cca58e-fdd8-11ec-ba43-dac502259ad0.png

c6e0ad18-fdd8-11ec-ba43-dac502259ad0.png

c6f7adc4-fdd8-11ec-ba43-dac502259ad0.png

c70e5e84-fdd8-11ec-ba43-dac502259ad0.png

c71bbe6c-fdd8-11ec-ba43-dac502259ad0.png

c7320cf8-fdd8-11ec-ba43-dac502259ad0.png

c757a72e-fdd8-11ec-ba43-dac502259ad0.png

Clock Configuration =>USART2 Clock Mux => SYSCLK

c77378fa-fdd8-11ec-ba43-dac502259ad0.png

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

c7847880-fdd8-11ec-ba43-dac502259ad0.png

Platform Settings => VCOM => USART2

c79665e0-fdd8-11ec-ba43-dac502259ad0.png

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

2.4.1 RF_CTRL

NUCLEO-WL55JC

c7b547c6-fdd8-11ec-ba43-dac502259ad0.png

c7d6892c-fdd8-11ec-ba43-dac502259ad0.png

c7f3f322-fdd8-11ec-ba43-dac502259ad0.png

c81fca92-fdd8-11ec-ba43-dac502259ad0.png

2.4.2 LED

配置控制 LED 的 GPIO

c8350fec-fdd8-11ec-ba43-dac502259ad0.png

c8583b84-fdd8-11ec-ba43-dac502259ad0.png

2.4.3 BUT

配置控制 BUTTON 的 GPIO

c875381a-fdd8-11ec-ba43-dac502259ad0.png

c8944c8c-fdd8-11ec-ba43-dac502259ad0.png

c8b73166-fdd8-11ec-ba43-dac502259ad0.png

c8d7bfda-fdd8-11ec-ba43-dac502259ad0.png

2.4.4 DBG

c8ed6a24-fdd8-11ec-ba43-dac502259ad0.png

c9056228-fdd8-11ec-ba43-dac502259ad0.png

2.4.5 SWD(可选)

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

c91dad6a-fdd8-11ec-ba43-dac502259ad0.png

c933421a-fdd8-11ec-ba43-dac502259ad0.png

2.4.6 Middleware=>LORAWAN=>Platform Settings

Board resources => LED & BUTTON

Radio => RF SW CTRL

Debug = > Debug Line

c9543894-fdd8-11ec-ba43-dac502259ad0.png

2.5 ADC

Analog=>ADC

c99bec52-fdd8-11ec-ba43-dac502259ad0.png

c9c84324-fdd8-11ec-ba43-dac502259ad0.png

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

3 STM32WL Templates Patches for CubeMX

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

c9f5cc7c-fdd8-11ec-ba43-dac502259ad0.png

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

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

3.1 CubeMX template patches for stm32wl

请参考

ca06a286-fdd8-11ec-ba43-dac502259ad0.png

3.2 CubeMX Updates from v6.1.1 to v6.2.0

ca25e876-fdd8-11ec-ba43-dac502259ad0.png

ca5e08b4-fdd8-11ec-ba43-dac502259ad0.png

ca6bdfca-fdd8-11ec-ba43-dac502259ad0.png

4.验证

4.0 参考工程

ca7e0ce0-fdd8-11ec-ba43-dac502259ad0.png

4.1 生成代码 GENERATE CODE

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

ca8eb34c-fdd8-11ec-ba43-dac502259ad0.png

caa22422-fdd8-11ec-ba43-dac502259ad0.png

cac31394-fdd8-11ec-ba43-dac502259ad0.png

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

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

cada57f2-fdd8-11ec-ba43-dac502259ad0.png

4.2 编译并下载

用 IAR 打开STM32Cube_FW_WL_V1.0.0ProjectsNUCLEO

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

to All”

cb80ab5c-fdd8-11ec-ba43-dac502259ad0.png

按 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

默认配置即可

cbb00672-fdd8-11ec-ba43-dac502259ad0.png

5.1.2 配置 REGION_CN470

cbc2efe4-fdd8-11ec-ba43-dac502259ad0.png

cbe1ec6e-fdd8-11ec-ba43-dac502259ad0.png

cc06d920-fdd8-11ec-ba43-dac502259ad0.png

cc1d2a5e-fdd8-11ec-ba43-dac502259ad0.png

cc4deb58-fdd8-11ec-ba43-dac502259ad0.png

cc72adbc-fdd8-11ec-ba43-dac502259ad0.png

5.2 配置 DevEUI, AppEUI 和 AppKey

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

cc8bc306-fdd8-11ec-ba43-dac502259ad0.png

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

cca9d882-fdd8-11ec-ba43-dac502259ad0.png

ccbc9328-fdd8-11ec-ba43-dac502259ad0.png

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

cccfa134-fdd8-11ec-ba43-dac502259ad0.png

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

cce44d50-fdd8-11ec-ba43-dac502259ad0.png

cd06932e-fdd8-11ec-ba43-dac502259ad0.png

cd1ac240-fdd8-11ec-ba43-dac502259ad0.png

cd3c79c6-fdd8-11ec-ba43-dac502259ad0.png

cd594aa6-fdd8-11ec-ba43-dac502259ad0.png

cd8a2f86-fdd8-11ec-ba43-dac502259ad0.png


关键字:CubeMX 引用地址:使用CubeMX创建STM32WL板子的LoRaWAN应用

上一篇:STM32:Step1工具安装
下一篇:STM32的启动过程如何分析

推荐阅读最新更新时间:2024-11-12 13:06

FreeRTOS+LWIP+STM32F CUBEMX心得
近段时间有个项目,需要用到操作系统。之前用过ucos,但是经过多方考虑后,还是决定使用Freerots。 项目需要用到以太网,处理器决定使用STM32F。ST做得还是不错的,STM32CubeMX解决了很多底层的问题,但是因为之前我用的基本库,没有用到HAL库,所以在使用HAL库的时候也遇到了不少问题,还好都一一化解。唯一最大的问题是LWIP,之前用的1.4.1版本的,前后台系统,用起来很顺畅,也没出现问题。而STM32CubeMX只支持2.0的,那就用2.0的呗。结果出现了很多问题,例如死机,网络中断等等。先总结如下: 1. 第一次使用Freertos的话,因为对该系统不是很熟,所以,务必使用串口打印系统所有任务的信息,
[单片机]
如何使用STM32CubeMX配置ETH(RMII)
最近,刚接触STM32CubeMX,感觉功能非常强大,特别是对于ETH、USB、FAT等特别方便,不用再像以前那样去找各种移植方法(移植起来既麻烦也耽误时间)。 此处,我以自己手头上的一个板子(STM32F207VCT6)为例,记录一下以太网的配置过程,中间也走了一些弯路,希望其他同志今后在配置ETH的时候可以借鉴参考,以节省自己的开发周期。 具体配置过程: 1、打开STM32CubeMX,并选择好相应的芯片。文中的芯片为STM32F207VCT6,选择后如下图: 2、配置RCC时钟、ETH、PA8以及使能LWIP; 由于此处我们的开发板硬件上为RMII方式,因此选择ETH-RMII,若有同志的开发板为
[单片机]
如何使用STM32<font color='red'>CubeMX</font>配置ETH(RMII)
利用STM32CubeMx的串口DMA收发数据
一,代码生成 按以前的方法设置好时钟和调试方式,这里就不多说了。 2.设置串口1。 3.在DMA Setting里点击Add添加USART1_TX,Mode有两种模式,一种是普通模式,使用一次发送语句就发一次,另一种是循环模式,使用一次发送会一直发送。这里发送我选择普通模式,接收选择循环模式。 4.在中断设置里打开串口1的中断。 5.时钟和文件路径等设置好,然后点生成代码。 二,代码编写 1.先定义发送和接收的数组。 /* USER CODE BEGIN 0 */uint8_t aRxBuffer ;uint8_t aTxBuffer = ok ;/* USER CODE END
[单片机]
利用STM32<font color='red'>CubeMx</font>的串口DMA收发数据
STM32CubeMX之串口使用(中断方式)
环境: 开发板:STM32F4探索者(正点原子) 一. 在STM32CubeMX 图形化中开启串口中断 在 前一篇 STM32CubeMX之串口的使用 (阻塞模式) 的文章的基础上,打开串口中断,如下图所示: 然后就可以生成工程了 二. 串口中断相关函数介绍 串口中断函数 如串口1中断函数: USART1_IRQHandler() 发送接收函数 串口中断模式发送: HAL_UART_Transmit_IT() HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) 串口实
[单片机]
STM32<font color='red'>CubeMX</font>之串口使用(中断方式)
如何结合CubeMx与MC Workbench生成workbench中所未包含芯片的控制程序
前言 当前 STM32 系列丰富多彩,多达 1000 多种的料号。同时,ST 针对电机 FOC 控制推出了 MC SDK V5.x 的马达控制软件系统。该软件可以结合 Cubemx 生成马达控制初始化代码。由于 MC Workbench 软件芯片选择有限,不可能包含所有 ST 的产品料号,因此客户需要使用该软件时,会发现备选的芯片料号并未包含在 workbench 中。 本文针对这种场景,详细说明如何结合 CubeMx 与 MC Workbench 生成 workbench 中所未包含芯片的控制程序,客户通过该说明可以使用全系列 STM32 产品用于电机的 FOC 控制,为客户带来便利。 本文涉及到的开发板、驱动板、马达分别是
[单片机]
如何结合<font color='red'>CubeMx</font>与MC Workbench生成workbench中所未包含芯片的控制程序
STM32CubeMx学习之-NVIC
NVIC(嵌套向量中断控制器) NVIC就是控制中断响应的。主要由三个参数,一个是中断使能,一个是抢占优先级,还有一个就是响应优先级。(优先级数值越小,优先级别越高) 中断使能:很好理解,就是是否开启中断,如果开启中断,则满足中断触发条件时程序会跳到中断服务程序运行,否则不响应中断主程序继续运行。 抢占优先级:是用来判断一个中断是否可以打断另外一个中断的中断服务程序抢先运行。例如A中断触发,正在运行A中断的服务程序,此时B中断也触发,如果B中断的抢占优先级比A的高,则程序会打断A的中断服务程序,去运行B的中断服务程序,即中断嵌套。等B的中断服务程序运行完后继续运行A的中断服务程序。如果B的抢占优先级没有高过A的抢占优先
[单片机]
STM32 MCU通过STM32CubeMx配置NVIC怎么没有中断子优先级选项
1、使用CubeMx配置NVIC时为何不见子优先级选项? 有些STM32用户,尤其是那些用过基于ARM Cortx-M3/M4/M7内核的STM32 MCU的用户,在使用基于M0/M0+内核的STM32系列并通过STM32CubeMx进行NVIC配置时,不难发现一个问题,那就是怎么没有中断子优先级【或称响应优先级、副优先级等】的配置?!【当然,很多时候我们或许没有关注子优先级】如下图所示,只看到抢占优先级的配置,看不到子优先级的配置项。 上图是我基于STM32L0系列芯片的配置,该系列芯片是基于ARM Cortex-M0+内核的。我们再看看下图的NVIC配置页面,显然可以看到抢占优先级【PreemptionPriority】和
[单片机]
STM32 MCU通过STM32<font color='red'>CubeMx</font>配置NVIC怎么没有中断子优先级选项
stm32CubeMX上lwip的配置问题
上两篇博客讲了STM32CubeMX的一个版本问题还有硬件需要复位的问题,当你把这两个问题解决之后,你会发现程序烧入板子之后,以太网接口也亮了,可是当你去ping开发板时,板子与电脑之间依然连接不上,无法ping通。在调试了软件数遍之后,发现程序的逻辑并未出现什么毛病。从程序的方面检查,以太网的收发函数均为正常状态,收发数据也是正确的,可是就是无法访问到目标主机。调适了很长时间均无法发现问题,接着我们还是从硬件着手,检查发现了还是硬件的配置上出现了问题。由于生产板子的厂家有很多,虽然cpu芯片为同一型号,但是引脚接口可能改变,所以由于这个原因LAN8720这个芯片依然无法正常工作。希望大家以后在用STM32Cubemx这个开发工具
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved