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

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

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

( \! M  `8 }7 l! P) c7 J7 f  [本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 ' c$ ]1 C  S$ d6 f0 E
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
5 \1 a. h  _+ S) l# P" GSTM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性: + U1 @! U5 y$ ?* G5 {/ Y1 S
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 * ]0 k! S7 [8 U6 P  n( d

$ `$ g9 d4 V8 K8 ]+ X4 mSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 + @; ]' I8 L- a4 x; x' G+ ]
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。
; s4 j# M, N) G& {5 m为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。) t2 \" t6 f' p
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。
7 Y* A9 D6 L' |: x5 u  V& |8 V+ U' Q8 q' y5 f; T
注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。  i7 t# `% R( ?, O; f( G/ U  F
- i% i) G4 h& c7 E6 s/ {5 A* K/ X* k
STM32CubeWL概述   c/ x2 [0 Y0 p* R- r. R
STM32CubeWL MCU软件包的固件包括以下资源(参见图1): - R5 t& o& ]8 N5 S$ l1 H
板级支持包:
* U7 c# \& X/ [" Z) p
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 + S1 s0 y. c! n; D4 a

( L0 `) V1 r7 g# I) p) y1 dSTM32WLxx_HAL_Driver
& N( `# y# U+ l7 }中间件:
' v3 Z& C* `2 N+ a. d- ]- LoRaWAN包含: ' \: b; v! b4 g, X- w' y+ ~7 |/ S* v
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    7 G8 F& f; M" ]

  F0 h4 A" a; K- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 / ?8 E  e4 \2 D" w9 e+ ~3 r
LoRaWAN应用程序:
' w; d3 R6 d" l. \
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核) * k( w, q& \% q2 @( h  Y+ y5 [

- }6 @7 {4 _" `8 pSubGHz_Phy应用程序:2 G1 m7 }1 _. a$ |. A8 z! `
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核)
    8 L6 S; H, e" R, s

% t( P! T+ C2 C/ p9 o; r另外,此应用程序还提供与以下设备的高效系统集成: ) S) G- }" h9 J
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下) ' o/ k% J- P4 _0 v! M

9 n1 K6 H3 @9 \7 X: u2 E$ I若需更多信息,请参见第9节。6 p" ~1 p1 |; S* W7 n4 Q: ~' V
13.png
3 SubGHz HAL驱动程序
5 u2 g5 n/ a1 H! x: C本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。
+ p8 E$ c/ Q* k; [$ R# B1 {SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。 . h2 d9 m( x$ }1 r4 o! a
SubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
3 |  M% r& Y6 }  R: C7 c% T此SubGHz HAL驱动程序由以下主要部分组成: 6 a0 Q# c- x8 w8 M+ K9 ^- e" y
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务)
    9 q# M1 ~( |  ^( f- K0 t

6 o" ?8 U4 m5 o! U" A由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
% J! I! \$ h! H. f8 f1 \2 _% Y态机。& G" g. r: y8 J7 P- D  y
9 L/ C/ I2 W( [& C0 x
3.1  SubGHz资源 5 |$ y5 o% |. F& @
初始化无线电时会调用以下HAL SubGHz API: 2 N* k9 Z- Q, V* w  f$ }
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: & _! [* M  V. u" A3 a/ h
; k# [% v# _3 e& k
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 8 O" u% Y) [! g% p
    - NVIC配置:
) _. q7 P" s& B* E3 l      ☆ 启用NVIC无线电IRQ中断。
7 d, D, K8 T8 ^% R8 ^9 \      ☆ 配置sub-GHz无线电中断优先级。 4 ?7 _4 l  D% [$ W, k: _( V
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
: }$ {+ s, i8 m! j2 x2 G8 H4 a
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    - b& w4 ~+ K& r$ @. \/ [

, q% G; H3 ?/ K+ I, C" K/ D3.2  SubGHz数据传输
# ?4 J0 Q1 M8 v6 cSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。 4 j4 F% P3 L6 g' g
Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。 1 [5 h, y' G* M* J) y7 M- c
读/写寄存器访问操作在轮询模式下使用以下API执行: $ e9 I, i/ x) x; t, _! {
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();( x  _2 e' f: V

3 w' b  E- j& T% x( y9 O( }4 BSP STM32WL板 - y  r0 G& E  X& p
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC
( A; Y5 i" D- @) {8 Z! }设置。
" Y, `) J) R: A9 `3 Z, Z注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项:
; J9 h' @0 }) l1 y$ R7 c' }7 a! C9 R6 c9 n0 ]7 N# O
  • 第一个选项
    : k& U$ S" j6 m( |3 M
    - 复制BSP/STM32WLxx_Nucleo/目录。 0 v5 I0 X9 J( ^/ l$ s- F( C
    - 使用以下信息重命名并更新用户BSP API:
, F' b: \. S+ [      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
# a6 R& H, H; J3 R$ l! O      ☆ 用户TCXO配置   N7 v) o% ?9 V- X
      ☆ 用户DC/DC配置 ' }3 g6 H% z' \9 u8 a$ }5 z7 M& s
    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。
$ L8 u8 \& N1 F2 j9 A; D
  • 第二个选项
    6 W. a2 ?- B- R" S$ h& D3 P" A/ c
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。 ) Z1 L, _$ I- |6 g* F' h* h
% v# E# E0 D! x; ]0 `& F, ?
4.1 频段
3 V8 ?" h* I2 v# |STM32WL系列上可以使用两种Nucleo板: / b, `5 D5 C: i& i
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率 0 w+ I: g: p4 j0 \0 H

5 u9 A. e: o" s! l2 [* A如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 - K5 ^: F6 r# c- e) ?% z% m( N7 D
固件不会检查其所在的板的频段。
+ a8 e3 X& Z- J8 S4 {
7 ?3 e% x) T" z: O) a8 e- O4.2 RF开关 ! r4 c$ ^: K3 z% Y1 O
STM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
3 H, K8 A- M9 P* I
  • 高功率输出
  • 低功率输出
  • 接收 / S% Z2 k! a4 A' Q. f' P
. l9 d! A( b* V3 q3 }& M" r- M
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。
7 L$ f3 E2 c8 R4 r
表4. RF状态与开关配置
15.png

$ s" S* ^) ]4 |# L5 v$ g7 ^, b3 q
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 2)
收藏 评论0 发布时间:2025-2-10 09:56

举报

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