你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

CubeMX创建STM32WLE5Jx LoRa EndNode+cn1.LoRiot应用

[复制链接]
STMCU小助手 发布时间:2022-7-11 23:04
引言
本篇 LAT 介绍使用 CubeMX 创建基于采用 STM32WLE5JC/STM32WL55JC 的 STM32WL 板子 的 LoRaWAN 应用。

2 K! X; v8 W+ y4 }
其中,参考使用了 STM32Cube_FW_WL_V1.0.0\Projects\NUCLEOWL55JC\Applications\LoRaWAN\LoRaWAN_End_Node 创建一个 WLE5Jx_EndNode 的例子。
+ _/ F) T9 E' J
关于不同 MCU 间的移植可参考
UM1718 11.9 Switching to another MCU
UM1718 15 Tutorial 5: Exporting current project configuration to a compatible MCU
需要提前准备的环境:
微信图片_20220711230524.png
  p7 D& ]6 l  Y( e
1.配置 CubeMX
1.1 配置 CubeMX 并下载 CubeWL
# v  O( _7 O4 V  {: B
可以使用 CubeMX 默认安装的仓库目录也可以自定义仓库目录,本例使用自定义的仓库目录C:\Users\gongw\STM32Cube\Repository\CubeWL,如下Help=>Updater Settings=>Repository Forlder=>C:\Users\gongw\STM32Cube\Repository\CubeWL=>OK

7 {4 V" ^: Z1 |) {7 I
1.png

2 A0 F2 z0 i/ m7 I/ m% V
2.png

3 q( p; ?" L9 A! t7 `
选择 Manage software installations 中的 Install or remove embedded software packages 下的
“INSTALL / REMOVE”

3 Y3 U! H4 U0 I/ x( y4 {
3.png

1 {: s( s  y2 F8 W
4.png
点Refresh 更新数据库
5.png
$ B  G* q: d+ U' J( e6 A

, L% }2 M  X( e3 b& P
Fresh 结束后,点开 STM32WL 左侧的黑色三角,选中 STM32WL 下版本 1.0.0 的 STM32Cube
MCU Package for STM32WL Series,点 Install Now
% e9 ^! X$ H2 E0 i
6.png

2 ^+ Z  b$ N8 q/ D. ^% ^$ f9 o9 J
点击 Close

6 J2 i- l! I# u! T+ r: _
9 T8 v8 Y4 z1 B
1.2 CubeMX 新建项目
0 u2 d1 y3 K2 c" l+ v  r, b" g
打开 STM32CubeMX,在 New Project 下有三中选择, 请根据需求选择 New Project 的方式!
7.png

: V  [3 c) q8 c; }) M/ ?% R
1.2.1 Start My project from MCU

( o6 i9 h  s% j! r4 o; F
第 1 种可使用于所有的 WL 产品,只能生成和配置的用户自定义(User Defined)的LoRaWAN/SigFox/SUBGHZ 应用,不能生成 CubeWL 中 AT_Slave/EndNode/PingPong demo

1 @* r1 d& r) F; P; x
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

4 d9 x" k( o, F: u1 e
1.2.3 Start My project from EXAMPLES
第 3 种适用于生成 CubeWL 中 NUCLEO-WL55JC1 和 NUCLEO-WL55JC1 的 Examples,可生成和配置 CubeWL 中AT_Slave/EndNode/PingPong demo
- a9 x" t% I' G- ?
1.2.4 Start My project from MCU STM32WLEx
在 New Project 下选择,”Start My project from MCU ”下的”ACCESS TO MCU SELECTOR“

) ]9 y7 g* E7 j2 s1 j/ Y3 v, o' {8 \# x/ y
8.png

4 F! V9 v  z  [! s/ r2 z6 X% a
9.png
( J5 \# v7 `: G
10.png
/ \1 o: b( o2 N% Z" D6 j8 {
11.png

" W/ N/ `+ ]4 }1 y# B# m0 v
12.png

: \/ _0 q4 h2 ]
13.png

/ [3 l4 K' ^' }& R% w
14.png

. U! a4 e/ H* k3 N3 G
15.png
) Y% P( d  y7 x( u1 {8 X  x
16.png

; a3 |( ?+ E+ t/ v4 L8 U% r/ g; c7 g* t
1.3 CubeMX 导入参考项目

. ?0 q/ ^1 v1 d0 l0 X7 ?
17.png

; @" h% ^) l( S- Q2 O
18.png

9 s, i' D. b% M& E, x4 Y& y
19.png
, P& W4 T( [7 I4 `( D

# N7 Z9 N. c' U6 r/ b, D# x/ v
20.png

6 y: e: a+ M9 w$ |+ D5 u  l5 x' ]
; v$ H% \) l% Q% `2 h; E1 X2 ]
此时再查看 File =>Import Project 选项,变为灰色,表示新项目已被配置,不能再 import 参考项
目。

- G* v* w. r3 G( C
21.png
+ r( W2 R6 q( M8 ~5 x: A
1.4 CubeMX 配置项目
# o' \0 g7 x8 j% q
1.4.1 CubeMX 配置 Project Manager
选择 Project Manager
1.4.1.1 配置 Project
选择右侧 Project 并配置如下:
2 q$ l% |& {, r/ _' W8 v0 C
23.png
22.png
1 z; |; _5 N& _0 f6 e
注意:
通过 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 进行比较

, s, _1 ]1 W7 ]7 D7 h. m3 z
⚫ 配置 Application Structure 为 Advanced 与 basic 有什么区别?
Application Structure 为 Advanced 时目录结构分类分级目录更清晰。
Application Structure 为 Basic 时,所有的*.h 都在 WLEx_AT_Slave\Inc 目录下,所有的*.c 在
WLEx_AT_Slave\Src 目录下。

2 Y2 U: E# T9 M1 `" B$ q' h% H
一旦生成过一次代码后目录结构就无法更改了!!!

/ h( \, U) m. s* h
24.png

8 x1 Z& O1 V; f1 j
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”
25.png
26.png
注意:
⚫ Copy all used library Package (如复制 Drivers\STM32WLxx_HAL_Driver 下的所有驱动)
WLEx_AT_Slave 复制到其他目录下,还能工作
5 U, W' z+ B/ [& y
⚫ Copy only the necessary library files(如仅复制 Drivers\STM32WLxx_HAL_Driver 下使用到的驱动)WLEx_AT_Slave 复制到其他目录下,还能工作

! H8 j0 U) X, x4 I& M+ K
⚫ Add necessary library files as reference in the toolchain project configuration file(不生成 Drivers 和Middlewares 目录,仅参考Drivers\STM32WLxx_HAL_Driver 下的所有驱动)
WLEx_AT_Slave 复制到其他目录下,不能工作

0 v$ R# H! `6 ?* a- F6 H
参考 UM1718 4.9 Project Manager view
27.png
' o4 Y3 k& T( @: M/ p' I
3. 配置外设
2.1 使能外设

% C" X& q9 ?' g  I
2.1.1 Middleware=>LORAWAN
Middleware=>LORAWAN=>Mode 中勾选Enabled,LORAWAN 功能就使能了,同时SIGFOX 和 SUBGHZ_PHY 就失能了,默认界面如下,后续再继续配置 LORAWAN 应用。
28.png
2.1.2 Timers=>RTC 使能
Timers=>RTC=>勾选 Activate Clock Source,并配置 Alarm A 为 Internal Alarm A
29.png
2.2 RTC
配置 Alarm A 为 Internal Alarm A
30.png
Clock Configuration => RTC Clock Mux=>LSE
在 Clock Configuration 中检查 RTC Clock Mux 是否配置为 LSE
31.png
Timer =>RTC=>Users Constants
32.png
33.png
34.png
Timer =>RTC=>Parameter Settings
35.png
Timer =>RTC=>NVIC Settings
36.png
Middleware => LORAWAN => Platform Settings => Timer Server => RTC
37.png
2 p: S- p" U" o# m  L+ @. ^
2.3 DebugLine
Connectivity=>LPUART1 (AT_Slave)
38‘’.png
39.png
40.png
41.png

) T  q  ^  R0 [7 ?
42.png
  ^* Y% \  ?* I- P( t
43.png

2 x/ p3 b9 z( }! f  v% W# _' I
44.png

1 N/ Y& n) }& t  O# C$ m
45.png
: \3 l& Q9 Z6 s& D8 L( w7 C
Clock Configuration => USART2 Clock Mux => SYSCLK
7 m; ~) V' T  u5 a. a
46.png
' }2 Q  s4 ^8 v$ I, F
Middleware => LORAWAN => LoRaWAN middleware => radio_board_if =>Activate Debug Line

# `2 c  `1 J3 G% V7 ~
47.png
Platform Settings => VCOM => USART2
48.png

6 e9 y! Q3 S4 r8 O& \4 g2 `! N
2.4 System Core => GPIO (RF SW CTRL / BUTTON / LED)

3 j0 y1 E! r( Y0 k5 K7 o
2.4.1 RF_CTRL
NUCLEO-WL55JC
49.png

  ?+ I) j/ U8 u3 X  \# N
50.png
2 i5 T9 r7 _0 r
52.png

6 r8 z2 F) m4 ~7 y- P5 i$ E8 y
53.png
! w9 S3 L) Z% k" Y5 h
2.4.2 LED3 v' D: ?! f4 j/ ^/ t
配置控制 LED 的 GPIO
54.png

5 N# r* a- d  Q) L2 B% H  L
56.png
: W+ A. C8 e  z/ x3 H$ _
2.4.3 BUT
配置控制 BUTTON 的 GPIO
57.png

* ?; G6 {9 f( |( P! N. J5 p5 O4 d# B2 [4 M: O, W
58.png

- r  w3 o/ s0 t, e8 q5 k
59.png

, ~+ U; g' D" r8 K) O1 _% R
60.png
& S" F5 E3 n4 Q- }! Z5 x1 x
2.4.4 DBG
61.png
% E$ d+ v5 S' |" v" L* F" I6 T
62.png

3 c( _9 v: j, X* n1 K: d$ A. D
2.4.5 SWD(可选)
需使能 Trace and Debug => DEBUG => JTAG and Trace => Serial Wire
63.png

. {7 m5 q2 M$ ]: D+ q7 Z
64.png
1 v" c$ m$ U, n  A# F  t
) }8 b4 y" y# w. }
2.4.6 Middleware=>LORAWAN=>Platform Settings

' W1 Z# T" ~! a5 f2 U3 w+ N
Board resources => LED & BUTTON
Radio => RF SW CTRL
Debug = > Debug Line

8 F6 K  O7 m- i# E! t
65.png

" }# f# a) {' \+ h# P. G% Y& n! x1 J0 X" {5 t' d0 x

7 Z4 e, L2 \" t  I6 T9 ^7 C) i4 @
2.5 ADC
Analog=>ADC

  G) P* y/ q) p% R5 Z' e
66.png

8 J3 j& U8 Q7 I0 ~1 `
67.png

; z5 P9 r" z7 P
Middleware=>LORAWAN=>Platform Settings => Vrefint T calibration => ADC (EndNode)
% ^$ X: F+ Y3 A0 s' V$ u
3 STM32WL Templates Patches for CubeMX3 |5 h/ Z. c9 Q7 J/ z
/ ?, R% n* F# ]
STM32WL Templates 在如下目录,如需要可自行定制自己的 Templates
68.png
针对不同的客户定制化的板子,硬件外设配置不一致,客户可根据需要定制化自己的外设配置。
从 NUCLEO-WL55JC(BGA73) 移植到STM32WLExCxUx(QFN48)定制化的板子上,射频开关(RF SW CTRL),按键(BUTTON), LED 的配置会不一样,可能导致编译错误,如想生成的代码不会产生编译错误,需要编辑一下 STM32WL的 template。
! `" h4 Q8 x7 ?$ J) r. ^* i
3.1 CubeMX template patches for stm32wl
请参考
69.png

: e& S  v- ^8 |" }; |# q
3.2 CubeMX Updates from v6.1.1 to v6.2.0
70.png
71.png
72.png

' G1 C; Q$ g( M1 E2 J) j5 D4 x8 E8 O+ Y% A! @( h/ l
4.验证
4.0 参考工程
- P' C+ `$ w# p; p( C
73.png
4.1 生成代码 GENERATE CODE
此时,可以先选择 GENERATE CODE 生成 Project,(如需,请自己选择项目保存的目录)
74.png
75.png

& y1 ~' p) L! p, U
76.png
8 ~7 g  ]0 Z1 c9 O# L
可选择 Open Project 使用 IDE 直接打开 Project。
或选择 Open Folder 后,还需再选择 EWARM\Project.eww 打开 Project
77.png
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”
78.png
按 F7 或选择 Project=>Make(F7)来编译工程,如果编译无错误,选择
Project=>Download=>Download Active Application 下载 WLEx_AT_Slave 应用

7 l% a) C0 Q( f6 V$ H7 S- Q( w
* N0 h# K7 E/ n7 E8 [1 R
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
默认配置即可
; E9 ~* t* z; {9 d* I  {
79.png
/ q0 S. R1 v$ M" n  g# @2 `! V5 |
5.1.2 配置 REGION_CN470
80.png
81.png
82.png

1 S8 F% ~" R3 p8 h0 [
83.png
2 a" m/ U  \5 L! H, f5 g3 C
84.png

1 h% B6 q& |* h6 d8 j6 Z
85.png
/ v) d  \3 t' c

2 |7 d, q' E0 z
5.2 配置 DevEUI, AppEUI 和 AppKey
在 LoRaWAN\App\se-identity.h 中更改设备信息 DevEUI, AppEUI 和 AppKey

5 d$ Q  \- z; x5 j. G
86.png

* K* @+ t# r* \8 ~% c# P- d
DevAddr 不需要设置静态地址,可以配置的

7 M6 q" I( u; T5 G6 B
87.png

3 P  h2 T' ?8 g" Q: X) S- G
88.png
7 B, @5 A6 C9 [# P( W5 q, v
5.3 转发到 myDevuces Cayenne 应用服务器(可选)
3 d$ c) R2 ~8 j
89.png
; L: n$ |' ^, K# i
5.4 WL Sensor End Device 信息获取和确认

4 S! [/ v3 A  I" O8 U& X4 x6 O7 {
其中包含更新过的 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

- u. R8 Y: b* i% s. p, r1 R2 r3 {% p
90.png
91.png
4 x0 `1 y# w, m' K5 k6 x! M$ r
92.png
6 q! r' W2 G$ a/ C# i
93.png
/ h5 ?7 d' @  d+ n: `9 B' u
94.png

* t: p: J7 @4 a6 ^, e3 U' n# w$ G+ \
95.png

! }+ w6 F/ S- U2 ^' J2 x
55.png
51.png
赞 收藏 1 评论0 发布时间:2022-7-11 23:04

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版