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

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

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

* F6 b" P+ d+ m5 @# ^0 }7 v3 f本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。
4 V8 }5 w1 F. M6 LLoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。 ! P6 d0 y( N8 L. ?: l
STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
6 w3 p9 u% O! L( F
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 3 j8 n% y+ S0 F% _' c% a

/ p; e; ?: }6 c/ X4 R* wSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。
- R; _/ k* A0 z9 x5 p本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。
& j- D1 m8 V  q; _4 q) k7 w为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。
6 Y. M5 b5 e4 KSTM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 7 P7 C1 C3 q* A4 [# v

7 {$ \8 ]. i9 O+ |注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。9 H0 \8 K9 ]: Q; F% h
* U" M" m* i, B6 ]8 I3 ]
STM32CubeWL概述 # D5 |! w9 @/ \) u
STM32CubeWL MCU软件包的固件包括以下资源(参见图1):
4 y' F. K# r6 \- n0 g& ], D2 ]板级支持包:
4 \; Q8 [, I, E
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 , F& u; A5 f' z" \5 \" O8 z' q

) U% s7 f5 [7 a  T# W0 U3 W* ISTM32WLxx_HAL_Driver
6 m6 _' y7 j* V- }- Q0 N9 e3 a  y中间件:
$ b8 W- R- m! B# y% a- LoRaWAN包含:
$ w$ N/ {! V( q* a* x6 N
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机 5 s4 }  t; G3 y+ }3 W
: @% E' \& {' u- d6 c9 y' N5 g
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件
7 Y! L# n; ~1 q& a2 K+ @* XLoRaWAN应用程序:
. V5 Y# P. @) g0 K1 @5 ]! I
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核) 6 ?& O( N0 j; T( Y" z

) ~0 b8 X% G+ c; k; u3 j" oSubGHz_Phy应用程序:/ Z( |% u2 I9 ]! m4 \7 ~, m
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) 5 z5 I& s. J; c

8 ?" n8 L; I) c! m4 d, {0 U4 |4 h5 i另外,此应用程序还提供与以下设备的高效系统集成:
* ~9 a2 v( d- ^# z" t! g4 x8 w& O
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下) ! S/ f5 n) B7 Y
8 A6 S8 r8 l. Q3 B# s) z
若需更多信息,请参见第9节。: x" H8 J/ L; r2 w
13.png
3 SubGHz HAL驱动程序
" X: Y5 J- Q  }1 X1 U本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 # _8 A9 p9 B0 ?. H% U) g, H9 p
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
  X: [' [: w' r! eSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
2 b% `; |9 v6 m; e' i. }4 J+ ?! u此SubGHz HAL驱动程序由以下主要部分组成: , ^# `( X, Y7 ?6 t! l3 D( F% j
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) " x' p1 H( d2 P

" E; j: `  E) l. N* T4 }1 w由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
/ @% a! J; F, t/ l* C态机。
' t3 c. i2 U3 m' E . b1 H, R* y/ ^9 N2 v% t1 n
3.1  SubGHz资源
2 r& r+ s) @. N0 S- h& Q4 h初始化无线电时会调用以下HAL SubGHz API: " R+ _: s! k, f9 _
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: # t: @4 W5 c1 s8 I! B

( `& d5 \: l# t. K/ S    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 * V! |4 z) }8 U, |
    - NVIC配置:
  _$ m7 y7 G; g9 L- E5 ?' J      ☆ 启用NVIC无线电IRQ中断。 1 o8 z. ?2 }/ E% x$ X4 |# F
      ☆ 配置sub-GHz无线电中断优先级。
3 K  ?; k" a( e在stm32wlxx_it.c 文件中会调用以下HAL无线电中断: % U+ t9 U& K4 K; n7 Q
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    ( `% S' n+ x/ l0 r

& ]. @7 n" l5 r0 E. _5 O& [3.2  SubGHz数据传输
( G+ b1 v+ m* E+ P* m$ hSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
' h1 W# L$ _9 i( YGet Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
# z" e, I0 T; `9 n读/写寄存器访问操作在轮询模式下使用以下API执行: $ i# t7 c0 i3 u( U: ~( ~# A7 U! p
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    8 C0 @4 D0 u$ v  \. H: l

, f1 B. @+ P5 H6 y4 BSP STM32WL板
8 N* P6 L) R1 o8 @6 O' V本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC' i% K3 B: p. Z* l# r0 N8 o9 M
设置。
* S; p) m8 O* Q" ^, o注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项:
& e: N% @/ t3 Z% i2 e9 _# E* {0 ~% C4 \9 Q% b4 `
  • 第一个选项7 M7 ~) U# M+ ?  s
    - 复制BSP/STM32WLxx_Nucleo/目录。 6 O6 O- h& P7 F8 z3 `
    - 使用以下信息重命名并更新用户BSP API:
5 x9 h* ]2 ~* ]  K      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
) s% h7 y5 w. P% s5 f0 g/ c      ☆ 用户TCXO配置
& [; Y3 w/ a; S0 W7 G8 |      ☆ 用户DC/DC配置
" P, k8 e' i1 Z* n+ w6 w    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 3 w2 R3 e0 s  X; @; ^
  • 第二个选项
    : e8 W2 G& w; G+ W( K8 }
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。 0 P. a, k* a1 n! f, R
) O5 ^5 E( k5 G3 b
4.1 频段
9 M# M& M- e2 _7 j& K* LSTM32WL系列上可以使用两种Nucleo板: # A; T) A/ b+ k1 E, @, Y4 K
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率 - j5 _# E. i# A7 x
/ o9 u% }( g& x; T" T" _# q: j: [
如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 1 T" Y6 H! U* `! e3 d+ }9 B( E0 ?& G
固件不会检查其所在的板的频段。 . a- b5 F; l2 q$ Y! G

5 r: T0 i) ~6 ^4.2 RF开关
/ o2 P) {' x# y" f4 dSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式: 5 p( }4 R2 a: v( t! Z
  • 高功率输出
  • 低功率输出
  • 接收
    7 a" ?% i2 G$ e( t9 M9 e- K( S
; Z3 ~- y) X% z! c/ Q
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。4 S  N8 i9 L$ z4 ^$ g5 Q2 d- M- L5 H
表4. RF状态与开关配置
15.png
* j" r) U# `2 a6 r
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 3)
收藏 评论0 发布时间:2025-2-10 09:56

举报

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