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

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

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

/ @$ K! E1 M. b, d, q3 V
其中,参考使用了 STM32Cube_FW_WL_V1.0.0\Projects\NUCLEOWL55JC\Applications\LoRaWAN\LoRaWAN_End_Node 创建一个 WLE5Jx_EndNode 的例子。

/ o# h. z( T% t5 G  [' j
关于不同 MCU 间的移植可参考
UM1718 11.9 Switching to another MCU
UM1718 15 Tutorial 5: Exporting current project configuration to a compatible MCU
需要提前准备的环境:
1.png
! B. }2 e; E9 }2 D# m9 G4 q/ M- R) n9 n
1.配置 CubeMX
1.1 配置 CubeMX 并下载 CubeWL
# b+ B/ M/ P* v' z
可以使用 CubeMX 默认安装的仓库目录也可以自定义仓库目录,本例使用自定义的仓库目录C:\Users\gongw\STM32Cube\Repository\CubeWL,如下Help=>Updater Settings=>Repository Forlder=>C:\Users\gongw\STM32Cube\Repository\CubeWL=>OK

: \0 f; o  [$ u, ^
2.png

& U  h# ]1 P  d0 W2 T( |7 J
3.png

+ b$ k0 V$ G) e/ h& V" L
选择 Manage software installations 中的 Install or remove embedded software packages 下的
“INSTALL / REMOVE”
& @5 A1 e. u; |. R9 e8 x! O+ U
4.png
# x/ i* E  T. S. N- \% f; O* f
5.png
点Refresh 更新数据库
6.png

/ \/ N7 A# e( S: F! E
" ~3 p6 t0 K6 m* M
Fresh 结束后,点开 STM32WL 左侧的黑色三角,选中 STM32WL 下版本 1.0.0 的 STM32Cube
MCU Package for STM32WL Series,点 Install Now
5 _6 d* F" B5 N" ]& N
7.png

2 Y! v) M7 I$ l& `
点击 Close

/ B% w; l- G; _) w( N& @3 P' U0 m4 B1 A% p" d
1.2 CubeMX 新建项目
! r8 A! c, h6 o  ^2 B6 d! c/ g
打开 STM32CubeMX,在 New Project 下有三中选择, 请根据需求选择 New Project 的方式!
8.png
* J% [! o# I6 d: P! i- d4 H% ?
1.2.1 Start My project from MCU

5 N* o6 x& n$ ^: M
第 1 种可使用于所有的 WL 产品,只能生成和配置的用户自定义(User Defined)的LoRaWAN/SigFox/SUBGHZ 应用,不能生成 CubeWL 中 AT_Slave/EndNode/PingPong demo

  a' N9 ~2 U! H' ~1 D! S& @# d
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

9 |8 T6 w  K; r" G7 a5 k
1.2.3 Start My project from EXAMPLES
第 3 种适用于生成 CubeWL 中 NUCLEO-WL55JC1 和 NUCLEO-WL55JC1 的 Examples,可生成和配置 CubeWL 中AT_Slave/EndNode/PingPong demo
8 P/ d& ]* h+ ]/ O
1.2.4 Start My project from MCU STM32WLEx
在 New Project 下选择,”Start My project from MCU ”下的”ACCESS TO MCU SELECTOR“

$ Q$ e) o* H; ]. m, F- n
1 d! a) s# [( V3 u  ^9 L
9.png

) ~+ |/ Z: ]4 T+ H* O
微信图片_20220709163710.png
7 b' W5 [4 g* H7 n0 T
10.png

5 e6 W5 o3 Z  A2 n
11.png
3 Y, q; D8 \' ^+ g
12.png

- z7 Y; n9 F+ q4 U% H2 k% C# f' G
13.png
6 N7 S$ h: o  V; Y# N% ?
14.png

/ B3 @0 G  r' @: W
15.png

) q4 y0 r6 d8 Y2 p
16.png
6 @) v5 N0 k2 @" s8 {" I
1.3 CubeMX 导入参考项目
& s( q, z  ^' l$ C  L; ^9 e+ m
17.png

9 d8 U, [6 n8 d
18.png

9 F- F! E. O$ I7 M
19.png
+ c6 s7 E. {/ d7 G

, n; k# o8 N! p0 B
20.png
- X1 I- Z. D! G% t' U' E

# M: ]0 v5 k4 q" \  n/ C% E
此时再查看 File =>Import Project 选项,变为灰色,表示新项目已被配置,不能再 import 参考项
目。

' B3 T8 M7 v5 l7 J5 {5 b9 k7 E) |8 d
21.png
6 }% X) Y! Z  s5 z: q" T
1.4 CubeMX 配置项目

' a3 l6 a" ?* Q$ x9 F
1.4.1 CubeMX 配置 Project Manager
选择 Project Manager
1.4.1.1 配置 Project
选择右侧 Project 并配置如下:

* d) c# X- ]7 Q) P. W$ k: d2 k
微信图片_20220709163901.png
22.png

) u+ G! c. X6 `) y0 @, l* i
注意:
通过 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 进行比较
8 L3 ?' l0 f  y0 [6 o
⚫ 配置 Application Structure 为 Advanced 与 basic 有什么区别?
Application Structure 为 Advanced 时目录结构分类分级目录更清晰。
Application Structure 为 Basic 时,所有的*.h 都在 WLEx_AT_Slave\Inc 目录下,所有的*.c 在
WLEx_AT_Slave\Src 目录下。

  W6 b; m* u$ ]) u' b% r
一旦生成过一次代码后目录结构就无法更改了!!!

3 C5 W. I/ k/ E( @- ~6 F
23.png
1 \7 e& i' v" F6 N# n/ S& Q2 D
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”
24.png
25.png
注意:
⚫ Copy all used library Package (如复制 Drivers\STM32WLxx_HAL_Driver 下的所有驱动)
WLEx_AT_Slave 复制到其他目录下,还能工作

0 _% ?2 T4 s5 a. u( T
⚫ Copy only the necessary library files(如仅复制 Drivers\STM32WLxx_HAL_Driver 下使用到的驱动)WLEx_AT_Slave 复制到其他目录下,还能工作
: }+ m, `) O$ p) ~0 i
⚫ Add necessary library files as reference in the toolchain project configuration file(不生成 Drivers 和Middlewares 目录,仅参考Drivers\STM32WLxx_HAL_Driver 下的所有驱动)
WLEx_AT_Slave 复制到其他目录下,不能工作

5 l; `3 L" E$ {& M) E* b, P
参考 UM1718 4.9 Project Manager view
26.png
+ Y% p! T+ ]/ g+ c& a
3. 配置外设
2.1 使能外设
$ D* r4 @6 w3 s) X+ o
2.1.1 Middleware=>LORAWAN
Middleware=>LORAWAN=>Mode 中勾选Enabled,LORAWAN 功能就使能了,同时SIGFOX 和 SUBGHZ_PHY 就失能了,默认界面如下,后续再继续配置 LORAWAN 应用。
27.png
2.1.2 Timers=>RTC 使能
Timers=>RTC=>勾选 Activate Clock Source,并配置 Alarm A 为 Internal Alarm A
28.png
2.2 RTC
配置 Alarm A 为 Internal Alarm A
29.png
Clock Configuration => RTC Clock Mux=>LSE
在 Clock Configuration 中检查 RTC Clock Mux 是否配置为 LSE
30.png
Timer =>RTC=>Users Constants
31.png
32.png
33.png
Timer =>RTC=>Parameter Settings
34.png
Timer =>RTC=>NVIC Settings
35.png
Middleware => LORAWAN => Platform Settings => Timer Server => RTC
36.png

, z7 O5 J6 h1 _9 l
2.3 DebugLine
Connectivity=>LPUART1 (AT_Slave)
37.png
38.png
39.png
40.png

; E# W) u/ k" u
41.png

5 X0 N! ^! _: C( i- a+ Y
42.png
0 y6 o* f  k, A& r/ B
43.png
( V, R$ f1 s# F3 D' A! N1 A
44.png

, X  E! N$ ]2 c5 b6 y% X1 T5 F" W
Clock Configuration => USART2 Clock Mux => SYSCLK

( ]: M  v6 }. \& n" e
45.png
- z2 k4 f+ T' S: D1 I1 O7 j8 y
Middleware => LORAWAN => LoRaWAN middleware => radio_board_if =>Activate Debug Line
! x) m5 I5 {; w/ q  q, y8 t' I
46.png
Platform Settings => VCOM => USART2
47.png
" K$ q, q; w9 V' K
2.4 System Core => GPIO (RF SW CTRL / BUTTON / LED)

9 c/ a% w" N  {0 O8 v8 i4 `( A
2.4.1 RF_CTRL
NUCLEO-WL55JC
48.png

4 j: {- W2 L  e
49.png
5 c( ^: w( d6 [  h6 Q6 ^2 i
50.png
6 a) p* t! n% \1 |: a  k( w$ x* W
51.png

. K6 U3 [" s7 s) o
2.4.2 LED% T. X- g, V( C. u! G: {* a
配置控制 LED 的 GPIO
52.png
- G0 m' K5 j- O+ x
53.png
7 R8 `# m, v" O) }, u
2.4.3 BUT
配置控制 BUTTON 的 GPIO
54.png
; O3 X7 Y/ A$ Q4 d

  I$ G, [, |9 `$ Z
55.png

: y+ ~5 j1 S# j( \
56.png

( P0 r, `, O! s
57.png

, t/ Y5 [% j4 _0 u$ ^. A; t
2.4.4 DBG
58.png
- A' J! B3 C, c: y7 P
59.png

6 R5 m2 R# `; S% `6 b
2.4.5 SWD(可选)
需使能 Trace and Debug => DEBUG => JTAG and Trace => Serial Wire
60.png
' y3 e$ I" K) @/ u0 h7 j
61.png
" [9 `1 n+ b' |, j3 d( X

% _4 K* ~0 b2 p& u
2.4.6 Middleware=>LORAWAN=>Platform Settings
3 w: K6 W5 |. f1 r  B" \/ K
Board resources => LED & BUTTON
Radio => RF SW CTRL
Debug = > Debug Line

4 E  P! u1 d! [( I/ P( [" ^# V
62.png
/ E& o- a( {/ s2 Q  ^9 c
6 W" @" O* |) `, u7 G

8 J. T4 @- n6 R9 B& D& t" D
2.5 ADC
Analog=>ADC

4 O& V  m. `, X" i, g8 e- Y7 }
63.png
5 y  y. t- z$ S+ W# a# n
64.png

" c- }' \% L) K/ e+ Q3 L  j* S, Z
Middleware=>LORAWAN=>Platform Settings => Vrefint T calibration => ADC (EndNode)

# _0 o) n1 u# K; ?  S& f5 I) O
3 STM32WL Templates Patches for CubeMX0 f5 e( T$ J4 d4 N. s0 r

5 s+ B; w( `8 X# b2 _/ s( ~
STM32WL Templates 在如下目录,如需要可自行定制自己的 Templates
640.png
针对不同的客户定制化的板子,硬件外设配置不一致,客户可根据需要定制化自己的外设配置。
从 NUCLEO-WL55JC(BGA73) 移植到STM32WLExCxUx(QFN48)定制化的板子上,射频开关(RF SW CTRL),按键(BUTTON), LED 的配置会不一样,可能导致编译错误,如想生成的代码不会产生编译错误,需要编辑一下 STM32WL的 template。
% M# V$ O3 J7 r& R$ a4 ?3 P
3.1 CubeMX template patches for stm32wl
请参考
65.png
! s7 p; ?0 p6 F  i. B0 k
3.2 CubeMX Updates from v6.1.1 to v6.2.0
66.png
67.png
68.png

+ Y0 P7 W4 I+ {$ E
# ^) D/ U4 k8 z& t& i" r6 ?
4.验证
4.0 参考工程3 N- b; O/ A' O3 ]5 j% X5 e) X
69.png
4.1 生成代码 GENERATE CODE
此时,可以先选择 GENERATE CODE 生成 Project,(如需,请自己选择项目保存的目录)
70.png
71.png
0 f3 H- l( s4 y! R( [8 ?

; M  [  |$ O' {, L& _% m
可选择 Open Project 使用 IDE 直接打开 Project。
或选择 Open Folder 后,还需再选择 EWARM\Project.eww 打开 Project
72.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”
73.png
按 F7 或选择 Project=>Make(F7)来编译工程,如果编译无错误,选择
Project=>Download=>Download Active Application 下载 WLEx_AT_Slave 应用
# f$ h7 R& i) l5 X
0 N" ^8 }& n# I0 v; K
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
默认配置即可
: x. q) r# O- x) e/ M! g8 g
微信图片_20220709164831.png

# H5 T, h; ~3 T2 {; Q
5.1.2 配置 REGION_CN470
微信图片_20220709164842.png
74.png
微信图片_20220709164905.png

0 Z$ z" m) N8 I: I5 D+ \% L
75.png

$ ]# S, |1 C( v
76.png
* Z% ~  s; E9 {8 i6 w7 I9 @; j
77.png

: ^6 G# B  u5 a  p3 Y, F8 N9 e& Q( @  ^! S$ J4 i
5.2 配置 DevEUI, AppEUI 和 AppKey
在 LoRaWAN\App\se-identity.h 中更改设备信息 DevEUI, AppEUI 和 AppKey
( S6 k" f5 l8 t# d$ x9 `  f, s
78.png

: k+ E* X0 u6 |$ P, t" i
DevAddr 不需要设置静态地址,可以配置的

* W- P5 S6 S, n9 W$ Z; v8 B# t
79.png
1 S3 t0 b+ X4 i( Z5 u
80.png
6 y% k/ z' O0 T+ M$ T& X; m
5.3 转发到 myDevuces Cayenne 应用服务器(可选)

8 F& e5 t6 w( a8 t
81.png

8 C' U1 H3 K% ^0 @
5.4 WL Sensor End Device 信息获取和确认
5 K' C+ M* z& Y
其中包含更新过的 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
8 P* G. F& P: c2 S
: L3 ?! j5 U/ l
82.png
83.png

$ I4 l7 [4 e3 a
84.png
  o9 [6 k4 Y8 ^
85.png
* i9 L1 ^7 K7 e+ b! W
86.png
: r/ Z" q0 T' }- |
87.png
% o2 ?4 `/ a' v8 y! S7 O
赞 收藏 评论0 发布时间:2022-7-9 16:34

举报

0个回答

所属标签

相似技术帖

官网相关资源

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