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

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

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56
" B$ K5 \( G: z) K' c+ j
本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 5 I" n+ `6 g' f5 X- ]$ u8 W3 p
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。   x' S5 Q, N1 w5 v
STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
9 c/ b( n: I; p5 |) z# C( J* ]
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 8 q% W# u* \, O/ _% W: o( t0 o7 O

& q" Y  t# S! J) I" fSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 0 C" Y* A0 C0 s
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 7 t: i: X; `: t7 n# c
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。3 B! B* `' f' s; S/ M- L
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 $ k  I7 J6 O. t/ Q1 d7 v

3 X% C8 _: J; ^9 G" e注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
. L( g3 v0 j: G3 L
) X1 X' d6 b- P- [1 I" @$ ISTM32CubeWL概述 ' |4 m  M( c5 I+ z  g, a) Z* G
STM32CubeWL MCU软件包的固件包括以下资源(参见图1):
4 p7 |% L1 J3 x4 ?. g板级支持包:
* R( s2 B( U( n& k
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 7 a1 Z* m: h( R7 m; J1 @6 s

, l* f$ W/ t5 x: c. xSTM32WLxx_HAL_Driver
5 Y+ k7 |$ w1 o/ {' H- u% u/ G3 p7 I中间件: 4 ?8 B% L4 ]9 t- \& Y% Y! O3 R
- LoRaWAN包含:
, j; ?9 C7 z- a9 j
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    , q/ u( K, t, s" j: B: M0 ^$ i

! Q% H5 q4 j" a, s- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 0 N. Q) n. q5 J9 G
LoRaWAN应用程序:, i9 V2 I/ R* q, ~" `- E+ a$ T
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
    9 B6 e) s# V$ o

* p; A9 d" M0 g* @  j- }$ aSubGHz_Phy应用程序:
$ Z- X5 S+ F  V; s2 H, N0 u
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核)
    1 b( X' q2 ^& W5 X, m2 `1 K

, ?: y0 c# s- J+ Q% _  g另外,此应用程序还提供与以下设备的高效系统集成:
! l6 ]3 k" P" u) a
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下) 7 D! r( g6 H1 q0 @( l# x( ?! f
8 X" O: f6 e& D/ u% M
若需更多信息,请参见第9节。
/ l* r% f( ?2 r% J6 H' ?8 p5 }4 H
13.png
3 SubGHz HAL驱动程序 / g* P& [0 P; D+ A9 r% S8 Z2 c
本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。
. @; F( v1 W( z) l: c. z  X' ASubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
8 I6 I/ x: \" ISubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
& ?% c! ~& \& _8 I" M此SubGHz HAL驱动程序由以下主要部分组成:
' l4 Q6 V* f. v$ _
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务)
    + s2 n+ B5 O9 L% Q5 }

. j$ |0 U: n4 y5 _5 A由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状1 d9 F9 D8 a& B+ E! t- F
态机。
/ d( S9 T, b2 ]* a% D : e! k1 s% g6 K" Z# Q- M
3.1  SubGHz资源 + u- K7 M' m0 B6 X6 U% k
初始化无线电时会调用以下HAL SubGHz API:
# p2 R( ~  G2 s7 {( C
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: 9 |  l4 S/ R8 F: `! h

; w8 _) b* o, X) ~    - PWR配置:启用sub-GHz无线电外设的唤醒信号。
% U7 M% X8 M; `% f    - NVIC配置:
8 T+ b1 U) B. J      ☆ 启用NVIC无线电IRQ中断。
, B4 u- Q) F4 Z* ]  P8 H6 J      ☆ 配置sub-GHz无线电中断优先级。
: o1 T+ S0 K  }# e# M9 c在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
2 L. I! |6 E$ h
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
      a. F. \2 a& ]+ F$ u9 J0 M
* s' q* k; t; {% Q: F; O
3.2  SubGHz数据传输
$ E/ ]9 c+ K$ @0 QSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
; ^8 Q! k% h" `% G# S) AGet Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
2 a- Y% O' Z) [% R! Y6 F读/写寄存器访问操作在轮询模式下使用以下API执行: * n% t# Y& ^0 W0 _7 R7 l
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    # U- i2 v( c+ _2 z! O0 U9 j
' X- t9 c" j& U7 [; n" n& r
4 BSP STM32WL板 * Q4 T' u. D  L0 d0 ~
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC  Q2 @  ?) q: o9 `1 o" w" K- x
设置。
' E' ^0 v. i: C: u+ g8 i; M" L* L注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: / q) x. e3 r6 A& m$ ?3 X* Y
2 x, J" d+ K# A( S4 O
  • 第一个选项# V3 ?. ^1 k3 E: h3 G5 E
    - 复制BSP/STM32WLxx_Nucleo/目录。
# J3 S% [. O+ G, I" c6 n    - 使用以下信息重命名并更新用户BSP API:
  x0 J/ l/ Y# C& y      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
2 d& H& T& U. i8 m* j/ r      ☆ 用户TCXO配置 " z. c  D% G6 f7 E4 H
      ☆ 用户DC/DC配置 ; }1 X. M/ B2 ?$ U* z
    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 ' v$ O& p8 J+ t: a5 [8 `" V) _
  • 第二个选项/ C  r1 g  A' n/ j0 O) M) ^  B
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。 . l0 v! T1 Z+ i9 W" }4 T, [- M9 R9 T

/ {9 h1 Y0 ?; f) E4.1 频段
0 _# p0 j8 d; y  U; x" z, ESTM32WL系列上可以使用两种Nucleo板: - `9 s. }4 u: B2 T# n
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率
    % S; @! t+ t; Q
. I9 f( S& \# |2 f. N$ C
如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。
5 O' H2 U; s9 }$ U固件不会检查其所在的板的频段。 3 ^5 ~( }' n0 j* j( Z

# u5 _2 ~2 |4 ?& q+ q% [! Q4.2 RF开关 / E/ v% m1 T* H
STM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
: u$ S% F( L7 \! n
  • 高功率输出
  • 低功率输出
  • 接收
    / S) y- P7 Y0 @
2 W; b% g4 h8 z9 @' n1 l' c3 s
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。: ]# o2 D! w0 d
表4. RF状态与开关配置
15.png
: D: @/ N( t) O; o) \
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】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 手机版