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

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

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

1 G$ o; L0 }) I  _: w5 l本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。
8 {9 E3 y( ~0 c6 b- B5 B. kLoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。 ; P/ w1 d' y; I+ [( ?9 d
STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性: & h6 j! [8 b) b9 X
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务 6 c) O& a2 h; k$ U

7 e% k1 x3 u/ S8 }! C  bSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。
1 K% U. I; h9 r9 A2 s/ f  P本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 / s: n# m1 O0 Z& e, q2 u! A
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。
& U- @' }; I! n, _$ k" eSTM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 / e- }9 H2 S/ D7 [2 ?+ J

3 x: q& n5 ~  [+ |  O6 f; ~8 p注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。# b) r9 v' P8 |0 F/ Z. c
% x& W" P( O2 W; J/ y! c6 O
STM32CubeWL概述
$ X& ?( F; c8 X& }5 HSTM32CubeWL MCU软件包的固件包括以下资源(参见图1):
; a8 ?: o# t* X; i% l$ v5 N) G板级支持包: 8 l: r& A8 N" v! y- P
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 6 h' `7 Y( s4 ^( ~$ K( X" b6 l
5 R% p$ \! Y5 f9 \
STM32WLxx_HAL_Driver 5 C  Q+ f+ d5 m. U: x2 n: f
中间件:
( ]" D2 i6 M, @7 f- LoRaWAN包含:
: j' n* d6 R; @
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机 ' A& [2 E- x' J% D, U) ^1 H7 z+ y
( d! R! K9 @2 B6 ^- n  m* l
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件
- a, Y7 Z7 ^3 X0 ?  B0 `5 D( N& ILoRaWAN应用程序:
" U( y# Z9 l7 N) c
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核) 9 t0 D, Z/ z( Q2 [1 R  t4 c
: h- @5 C, m. q( K4 u8 I* w0 y* |3 \
SubGHz_Phy应用程序:7 G3 g$ R3 ?* h7 L, c
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) 1 \$ `2 o7 z, n/ s  z- b7 i% J6 v/ \, b

" N. ^) l6 q$ ]另外,此应用程序还提供与以下设备的高效系统集成:
5 t7 M! r2 N( M) T; U
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    : \' z. I9 h' }0 k1 }
0 u' T! d( q+ |8 }
若需更多信息,请参见第9节。
. w% Q2 P% W. \: f
13.png
3 SubGHz HAL驱动程序 ( r. `' N3 h/ P+ [  z7 Q
本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 1 b  t$ u, r5 c9 |6 S$ D
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
3 X3 M" k! I3 g; J7 J- d7 GSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。 # I, A! e0 i. k* [: }
此SubGHz HAL驱动程序由以下主要部分组成: % m. h" ?8 G# f7 k" Z( ~  o3 Q; o0 D0 C
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务)
    & \) y8 m- m$ y; z/ m

$ x$ ]1 |4 T5 ]. [2 P0 D( a由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
( p: i0 w% K" ?: i1 Q# p0 {态机。
; v: d$ E! h! t6 b0 U 7 Q3 E5 |; D0 m' P) I! N/ O
3.1  SubGHz资源 4 [7 g2 y% C' T9 J% N
初始化无线电时会调用以下HAL SubGHz API: ( U5 C7 F$ V! S4 H1 y) p# n
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源:
    + E6 p8 Q; A3 A7 g. M
  o) d' q9 Z: c2 N7 ]
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 8 y6 J' `7 j( m8 f# v; A- S) B5 a
    - NVIC配置:
7 i. D4 o" H- ~4 W      ☆ 启用NVIC无线电IRQ中断。 , s- m7 J  m  Z/ K3 |6 y$ d# N
      ☆ 配置sub-GHz无线电中断优先级。 5 T6 z! F7 E4 A" U7 M3 ^! t
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
  g1 I9 P. {$ z3 q5 |- C
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。+ E, P0 X% ^8 h; e/ r; ]3 ~

* w2 ^; ?7 F2 f5 P  w3.2  SubGHz数据传输 & h) p- V) ?6 ~- W
Set 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
( g# V/ Q) P5 W3 \* `$ j2 hGet Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
3 ?! C2 W! G5 M. n$ h读/写寄存器访问操作在轮询模式下使用以下API执行:
% w7 V; X; H3 y/ l/ v- V
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();1 I1 v, O' O0 A% L2 K3 \! l! _

; ^; @3 @5 {( K4 BSP STM32WL板 , t- R4 ~) E% I
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC
2 F. I2 F7 b& f% @/ B# S( m" u设置。 7 ]& p: e, M9 \: [
注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: ) j* Z/ I  E! K+ @7 h! d' Y3 X

) \5 Q/ J; i* V: ^3 A
  • 第一个选项& P; u4 \6 {6 n% X4 r
    - 复制BSP/STM32WLxx_Nucleo/目录。
& s* P* Y& D: ~; z0 B! W, T+ D    - 使用以下信息重命名并更新用户BSP API:   {3 ~, g' i8 f  g
      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
7 n. u5 S$ o0 P* G      ☆ 用户TCXO配置
. t& d1 N& I1 n/ K8 q: w      ☆ 用户DC/DC配置 , V. M6 m3 N- n. j
    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。
1 \* T2 Z( L9 ~0 |% M$ ~$ ?# `
  • 第二个选项
    ) \; _9 [  L* V+ J7 H7 A4 ?
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
& q7 L4 h5 V$ t* S3 _2 A  y5 N8 \) W- O: ]$ b- H6 K& {' S
4.1 频段 ) @% S2 g# w+ `$ @% G
STM32WL系列上可以使用两种Nucleo板: % j+ Y% o) B8 Q5 `
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率
    2 ^% T# E* S( \

. W) P4 \7 l% j2 a- C如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。
' D' d' h% \. h, J) y0 {固件不会检查其所在的板的频段。
" f. W/ J7 B8 [$ F* V; p  b' @. z0 a1 p4 ?5 r
4.2 RF开关
; h) R$ R8 l" \  g. k, N/ a7 G7 MSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式: ; `" ?" ]- X6 H* v8 F3 j! I
  • 高功率输出
  • 低功率输出
  • 接收 3 P& b- Z; \/ r1 L' {  U7 |/ h

) V$ s3 t' _* e5 ]/ C1 O5 {5 J
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。5 i3 ]$ E2 _2 I' I0 k! V6 o0 P
表4. RF状态与开关配置
15.png

& T% p# }+ t/ i& V+ Q+ h
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 30)
收藏 评论0 发布时间:2025-2-10 09:56

举报

0个回答

所属标签

相似技术帖

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