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

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

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

  s3 u( s+ \, ?, v2 ?2 \) {, e本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 " }! p% A( B; k! A, i$ B$ E2 C
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
+ Q$ y$ o- Z6 D* h2 i5 a8 sSTM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
+ T% a: L$ b( P# i' d
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 6 i9 \6 {5 _4 o4 e8 k0 B" q0 A
, D; {' a/ @4 P; e% l0 A
STM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。
' P7 a+ X) S# Z) r. t8 b( l0 e8 l8 |: N本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 ; u5 n% u- Z* d, n& A' r
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。0 P& w: B/ ]5 X9 Z+ M5 |# X
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。
7 N3 Q& J- S% ?! E) u/ [. X& }! T  ?3 p! W% f- R. ~
注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。6 k, o* I+ F6 m/ `8 F, U

! L! y9 ^$ z& {$ I! i5 T. |/ }" SSTM32CubeWL概述
& Z# P3 T% L$ jSTM32CubeWL MCU软件包的固件包括以下资源(参见图1):
, Y5 C3 P  ?( E* i) B- d0 Q板级支持包:
2 {( P$ M+ C& }& J6 X
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序
    & {+ B. V2 E4 h% O

5 k" b) c0 b; g0 c5 M5 |STM32WLxx_HAL_Driver
4 k2 p5 {, V9 m" ^+ c中间件:
3 D/ {. z: ]3 N& v$ ]- LoRaWAN包含: 7 P0 E1 N; J- A- n
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机
    * |) z0 G: h! @" g7 C

7 \4 _+ f$ U7 z. R5 q  w8 Q, n- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 + R2 F4 n3 \5 s  S
LoRaWAN应用程序:2 Q1 |( A9 c, _
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
    ( A5 Q* }# R5 [$ u% h* D) x

, X* u& h7 W, O' u0 ?8 ZSubGHz_Phy应用程序:
: X' m4 J4 u$ I) Z2 {7 r5 _# ]
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核)
    6 P& K. l5 g# n/ {1 d5 Q8 M2 p1 e

1 N  S; Z$ M* Q3 V( f另外,此应用程序还提供与以下设备的高效系统集成:
  k  H- g* P& }6 C$ S0 i
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下) # m: N# H  c* S% {  z2 @

9 R: g# q" w2 ]- K若需更多信息,请参见第9节。2 f; F0 w+ ?5 `% J, Z" {5 U
13.png
3 SubGHz HAL驱动程序
* j1 H! S. G% D% _* t本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 ) F! y6 c0 v- b; z, c
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
) ?" A7 e9 H% J! n; QSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。 2 ^$ _1 b/ {5 X3 {! B5 H! I
此SubGHz HAL驱动程序由以下主要部分组成:   |: g% v% G' q! A. z0 ^
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) 0 c. D+ B7 X6 _  p7 B9 t

# m+ H2 [2 P  s: O9 K由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
2 L" i8 g# N0 `1 b+ K) M态机。
" |# `, Z& K0 T1 b9 k2 H0 E * O5 ]+ Q3 u! B( x2 z8 {" K
3.1  SubGHz资源
2 D# w2 F" k2 \' |初始化无线电时会调用以下HAL SubGHz API: - @3 T/ ~8 q  O' c  C
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: 8 ~* [. |3 T9 l% U
5 ]) c+ ~% P% [" W1 C
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 , a, A! C3 C3 N* f
    - NVIC配置: 6 p$ j' n2 U/ z: k! p" b, ]2 h3 W
      ☆ 启用NVIC无线电IRQ中断。 8 U( g. G! N4 [2 a$ }8 X  s6 a& A
      ☆ 配置sub-GHz无线电中断优先级。
' f$ F7 s6 X% l$ o$ z( Q; O5 `在stm32wlxx_it.c 文件中会调用以下HAL无线电中断: - D2 m; O0 g# ~& M. D- ^$ r. O* e
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。4 x# X1 f: k& n) S

1 A) w4 [9 O2 Z/ u7 i: c% l# b3.2  SubGHz数据传输
  J8 O5 q/ j$ O% ^Set 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。 ) }* Y2 i2 y; D3 X  r$ [9 b! @
Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
; B1 V. ^% K1 Z9 b! s读/写寄存器访问操作在轮询模式下使用以下API执行: , z* F; u8 o+ m( S; `( M
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();3 S6 A7 l5 e4 a9 |1 ^" E

0 I' ~4 ^6 R. t+ j/ E4 BSP STM32WL板 9 X! Z, y, U, [) i
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC
6 v. h. n6 V; g; p5 C0 b+ X( b! }设置。
, V1 W% L9 o; l7 L, X3 E注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项:
$ P1 E% T( N2 Y3 D, t* M/ W0 N0 G0 v$ o: y
  • 第一个选项! w  Q' m. ~9 r- l
    - 复制BSP/STM32WLxx_Nucleo/目录。 ; W9 G% t# r" u. B6 z7 ]
    - 使用以下信息重命名并更新用户BSP API:
7 l1 f$ f6 |& d4 \* {      ☆ 用户射频开关配置和控制(如引脚控制或端口编号) 5 {# B) `: t. w, z* c
      ☆ 用户TCXO配置 , \4 ?% j$ w* t& M
      ☆ 用户DC/DC配置
. K7 J- F" @$ x% n( j    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 2 p* A8 K. [6 j& B: A; `
  • 第二个选项
    6 B% Y+ i. v3 i6 e* `
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
$ G7 V0 F! H, ]; @% Q& [# m- z7 x8 N4 O: v2 h% C
4.1 频段 , f$ G+ I: S; F. w3 C' H4 h# U% k
STM32WL系列上可以使用两种Nucleo板:
1 W% U( j( R/ f5 V
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率
    # z7 |2 s3 Q( Y/ c  Y2 x

) N6 b, m" o. f2 A如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 / T( y4 d$ U1 {9 h
固件不会检查其所在的板的频段。 7 u& S( J3 c/ @  g
2 \% m1 y, W. R* p1 C( @  C
4.2 RF开关
8 N& Q" w  @0 v. x8 ^/ vSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式: 0 T% t! ^7 L/ u* t( k
  • 高功率输出
  • 低功率输出
  • 接收 * {% b4 q( M# f4 v' p

2 D7 l! y- C- V& {
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。4 i; P; F- L- d& c* v2 x4 v$ c
表4. RF状态与开关配置
15.png

6 s- O0 k2 M0 @, b1 L
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】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 手机版