
引言 本篇 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 ![]() ![]() ![]() ![]() ![]() ![]() |
【有奖体验】STM32Cube通过Clang/LLVM支持进一步简化代码开发
STM32CubeMX应用结构选择指南
经验分享 | STM32CubeMX 生成时钟获取函数的分析
兔哥的最强U5图显【000】——U5G9最小系统绘制
兔哥的ST67——【000】ST67模组订购
基于LORA的环境感知系统
经验分享 | 使用CubeMx配置NVIC时为何不见子优先级?
经验分享 | 三个 ADC 同步模式配置以及 CubeMx 错误配置的解决方法
兔哥的边缘AI【001】——DIY-STM32N6全IO扩展板
兔哥的BLE【002】-WB09最小系统板PCB设计