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

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

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

2 k; T8 Y9 n; V! Z$ S. A本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。
" v8 o( P. g6 TLoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。 " [# A$ F, @& A, S
STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
  {- M8 T8 S2 |7 j3 M4 U
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 ' ?: U$ d' X; F' g0 d4 X: D& {% I
1 p1 q# l% [9 C- W+ |5 Z
STM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 # J! w. X0 l; L( E3 t
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 1 ~; `; f7 A! q' L+ J3 A* l2 z8 K5 M
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。3 z5 f# ]( X9 p4 ?) p8 q& D
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 ) R( m3 l7 b8 ?! b! t) B

2 |' F5 r! N% q7 j; _注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
, _. N, i8 ^0 `" L& q! J1 R9 |6 _1 c. @) M2 Z: B0 E2 P5 V8 F
STM32CubeWL概述 , x  g' }+ I4 |: `0 Y
STM32CubeWL MCU软件包的固件包括以下资源(参见图1): 0 x: e8 y# S! n) N7 Y
板级支持包:
: w) a2 J, M: A3 A6 e2 g: F- y& }
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 4 t8 d' |0 j3 E  p1 O: U" ^% Y3 U6 l
1 J' C7 t8 S4 Q1 \
STM32WLxx_HAL_Driver 3 ?) }9 G  z! a: N0 @- A
中间件:
: O4 D4 |8 @5 [. H- LoRaWAN包含: ; A" g! R4 o( W2 U, k. g% \
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    0 [$ V5 O+ G5 L5 W+ ]; m
6 @4 a0 O, C4 l2 f2 q
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件
; [. M& O% N0 W  Y0 [: ]3 l. N3 JLoRaWAN应用程序:5 r* B1 r6 B2 ~& U3 a- P/ n/ o
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核) 1 N8 Z+ j+ b3 A% a3 s0 ~

/ D+ F+ e, f+ o/ }; GSubGHz_Phy应用程序:
6 s6 ]/ D5 b' A7 O
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) 8 L( _: z6 ^4 I) f! C& b
; f: d( b# C8 P
另外,此应用程序还提供与以下设备的高效系统集成:
6 r# P# |. g  v& g8 L! o
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    ( h. E6 p1 A. g# C" q/ N2 X
- k) I6 a/ s+ \! t8 {9 x4 K
若需更多信息,请参见第9节。; @+ v  ~7 W0 {4 k8 a1 g& B
13.png
3 SubGHz HAL驱动程序
9 Z! q, H4 t( y0 f本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 8 ]; b9 _* k( q
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
5 Q! M! \: f+ @! bSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
) p% I8 s9 b$ g: e1 a此SubGHz HAL驱动程序由以下主要部分组成:
  L' |) g, u3 z
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务)
    & r- P1 c( D0 y" {: |& y

- ?9 _1 b, b# F) u; Y) q! ?. H# `由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
, m, n, v3 t3 r. _& }' |态机。
! l# _+ q) F- ~7 `; @ 7 v. d9 k6 t4 e% y& F$ s$ |
3.1  SubGHz资源 " Z2 Y' z3 M$ `; W4 V/ C
初始化无线电时会调用以下HAL SubGHz API: $ F2 w% A6 t. u3 c5 k, J
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: . q" W$ x, `$ M" q
# e- ~8 P1 t- {. {2 j  ^
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 % u9 _1 a! |; A2 z2 ]5 k' M: I
    - NVIC配置:
: K3 Z' o" a+ ~9 J/ @      ☆ 启用NVIC无线电IRQ中断。
; j% Y7 x- Y) {5 e  e' q      ☆ 配置sub-GHz无线电中断优先级。
8 i6 V4 y6 N- ]5 s在stm32wlxx_it.c 文件中会调用以下HAL无线电中断: 0 \( S) O% E. Q  K" Y
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    ' F5 N; D* J3 Z, @* S
3 W. f% U8 c( E
3.2  SubGHz数据传输
7 F+ A$ w4 y  z& O0 xSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
5 d7 h/ X* g& N( V! H5 YGet Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
- i" A& [: d1 o8 f  f7 m读/写寄存器访问操作在轮询模式下使用以下API执行:
6 t7 S! H) ~9 U, o/ Y  |
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    8 K% A, j/ I8 f+ A; X+ m& @4 ~
* E2 L# e2 e1 f: t- `) T
4 BSP STM32WL板 8 {4 o" Z# p) G/ {7 F. Y
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC% o2 h" m) f7 z, q3 M4 t
设置。 3 z8 C# x' M0 K
注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: ) b* U- ?/ q$ w

9 A# S; \, q# }, m3 G6 L
  • 第一个选项
    - ?3 ]: M  p& E
    - 复制BSP/STM32WLxx_Nucleo/目录。 . }% {" a3 S, l+ q) v5 x) f7 {, V
    - 使用以下信息重命名并更新用户BSP API:
. e$ p1 {; F) ?0 F6 [8 E, D) j- o      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
' v3 W9 j5 e4 {: `% x" ?& V      ☆ 用户TCXO配置
! P: X( ?# ~9 n( A) e# t! D      ☆ 用户DC/DC配置
7 N- Q! q( A! h7 e0 e3 H! E    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 * }* }9 S" N2 J0 E- N# w8 F
  • 第二个选项5 v$ z( {  f9 z; D
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
$ E* M# ~9 k- U0 h( u0 W. g3 P8 |  u6 U: m0 u; C3 N
4.1 频段 # r- H  q1 b- [+ Z) |3 p! x
STM32WL系列上可以使用两种Nucleo板: ! K7 B, X% I5 A, J
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率   X, K$ \! J* r0 ?' K

; H7 Z, y/ l8 `. W5 b如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。
& {: h) ~# n, {  C& w0 U固件不会检查其所在的板的频段。
' e8 j, V! ^8 s! a2 T$ g2 h9 c, Z& |
, C' X/ n! N0 L) n, [. w% V4.2 RF开关 + |# e( @4 w, I1 h0 R
STM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
$ {$ D6 d; c. o5 d0 E% b, @/ I3 [; H
  • 高功率输出
  • 低功率输出
  • 接收
    4 U  x8 h/ n8 _0 ~$ I" j0 g

. c7 [$ k6 B. s- X' ~
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。
9 L5 u& z' Q1 }# X8 E2 y% `
表4. RF状态与开关配置
15.png

& k) q2 {$ O$ u  |$ `2 ]* R
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】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 手机版