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

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

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56

+ d5 J0 F0 {6 Q; g' P本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 . H7 Y* {3 \' z) c7 t' N- Z) K
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。 , |) T2 i* D* _
STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
5 C7 f; p$ }9 m: k2 r
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务
    % Y6 Y; l, Z/ ^3 {" G

+ W4 A6 _  }5 Z) oSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 $ d9 {/ n- e, c5 f3 G
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 / G" [* {+ d. Q6 ?6 ^* {4 K
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。8 O2 E' P+ i# ]- G* S
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。
/ l' r" Q! g3 w7 n1 [5 H6 c
4 C) f7 l; m$ i2 b, n& N. y注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
" T" b: i* a8 _, S7 c! S5 x$ _, L
: l) }1 s* d" `, I( ]* c6 OSTM32CubeWL概述 - B' _; o8 S; {5 \0 O
STM32CubeWL MCU软件包的固件包括以下资源(参见图1): ; [4 R2 n, Y! K' {# ~
板级支持包:
8 u7 K* X4 l8 I1 ~. y! G7 c9 O
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 / M7 q1 u0 \1 O# l/ G6 B

1 K  Z' t; J; _5 [* U$ pSTM32WLxx_HAL_Driver 0 B: u3 b) E1 X  P1 a. b
中间件: $ N" p. a  [, [' X& C; ?0 r8 D/ y
- LoRaWAN包含: ! v; h. |$ n# Q
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机 % B( D; T& J' T4 s' S1 n
( C- H( v9 \  B4 x4 C9 M- [& E
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 ' ^" @) o$ Y9 z  H
LoRaWAN应用程序:9 @- n" O; |3 ?5 v4 [
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核) $ j! }+ k; F" x! ]" f! X" _

! o* Q& S. F, r; `8 q! qSubGHz_Phy应用程序:
% o5 x5 M" \  X& s8 B8 @
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核)
    ) ?  A  P# ]' d' z8 l" L
2 _5 s& I' s) W7 k
另外,此应用程序还提供与以下设备的高效系统集成:
& o9 L- ]; I+ z/ a- w, V% S
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    : r% w( u+ d7 ^  {. D; g. N. j9 B; @

0 V3 i, P! p' ^8 a" r若需更多信息,请参见第9节。
& y+ f) z* o, V' k) U; `/ ~- t
13.png
3 SubGHz HAL驱动程序
1 P! Y) a  f0 {本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。
, A+ ~/ z. z7 d' dSubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
$ D: [$ E2 m# l4 x4 eSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
' d* ?- N0 V. f9 G4 b4 @此SubGHz HAL驱动程序由以下主要部分组成: 6 e0 n" @$ ]6 |- R" [! J; k% {* A0 t
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) 4 X: z, o' i* K
3 C& w- o! P1 }5 }) b* g2 G
由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
( P5 y: \# z5 w- V1 E5 I6 J7 Q态机。
5 _9 z6 A: w3 q8 W  E% q
- w$ l% K( q, ?; H+ Y3.1  SubGHz资源
& X" j8 V1 N. @0 n0 X初始化无线电时会调用以下HAL SubGHz API:
2 S7 g/ n$ w( m( t' ]$ m0 c
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源:
    6 w0 Z; Z& N+ P- \: v% _: s* V

+ A1 o( Y& [5 E' n' ]5 Y( @    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 , R' A) c7 U1 b7 U
    - NVIC配置:
3 ~. t; e% @" F4 L% n      ☆ 启用NVIC无线电IRQ中断。
& G- b% H( Z1 c* x/ \: j      ☆ 配置sub-GHz无线电中断优先级。 : `. E+ v7 r+ i5 H5 b3 B
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
  F, I" V0 Q( A7 ~, K
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    / W1 K) D) {" u0 v

) h6 O; z6 R( o  ^3.2  SubGHz数据传输 3 i9 v4 M8 o- U  k. b
Set 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
& P% M/ i% U6 y5 _Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。 ; J0 n, E  Y1 X! ?
读/写寄存器访问操作在轮询模式下使用以下API执行:
2 n. {0 R0 q$ s! \' \8 X0 r
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    7 R6 [6 G3 k: g
' K$ I" K6 ^) u4 p# a
4 BSP STM32WL板
! o& }/ \0 T4 u本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC; z- S( v6 |0 N
设置。
- i+ Y+ E- [: A& N# o, }" [注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: 3 H" [3 ?/ Y1 _

) B) P$ C, m6 o3 {/ \8 u2 ]
  • 第一个选项  h9 m! B- U( B( d, e3 E( \  g8 r
    - 复制BSP/STM32WLxx_Nucleo/目录。 0 i* T+ G6 ?1 ^
    - 使用以下信息重命名并更新用户BSP API:
" W4 }$ d0 t" v1 S0 m* P8 s      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
3 H& @$ p; ?5 t, r6 Q/ z  g1 X2 z' X      ☆ 用户TCXO配置 ) w1 [# m5 w+ B9 h) \
      ☆ 用户DC/DC配置
$ B0 Y2 B  N+ @: [, B    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 5 S( F% j3 _5 u5 m( V7 }
  • 第二个选项( o3 M! D% }# i- u6 f/ F/ b" y
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
3 l/ c8 W0 f2 t& ^$ c7 \+ s/ [9 e
. C9 ^: z1 U" r0 ~. }, m4.1 频段
1 \4 h8 n& v' t; ZSTM32WL系列上可以使用两种Nucleo板: * a( n0 N8 z' B. m5 _6 j
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率
    8 f2 r8 J+ ~+ e; y, |. J; d3 D0 o

! _  p2 I1 ^. |* I# G如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 6 O/ n3 x9 q/ n' ?) ?
固件不会检查其所在的板的频段。 2 g7 ?& e& E" w. x& Z
, ~  ?" G2 t% P# q" l+ O! r
4.2 RF开关
6 P) p2 `9 L  A0 q9 GSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
0 P; c! y8 U: N/ U" c3 q
  • 高功率输出
  • 低功率输出
  • 接收 / \! R* W' \5 E  R+ L- U

/ S0 r3 b3 Q6 E
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。; z3 A5 C5 o' l# _8 G% D1 M
表4. RF状态与开关配置
15.png

( w' [6 o+ g% @6 L$ Q' X4 V; B
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 32)
收藏 评论0 发布时间:2025-2-10 09:56

举报

0个回答

所属标签

相似技术帖

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