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

经验分享 | 如何使用STM32CubeWL构建LoRa®应用程序

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56
1 w7 T9 D# A3 x- c) `
本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 ' c% w9 \/ V/ T+ A  m! S' e% a+ ^
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
( P3 R) e4 y8 J& M2 t/ j7 ISTM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
( b5 {, I1 h8 o" J
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务
    3 ]& `2 ^: L; a* K$ Y) D

& F- a; d- H5 z: O( bSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 1 l( }: a9 p1 a$ o1 |% P# ]
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 1 c3 x9 t( Q' L) O, Z5 n9 z- `- @
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。
+ Y- q# R5 n$ c! FSTM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。
, s2 ~; p( s7 Q# |$ D- ~5 S( z. c
注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
- T  m4 ?& @+ ~
! [) C! Z( {7 N+ i+ }  z0 WSTM32CubeWL概述
* [0 c& \% r$ W/ y7 V) I5 O3 c, lSTM32CubeWL MCU软件包的固件包括以下资源(参见图1): ( h4 `1 t" c  h" R. f2 u8 J& L  o6 V
板级支持包: ' y+ C7 E, j# w7 O& o8 R
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序
    . I# O! |6 b, q7 @% l/ {

% Y. c# Z: S( E& f$ f' B: ESTM32WLxx_HAL_Driver 2 K  g, I% _6 [0 X8 Y( |: Z
中间件:
- i# c9 l( \* ^! @3 E- LoRaWAN包含: * J: i- ~3 y( Y" \, x- V, s
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    # {  k: M) ~0 P/ G( p
) o& D- n2 ~+ g# E- [; z
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 ( U1 y! O( r) d/ K
LoRaWAN应用程序:2 h! y  P4 G' l  U3 u1 J0 u( ?5 W
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
    * |9 `4 v9 I" {* m# U
1 D' u& r4 F4 Y, c4 B
SubGHz_Phy应用程序:
: f( U3 c% H* G7 k
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) 1 ~9 n, q9 f! p2 w
4 j! t1 V& T* M1 t% ~
另外,此应用程序还提供与以下设备的高效系统集成:
0 y! a8 C- o+ L5 R" k
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    ( k( ~1 A7 K3 H2 I1 D

1 P" ?6 a* C" Y! z# a若需更多信息,请参见第9节。
! J) L2 p, M4 G2 ?6 E8 C, \. X
13.png
3 SubGHz HAL驱动程序
4 h: d8 E4 l/ z8 \3 ~7 E3 k7 x本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 7 A, i( H! r; E) [+ n
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
) x2 |8 S' ]( k8 @  N. x! MSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
5 A' d0 v% H  y( c此SubGHz HAL驱动程序由以下主要部分组成:
  v8 f0 Y, D; x# n' i, Y
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) 1 v7 N) _; J# G/ j6 V
& X6 u5 p# S9 t. e+ Z% R  r
由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状% C3 C4 \2 K& M% r% g. C
态机。
5 @# j4 u! n) L; c
0 {. y1 v8 N" Y3 d3.1  SubGHz资源
$ @6 ?8 e7 K0 R) s9 l3 l初始化无线电时会调用以下HAL SubGHz API:
, U& i: t4 e" d9 |3 b  K1 l% _" T
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: - l* s1 v6 o5 {, r. A7 n

" ]& I5 v' {! ?; E    - PWR配置:启用sub-GHz无线电外设的唤醒信号。
' Y9 k) S' ^# b8 P+ g! w6 F  ^/ p    - NVIC配置: 7 g" e) q. S6 O
      ☆ 启用NVIC无线电IRQ中断。
7 }8 l% y  [7 \* h! g$ d      ☆ 配置sub-GHz无线电中断优先级。 # b3 W  z: M" G- y8 W, M; U3 a
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
! ~; Z" U1 R8 T8 ~/ x
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。/ {+ ]) K5 ~3 c

6 i! L3 K; L, j1 j$ T3.2  SubGHz数据传输
% j& r* m& {% L0 `$ T+ `* aSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。 5 w2 F3 d  O; y4 L4 y. ?/ n; ^
Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
7 k- g  ]+ Q' p: t: [读/写寄存器访问操作在轮询模式下使用以下API执行:
' y" A; F0 \' g& b. n$ \( k$ S
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();' T2 K& {& }! D- L
$ s  M* P: R" w6 m7 C
4 BSP STM32WL板
3 {/ q! M; m- H( H0 ?( E$ A本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC
( y. m; x/ [  i! F: r设置。 % B- ^# ?: R; f0 ?$ z; l% {
注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项:
5 H/ z& C5 D' C9 W0 Y% }6 P" n; [% n3 m9 G  R( h2 c
  • 第一个选项. L9 B2 X* K: c+ [8 ]1 u* i0 I' X
    - 复制BSP/STM32WLxx_Nucleo/目录。
( x) D" W& U0 f4 k" s6 i6 w    - 使用以下信息重命名并更新用户BSP API: 8 X9 @/ \6 z  b
      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
1 f& Y) J0 I/ t- P8 e6 R      ☆ 用户TCXO配置
2 @& ]$ y$ l% z# L      ☆ 用户DC/DC配置 0 I! X- m% _& C  D# s+ w
    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 4 i( W: ]$ F2 r* ]* e, s* w
  • 第二个选项
    . q2 k, v5 ]9 C( V1 @6 e
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
& e; J: ?% e, K4 z& v$ u7 }
  U. B- z: Z- G$ l4.1 频段
9 ^7 r* H+ i" J" R* w& v9 r; [STM32WL系列上可以使用两种Nucleo板: 3 ^# b9 x3 H6 R& g5 E
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率 $ h+ O8 t" p7 s. b
( J6 x5 d; S' W9 c9 L! I% D$ ?
如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。
9 }8 w5 `/ |9 B% J+ g% Z4 |固件不会检查其所在的板的频段。
' V8 v; D8 d2 x# ~. v: n% S! z4 V
4.2 RF开关
* c( w0 @& d+ \! GSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
; r1 J2 j! e6 X9 C, f& B- u
  • 高功率输出
  • 低功率输出
  • 接收 8 T( `0 a) v8 _5 k+ f$ Z: A

& d, `- `2 Z4 D; E( j
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。5 I9 _% {9 N! I9 ]. ]& {' O, L
表4. RF状态与开关配置
15.png

8 ]8 n- b7 d0 }) N
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 3)
收藏 评论0 发布时间:2025-2-10 09:56

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版