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

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

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56
9 _  z: k0 i+ _+ Q4 W  w0 I
本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 . E1 u1 F$ q  N. h# m+ T2 b
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。 3 i4 ^  m7 ?( _3 V' T4 e* g
STM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
$ X6 \( K: u; E3 q
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务
    & l; I% p  y; t) i  p3 a
" o+ ?* U7 O. W+ g% v7 `- N
STM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 & p# l5 L! v8 ?! l  o* L1 |; g( [; g
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 . X1 U6 [4 F3 Z$ l3 i5 V% @- j1 j
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。1 o8 e$ A( {" m3 Q: K5 J* p, ?
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 , J) Q" H2 C) I5 |" m9 e" ^

7 i2 W( L' q& p* X注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。/ f6 E+ i* d+ t0 F( q

5 ~+ _! a3 k6 F* I& Q) r$ S! tSTM32CubeWL概述 " q! C( @& D8 K' C, k6 k
STM32CubeWL MCU软件包的固件包括以下资源(参见图1):
7 l# \; c) H8 D; M2 U' I6 D1 r! k板级支持包:
' j# B& F# m. Q* o# F& O
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序
      b' H! A! v& R; b9 }

7 f3 t$ p3 e3 y6 z8 `0 sSTM32WLxx_HAL_Driver
; S  x8 z2 U/ ~中间件: $ F4 p1 ]. J% U) E
- LoRaWAN包含: / C0 q( j  u% p4 a1 K/ a2 s
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机 : C% L+ z  Y7 B) M
& J1 Y1 c# U' M( U" Z1 w. u+ w
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件
0 `( T7 Y* q- k. ]4 ]! tLoRaWAN应用程序:3 c+ y2 ]* ?9 C8 Q' S" U
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
    " M5 k5 u' {- u/ o: ~6 A

! @( t: n/ d' Q) E( H7 j( X. SSubGHz_Phy应用程序:
. I9 [/ i; n- O% h# ~; p
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核) . q. y$ S! c& l& D

6 {; D5 I4 r9 |* F2 R另外,此应用程序还提供与以下设备的高效系统集成:
4 M1 ^  U  V4 J, z' V* K) J3 m& M
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下) " W5 C/ l- g5 f- ?$ {

2 m  ^" Q2 r" s$ S8 z3 K8 r若需更多信息,请参见第9节。- r4 c4 ?# n; Z% f
13.png
3 SubGHz HAL驱动程序 : e# M) u  o4 n
本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 9 i) U' K5 h( @
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。 # v* l. `' G# m, n  P- h- Y6 C
SubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。 0 }& H: T, `# |+ a7 j
此SubGHz HAL驱动程序由以下主要部分组成: 7 K3 Y9 Q, t& G" g6 E
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务)
    4 \/ `# [$ y0 ^, j5 H) N2 r) G

" K, w5 V. {6 n由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状0 g! t5 B& g3 u/ W
态机。
7 M8 t: L0 M, A: c/ j" y" \
5 p% @: {+ w$ [9 K, ~, b3.1  SubGHz资源 / p, O3 Z+ X" e% q( [4 j% A- C
初始化无线电时会调用以下HAL SubGHz API: 8 V8 U/ @1 `% B- t8 z
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源:
    1 ?2 N$ d3 V8 R4 H

$ R# D! z* K: M( y( \    - PWR配置:启用sub-GHz无线电外设的唤醒信号。
  K7 @6 y( F; s" D' W9 S- i    - NVIC配置: & a4 t3 N0 @* {2 T( _. S% j$ F
      ☆ 启用NVIC无线电IRQ中断。 9 Y* q% e1 _  L  p# \/ e3 r
      ☆ 配置sub-GHz无线电中断优先级。
7 m% k4 F% s% I在stm32wlxx_it.c 文件中会调用以下HAL无线电中断: ) d4 X& k$ ^1 d- s) i" b
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    * T* P& U' p( ?( p  H+ i

' A9 Y* N3 }; Y3.2  SubGHz数据传输 3 P+ ^5 O% w2 s. N; h" R2 t0 n
Set 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。 5 L9 a0 X; g( x# A  L6 a  O
Get Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。 + r' Z( R  N3 L% m4 {+ @: @
读/写寄存器访问操作在轮询模式下使用以下API执行: ; l: p& q" _7 y' |( `
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    % z6 q$ }4 S1 @& i. ^
/ B2 L/ |2 H8 B* m. y7 a6 R
4 BSP STM32WL板 % s- M5 D  h' z) ?; f
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC1 [7 N% X7 m" f3 X7 W2 h& X( ]  j
设置。
; b& R, h, `2 F/ e; V/ `8 u: e注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: 7 U0 t  c2 {; T, h( P# G$ Y) M
3 \5 i. O, v" j/ T5 @+ U: i
  • 第一个选项) ^; \3 ]! P5 g( Z) K6 x* h
    - 复制BSP/STM32WLxx_Nucleo/目录。 * ?5 J1 d7 y* [
    - 使用以下信息重命名并更新用户BSP API: 6 y- K" q8 O7 g4 l3 N6 R
      ☆ 用户射频开关配置和控制(如引脚控制或端口编号) 7 ?  g- n+ D$ m6 `$ Y$ q0 ^. H
      ☆ 用户TCXO配置
- @6 f. ~+ {* ?' p2 p% X% _% R  y      ☆ 用户DC/DC配置
9 _  W0 ], T& R4 y6 P' n" d/ Y! y8 {    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。 $ W7 F* v& x- b8 R, e
  • 第二个选项
    % Q, [# j. `/ f' \  v  X
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
$ [+ _9 A% e: ?$ V
# H3 W5 ~- S  p* L4.1 频段
) E4 L, l2 l& s" k. fSTM32WL系列上可以使用两种Nucleo板:
7 B0 h. F1 D. Z2 k  E% l
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率
    0 W; F9 d- l, j# Y* l6 N2 Y
, Z  J2 l, M+ W
如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 ) A1 E, Y! M) z" p- W# U) z
固件不会检查其所在的板的频段。 $ n. l* U/ G0 A7 G, C2 C

: y! ?- U8 ]6 R2 b5 f4.2 RF开关 : K1 j( L" _# h
STM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
. j: @5 m: }9 f" m- T
  • 高功率输出
  • 低功率输出
  • 接收 , ?7 o: r% {$ R4 y* k: _, ]) g2 a

6 d2 Q: n: \6 P5 w+ e2 h
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。
2 w2 f3 m7 i- t; |
表4. RF状态与开关配置
15.png
7 T& ?; a7 i$ A# P+ b1 t
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 2)
收藏 评论0 发布时间:2025-2-10 09:56

举报

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