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

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

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56
0 F5 E4 c% N/ Y9 _; S
本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。
4 O' V% S( n2 `$ W* zLoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
5 i" c: [; s1 J* e0 @STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
9 {  {0 D% n4 L; ^7 }5 K3 \1 r
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务
    : n0 D6 D& S8 d; e
0 d' G7 N0 J/ a( O
STM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 8 ]1 f+ h- H& ]! @7 ?/ k
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。
. o7 V/ @) E6 n: n1 C' Y9 Z# m( d为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。
. z" h' K3 g4 l$ K+ D: e( GSTM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 1 V3 y8 Y" Q+ C) C0 k; R. l

! H8 x, c/ \/ m3 a注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。  H- [( r7 x, u0 g

3 X) A) o$ _5 hSTM32CubeWL概述
5 v! J+ b! i5 B( q- |STM32CubeWL MCU软件包的固件包括以下资源(参见图1): ; T5 V& W8 g; n
板级支持包: , J) |4 M7 z: e
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 6 P7 W7 @/ ~$ I4 Q1 M: v
$ D# a/ _. x. [  d
STM32WLxx_HAL_Driver
, {7 g3 r- a+ ]2 v! D6 P4 U* h( G中间件:
2 S: p$ a/ q  c: B& ?1 G( H5 g- LoRaWAN包含:
- ]7 P4 b- p) z/ n" L$ T
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    $ c8 G; g- D3 F2 n8 m
) b" Z/ Z; b/ Q! U* |# J/ e
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 / X& g# ]3 H: |5 ^; S
LoRaWAN应用程序:# R4 m- J( H. b$ E8 N
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
      s( ?2 |5 q4 ^- S* T# m
. i& }* r( b; q8 j
SubGHz_Phy应用程序:
3 n: B% J2 D3 O+ \: c
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) % E- _' L) S' L; ~: j

( S; O. F: f. |8 M4 U: a# E: K- I7 c另外,此应用程序还提供与以下设备的高效系统集成:   V: z7 G6 J$ K' d8 Q* V% u2 K. d
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    7 T4 [' Y$ S1 r. }, o; X- V

: Q5 `8 N5 _  C% d% |若需更多信息,请参见第9节。
# u- f. Y) A6 o1 [$ M
13.png
3 SubGHz HAL驱动程序 % s4 L- p" H% m1 h5 e0 T
本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 ( ^) {  {$ \3 ]
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。 " t: N! A3 B! v5 W* v/ K
SubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。 / y7 |6 J- i' [6 P
此SubGHz HAL驱动程序由以下主要部分组成: ! Q3 D% w  I, s6 a1 c* l
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务)
    ) U+ u$ Q# Q3 M$ }& n% b' e' [
2 w, {: T, Q8 D# A
由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状  W* A7 A- l5 k6 b( |( a
态机。. `! D& m0 B* I' L& v/ R

( ~, |$ X% w& \! p3.1  SubGHz资源
/ B4 H4 M2 x! `初始化无线电时会调用以下HAL SubGHz API: 9 Q6 |6 D5 e  E0 p( q
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源:
    3 G* r9 }+ b- r
$ Q2 s: m0 b! A. X. H. h# P9 }
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 2 Q2 c1 a: H8 ?( q* k4 o
    - NVIC配置: $ X& U1 U/ m; ]5 a0 `* w4 f$ a
      ☆ 启用NVIC无线电IRQ中断。
! J, M' X3 P4 r. Y      ☆ 配置sub-GHz无线电中断优先级。 3 P& k" N7 N; F- w. Q# T
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
- o3 R8 z: A" C, ]+ [
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    4 Y! C  t2 F2 E: e$ X( M5 j3 ]# C

0 A' a+ H% s* Y  g. G( c3.2  SubGHz数据传输 1 V: }4 _( B' T: h, v9 G! ~
Set 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。 , M; E* }9 N1 N* G
Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
, I( U8 g1 o( L/ D& m; B% i读/写寄存器访问操作在轮询模式下使用以下API执行: . j4 k( j0 J) G
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    6 p  Y; x, q5 @$ Y3 C) |! e. ~* P

. ]0 q# h5 @3 R( z1 \* |4 BSP STM32WL板
$ Z" A/ l& a& ^/ o6 D7 ]本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC
: X; g- X& v, `7 }; A) g' p6 |# m设置。 2 j. v: m8 B7 c& p: l; e
注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项:
2 Q  j& S' X9 F' I8 T* w# o
+ _9 x4 w/ T+ h0 {, X! R9 Y
  • 第一个选项
    + G1 d! o, B6 x) P" p7 p; u  c
    - 复制BSP/STM32WLxx_Nucleo/目录。 ' h! ]: d# w3 @+ _) }
    - 使用以下信息重命名并更新用户BSP API:
6 y" u. x& b2 S# C  Q1 ]0 S3 i      ☆ 用户射频开关配置和控制(如引脚控制或端口编号) 9 |/ I6 Q- J: ^7 w1 v, H9 P
      ☆ 用户TCXO配置
, Z3 ^' d1 ~" r7 |      ☆ 用户DC/DC配置 , @. d; ?6 B/ {; H& R
    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。
& T: d0 w) |8 g  U; J
  • 第二个选项# i$ u: J  d2 u* B/ W- q
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
; [. ^# f# }! x. b& r$ I/ x' B2 ]  d1 L% J
4.1 频段 1 D4 \- j, {4 O& {+ T
STM32WL系列上可以使用两种Nucleo板: " |4 c) c' d7 z: ~; z( m) S4 U
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率 . K% g$ p0 g' X4 i& _

; G& B1 }" v8 Q& H1 Q/ p如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 8 K: r) Y* @" m% p4 U+ t7 L3 @  X! B
固件不会检查其所在的板的频段。
1 V  v; j+ o$ w7 u, _/ E
3 C4 W; I" N& E: F: y5 E4.2 RF开关 . m1 N: @$ i9 C* ?3 u
STM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
; @( m  f' q: u7 j% T! V: Z0 c
  • 高功率输出
  • 低功率输出
  • 接收
    : ?+ [+ G8 W/ y! T! Z- h

1 Z% H9 y* r, b4 W  ^- @
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。
* n2 Q) n" D, L! a- y
表4. RF状态与开关配置
15.png

& r6 n. J9 J$ T! a% |/ o
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 32)
赞 收藏 评论0 发布时间:2025-2-10 09:56

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版