鸣涧 发表于 2022-7-7 17:53:43

工程师笔记|CubeMX创建STM32WLE5Jx LoRa EndNode+cn1.LoRiot应用

工程师笔记|CubeMX创建STM32WLE5Jx LoRa EndNode+cn1.LoRiot应用
引言本篇 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 MCUUM1718 15 Tutorial 5: Exporting current project configuration to a compatible MCU需要提前准备的环境:
1.配置 CubeMX1.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 的 STM32CubeMCU 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 Manager1.4.1.1 配置 Project选择右侧 Project 并配置如下:

注意:通过 Browse 选择 Project 保存的目录⚫ 项目名称 WLEx_AT_Slave 创建在STM32Cube_FW_WL_V1.0.0\Projects\NUCLEOWL55JC\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=>LORAWANMiddleware=>LORAWAN=>Mode 中勾选Enabled,LORAWAN 功能就使能了,同时SIGFOX 和 SUBGHZ_PHY 就失能了,默认界面如下,后续再继续配置 LORAWAN 应用。2.1.2 Timers=>RTC 使能Timers=>RTC=>勾选 Activate Clock Source,并配置 Alarm A 为 Internal Alarm A2.2 RTC配置 Alarm A 为 Internal Alarm AClock Configuration => RTC Clock Mux=>LSE在 Clock Configuration 中检查 RTC Clock Mux 是否配置为 LSETimer =>RTC=>Users ConstantsTimer =>RTC=>Parameter SettingsTimer =>RTC=>NVIC SettingsMiddleware => LORAWAN => Platform Settings => Timer Server => RTC
2.3 DebugLineConnectivity=>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_CTRLNUCLEO-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 & BUTTONRadio => RF SW CTRLDebug = > Debug Line



2.5 ADCAnalog=>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 打开 Project4.2 编译并下载用 IAR 打开STM32Cube_FW_WL_V1.0.0\Projects\NUCLEOWL55JC\Applications\LoRaWAN\WLEx_AT_Slave\EWARM\Project.eww 如果 IAR 之前已经打开了 WLEx_AT_Slave,在每次重新生成代码时都如有如下提示,选择“Yesto 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 KEYOpen 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









页: [1]
查看完整版本: 工程师笔记|CubeMX创建STM32WLE5Jx LoRa EndNode+cn1.LoRiot应用