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

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

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56
( u  w9 m  ]$ E3 x) G$ P, ]8 N3 k. H
本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。
) _$ \; f! y6 u. _& g7 hLoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
8 ~6 J" Z3 {8 |  iSTM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
- c( g- E# d( X" ^# B; H- A+ k1 A. s
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 $ A; w! Z; V( f; V9 A0 f! I
- U: s. Z, K. a; f, u
STM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。
; w1 x# m! L& T/ s- I% D本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。
3 ~; @, d0 g5 r& s0 ~. s为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。! R9 e8 K) w% A4 c9 a9 ^7 z
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。
. p7 B! T$ [( b8 A5 X& }$ P- w% _, s+ w3 u+ d; P, ]% y
注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
' d% ^" a! Q/ i' ]4 V& ~' P8 V' B% [9 u. B
STM32CubeWL概述
0 s8 i: p, G+ ]  Q: n; z! @STM32CubeWL MCU软件包的固件包括以下资源(参见图1): 6 @. b9 R. |4 ]% `+ H# x3 Y
板级支持包:
1 a; a% Y  D/ _  [
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 + x' \7 Q( _2 A; @6 u3 u0 ^
; O( s. n2 y& \
STM32WLxx_HAL_Driver 1 A- M/ {. V6 Y
中间件:
9 L5 H, }" Y6 o3 W- LoRaWAN包含:
+ z% R6 @% O7 w6 B. e; [7 B' u# H
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    4 n  Q; ?$ S& L! _: e( C8 a
) o1 x( d' D, a
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 ! [# M" o+ a( `
LoRaWAN应用程序:
3 \$ e& M& D1 O( ~4 A. ]; [+ v* M
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核) # |" W& ]- ^4 K

  N5 c; d% N, HSubGHz_Phy应用程序:7 ~) m' \' P8 [( B/ \
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) ! T9 B4 `! N2 [+ c) k

. N2 o1 z7 o  v6 T- l' R另外,此应用程序还提供与以下设备的高效系统集成:
4 `5 b5 x0 T% Q2 K4 X! d2 c& d/ n
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    ( G+ O+ p; V, S2 Y

2 v. Q: a4 r. n! ~若需更多信息,请参见第9节。
/ R2 q& E" I9 c# ?, [9 v, H" ]
13.png
3 SubGHz HAL驱动程序 6 i( Q2 p; G; f$ K; K/ m
本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 # w# u6 ^- O; W* ]- S0 u
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。 $ P% ]: F; ^! h4 {* F
SubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。 5 I  W& Q, J2 u
此SubGHz HAL驱动程序由以下主要部分组成:
: y+ S. {. K" r3 b; ]5 d# j6 {
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) $ W+ ?! _( v7 i: n; l
3 k9 L4 x' P/ B5 q9 i+ i
由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
2 w  r" z% ^4 G; Q态机。3 h  ?& |0 R8 `4 Y' N" Y9 N2 C0 Y3 u
8 H3 y0 D. G% `1 p
3.1  SubGHz资源
' M8 X- [4 G9 g- F1 O初始化无线电时会调用以下HAL SubGHz API: , Y: B. z6 ^# {- C+ X* J/ ^! ?) ^
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源:
    $ I5 q' E3 U4 m$ Y; K3 Q. s5 a
' r. V# a: r3 \' ?& l$ A$ F! f
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。
  r# g3 Y2 V% y8 T& P4 y7 F    - NVIC配置:
- s1 d. ~/ N, M5 l& P% Q      ☆ 启用NVIC无线电IRQ中断。 2 h3 \; C4 k4 Y# P, W
      ☆ 配置sub-GHz无线电中断优先级。 7 b' c4 Q6 C$ Z" \# r  g" V* E/ A
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断: 6 q( W6 V' j! ^7 f( Z. }
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    5 j- d% n2 `7 [( d1 _

+ Q9 |) a8 p3 ]7 z# p4 N3.2  SubGHz数据传输 ; l: n2 [. r* Q
Set 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。 ' @0 P" }) g* V6 \; O
Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。 4 Z: U1 ~8 b3 o' V4 p! O3 |; F
读/写寄存器访问操作在轮询模式下使用以下API执行:
4 K5 |- @7 F' J
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    . {/ L7 J( I% [$ b2 A5 O' l

6 M; ^' G% ?$ X9 f# I3 }4 BSP STM32WL板 " g2 s* b! W7 o. |7 s0 l' b% A
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC) j. N* ?9 A- W3 A2 n0 }5 O. B2 C" v! o
设置。 6 ]: h4 W/ ^" f& I2 A( i; m- \
注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: ; I: B# @( A/ j' q8 L1 Z0 F1 _

0 i3 ?1 A' j2 R$ J- U
  • 第一个选项& b+ Z- `! _$ C/ D4 t6 ~( ]% c
    - 复制BSP/STM32WLxx_Nucleo/目录。 7 m7 m5 s( t3 m  A1 a
    - 使用以下信息重命名并更新用户BSP API:
0 f6 y, D8 t+ ?  d2 ^7 ?      ☆ 用户射频开关配置和控制(如引脚控制或端口编号) % h! f2 ?- r# Z' U2 V, B+ ]% m
      ☆ 用户TCXO配置 . b7 w1 @1 w, g* Q3 s: t' \4 G# N9 e
      ☆ 用户DC/DC配置
9 w0 c; g) I$ X) j    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。
2 ^: \3 x; e5 c, K* d
  • 第二个选项, y# }3 U: [1 e# j0 a/ j
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。 9 h( v8 e8 l- S; r! v3 z  {

8 `3 P% b, |* u9 F( Y* P4.1 频段   R/ q0 U( }4 X' t" {& S
STM32WL系列上可以使用两种Nucleo板:
+ o2 |/ ~% @3 E5 n
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率 : _3 W" ^. }- P
6 ?+ U- Z, e9 A1 o. Y. G
如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 % ?- t  I9 b# i( N
固件不会检查其所在的板的频段。 ; |5 [3 D, R7 H- x
8 s' ^1 ?, Y0 `7 f$ I$ }
4.2 RF开关
2 C" n3 }- \' H5 P" ^0 Y5 u( H7 aSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式: % ?6 C' l, s# G3 q
  • 高功率输出
  • 低功率输出
  • 接收 $ i! l4 K* V. U: {1 j' t
. ~4 |& y- W, R+ P
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。" z* [$ Y, @' q( X: T& x5 P$ f9 o& _
表4. RF状态与开关配置
15.png

' j8 g) O1 R* C4 k
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 4)
收藏 评论0 发布时间:2025-2-10 09:56

举报

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