关键词:
STM32WL,LoRa
引言
本篇 LAT 介绍使用 CubeMX 创建基于采用 STM32WLE5JC/STM32WL55JC 的 STM32WL 板子 的 LoRaWAN 应用。
其中,参考使用了 STM32Cube_FW_WL_V1.0.0\Projects\NUCLEOWL55JC\Applications\LoRaWAN\LoRaWAN_End_Node 创建一个 WLE5Jx_EndNode 的例子。
关于不同 MCU 间的移植可参考
UM1718 11.9 Switching to another MCU
UM1718 15 Tutorial 5: Exporting current project configuration to a compatible MCU
需要提前准备的环境:
1.配置 CubeMX
1.1 配置 CubeMX 并下载 CubeWL
可以使用 CubeMX 默认安装的仓库目录也可以自定义仓库目录,本例使用自定义的仓库目录C:\Users\gongw\STM32Cube\Repository\CubeWL,如下Help=>Updater Settings=>Repository Forlder=>C:\Users\gongw\STM32Cube\Repository\CubeWL=>OK
选择 Manage software installations 中的 Install or remove embedded software packages 下的
“INSTALL / REMOVE”
点Refresh 更新数据库
Fresh 结束后,点开 STM32WL 左侧的黑色三角,选中 STM32WL 下版本 1.0.0 的 STM32Cube
MCU Package for STM32WL Series,点 Install Now
点击 Close
1.2 CubeMX 新建项目
打开 STM32CubeMX,在 New Project 下有三中选择, 请根据需求选择 New Project 的方式!
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“
1.3 CubeMX 导入参考项目
此时再查看 File =>Import Project 选项,变为灰色,表示新项目已被配置,不能再 import 参考项
目。
1.4 CubeMX 配置项目
1.4.1 CubeMX 配置 Project Manager
选择 Project Manager
1.4.1.1 配置 Project
选择右侧 Project 并配置如下:
注意:
通过 Browse 选择 Project 保存的目录
⚫ 项目名称 WLEx_AT_Slave 创建在STM32Cube_FW_WL_V1.0.0\Projects\NUCLEO
WL55JC\Applications\LoRaWAN 下,和LoRaWAN_End_Node 同级目录,即C:\Users\gongw\STM32Cube\Repository\CubeWL\STM32Cube_FW_WL_V1.0.0\Projects\NUCLEO-
WL55JC\Applications\LoRaWAN\WLEx_AT_Slave,以便于与 LoRaWAN_End_Node 进行比较
⚫ 配置 Application Structure 为 Advanced 与 basic 有什么区别?
Application Structure 为 Advanced 时目录结构分类分级目录更清晰。
Application Structure 为 Basic 时,所有的*.h 都在 WLEx_AT_Slave\Inc 目录下,所有的*.c 在
WLEx_AT_Slave\Src 目录下。
一旦生成过一次代码后目录结构就无法更改了!!!
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”
注意:
⚫ Copy all used library Package (如复制 Drivers\STM32WLxx_HAL_Driver 下的所有驱动)
WLEx_AT_Slave 复制到其他目录下,还能工作
⚫ Copy only the necessary library files(如仅复制 Drivers\STM32WLxx_HAL_Driver 下使用到的驱动)WLEx_AT_Slave 复制到其他目录下,还能工作
⚫ Add necessary library files as reference in the toolchain project configuration file(不生成 Drivers 和Middlewares 目录,仅参考Drivers\STM32WLxx_HAL_Driver 下的所有驱动)
WLEx_AT_Slave 复制到其他目录下,不能工作
参考 UM1718 4.9 Project Manager view
3. 配置外设
2.1 使能外设
2.1.1 Middleware=>LORAWAN
Middleware=>LORAWAN=>Mode 中勾选Enabled,LORAWAN 功能就使能了,同时SIGFOX 和 SUBGHZ_PHY 就失能了,默认界面如下,后续再继续配置 LORAWAN 应用。
2.1.2 Timers=>RTC 使能
Timers=>RTC=>勾选 Activate Clock Source,并配置 Alarm A 为 Internal Alarm A
2.2 RTC
配置 Alarm A 为 Internal Alarm A
Clock Configuration => RTC Clock Mux=>LSE
在 Clock Configuration 中检查 RTC Clock Mux 是否配置为 LSE
Timer =>RTC=>Users Constants
Timer =>RTC=>Parameter Settings
Timer =>RTC=>NVIC Settings
Middleware => LORAWAN => Platform Settings => Timer Server => RTC
2.3 DebugLine
Connectivity=>LPUART1 (AT_Slave)
Clock Configuration => USART2 Clock Mux => SYSCLK
Middleware => LORAWAN => LoRaWAN middleware => radio_board_if =>Activate Debug Line
Platform Settings => VCOM => USART2
2.4 System Core => GPIO (RF SW CTRL / BUTTON / LED)
2.4.1 RF_CTRL
NUCLEO-WL55JC
2.4.2 LED
配置控制 LED 的 GPIO
2.4.3 BUT
配置控制 BUTTON 的 GPIO
2.4.4 DBG
2.4.5 SWD(可选)
需使能 Trace and Debug => DEBUG => JTAG and Trace => Serial Wire
2.4.6 Middleware=>LORAWAN=>Platform Settings
Board resources => LED & BUTTON
Radio => RF SW CTRL
Debug = > Debug Line
2.5 ADC
Analog=>ADC
Middleware=>LORAWAN=>Platform Settings => Vrefint T calibration => ADC (EndNode)
3 STM32WL Templates Patches for CubeMX
STM32WL Templates 在如下目录,如需要可自行定制自己的 Templates
针对不同的客户定制化的板子,硬件外设配置不一致,客户可根据需要定制化自己的外设配置。
从 NUCLEO-WL55JC(BGA73) 移植到STM32WLExCxUx(QFN48)定制化的板子上,射频开关(RF SW CTRL),按键(BUTTON), LED 的配置会不一样,可能导致编译错误,如想生成的代码不会产生编译错误,需要编辑一下 STM32WL的 template。
3.1 CubeMX template patches for stm32wl
请参考
3.2 CubeMX Updates from v6.1.1 to v6.2.0
4.验证
4.0 参考工程
4.1 生成代码 GENERATE CODE
此时,可以先选择 GENERATE CODE 生成 Project,(如需,请自己选择项目保存的目录)
可选择 Open Project 使用 IDE 直接打开 Project。
或选择 Open Folder 后,还需再选择 EWARM\Project.eww 打开 Project
4.2 编译并下载
用 IAR 打开STM32Cube_FW_WL_V1.0.0\Projects\NUCLEO
WL55JC\Applications\LoRaWAN\WLEx_AT_Slave\EWARM\Project.eww 如果 IAR 之前已经打开了 WLEx_AT_Slave,在每次重新生成代码时都如有如下提示,选择“Yes
to All”
按 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
默认配置即可
5.1.2 配置 REGION_CN470
5.2 配置 DevEUI, AppEUI 和 AppKey
在 LoRaWAN\App\se-identity.h 中更改设备信息 DevEUI, AppEUI 和 AppKey
DevAddr 不需要设置静态地址,可以配置的
5.3 转发到 myDevuces Cayenne 应用服务器(可选)
5.4 WL Sensor End Device 信息获取和确认
其中包含更新过的 WLE5Jx_EndNode.ioc
用 IAR 编译 Projects\NUCLEO-WL55JC\Applications\LoRaWAN\WLE5Jx_EndNode\EWARM\Project.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
© THE END
▽点击“阅读原文”,可下载原文档