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

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

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

+ o7 b9 S: H" m本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 + a" I, e* b; H% q9 [  h" _$ p+ p+ B
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
! t1 r( I3 L6 C, GSTM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
% v+ D7 o( K3 \  T! j
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务
    , E9 O3 ?, p6 q8 n9 I6 |9 g

0 Q) J# {& H* i. ^6 O  LSTM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。 / h8 u1 R8 S8 s5 l7 Y
本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。
% s% {9 x/ u% ~+ p, f7 N为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。' ~# H) z! K+ x0 w( u( Y5 P
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 9 U) U* q3 H3 I

3 w# i2 o# @5 F注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。  y& I" L) v* G6 L
( L5 x- m/ Z1 c" C% |: {9 F1 p% B$ N
STM32CubeWL概述
% h$ L' f2 I( s. g) Y0 }. iSTM32CubeWL MCU软件包的固件包括以下资源(参见图1): " S% D' P( R; A# k& G$ {6 S
板级支持包:   _5 W/ v2 m% }( L: U+ c
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序
    " w" j7 t/ m6 J& a$ d" {
$ m' _- g$ x, U9 y  U$ u
STM32WLxx_HAL_Driver 1 o! A# C6 p+ ^, L7 l) v
中间件:
- h8 a7 g7 M% k1 z' B) g& ?- M- LoRaWAN包含: ) r$ O7 I8 f! O$ l7 f# b+ A% D) M9 v
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机 2 w9 `( B3 _4 _% F+ @
5 d8 s3 F8 C* }6 l) Z
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件
2 {8 E  n8 ?* e6 N4 M& tLoRaWAN应用程序:2 [1 L* P5 J2 c' J; q; d
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
    , w. {/ o$ q4 G0 I6 K. `. H; I8 `

, T9 o( H( u  o2 h! sSubGHz_Phy应用程序:" s# m( ?) U; [
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核)
    / V2 F7 f/ c- G
# J6 n" f: Z2 u4 y0 w2 }
另外,此应用程序还提供与以下设备的高效系统集成: + m/ n2 i3 O  y$ w/ H6 f& |% z; l
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    / q$ U  c, f, k2 ~

. f8 J; {& w# }3 w! U若需更多信息,请参见第9节。! @+ T7 b9 D2 x' q3 T2 C" Z" f! w
13.png
3 SubGHz HAL驱动程序
, k" b6 N" b7 k6 H本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。 - |# z* H" p6 v4 f
SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。
6 @) c1 p2 j! |& w" g7 j, b4 rSubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。 % P' `( i& X- @* S' b$ q  \
此SubGHz HAL驱动程序由以下主要部分组成: : a; u* _& l7 O7 q2 o. H
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) + z* B, d4 I3 K3 s+ D6 u6 q$ p+ c, m
1 W2 A, K9 M) a$ [) y& q+ Y, h
由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状/ [  O- w+ R  _! t) H8 X% m
态机。
5 q% `, A% l; X; \0 l ! |5 ^5 d% ]2 g( W6 d. N
3.1  SubGHz资源 8 p1 m9 }4 g0 O( W1 x
初始化无线电时会调用以下HAL SubGHz API:
/ H7 T" f+ M" ?# _$ D3 {
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源: # o( ~  [4 I( m
: ]! T9 W- U' o$ G4 i) h& E
    - PWR配置:启用sub-GHz无线电外设的唤醒信号。 3 w# i) f+ G  ]' D+ @4 t
    - NVIC配置: 5 n. y  ?' c  w% f9 z* g6 t
      ☆ 启用NVIC无线电IRQ中断。 ; k+ w: r* ^& V& S2 C# v
      ☆ 配置sub-GHz无线电中断优先级。 " D2 {# d8 `" r1 u) r$ D
在stm32wlxx_it.c 文件中会调用以下HAL无线电中断: + ?& k" t* @% U' Y' ~1 C
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    + q# L& c' @* _# m
2 x& Y+ L  g6 c5 p
3.2  SubGHz数据传输
4 |" L" x: |! w8 h5 gSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
) v3 X" g& ^# U$ b. q, u/ gGet Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。
: G* I1 ^9 U8 r# `9 @5 h$ s读/写寄存器访问操作在轮询模式下使用以下API执行: & f* J  ^& X( O) u# Y2 ?5 U
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();  L/ F# |0 c4 i8 z* t* T

$ Q6 F+ L1 M: K: {  q7 X4 BSP STM32WL板 9 \- t, g, b# T' p& c
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC
/ s9 S$ X3 C6 P1 p  V0 k, ]设置。
! B4 E& [- u( I. z" G0 E* E6 R注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项:
( i, l, V" _! I8 Z4 D) S4 \0 \
; B. M& p0 Y1 `! M2 f
  • 第一个选项2 ?8 e- g) b# v* A) S  T& i" C$ g3 X
    - 复制BSP/STM32WLxx_Nucleo/目录。 8 G* a9 w# O3 m5 s, n- N9 Q
    - 使用以下信息重命名并更新用户BSP API: # \5 E" ]6 A* b; e8 V2 `1 M
      ☆ 用户射频开关配置和控制(如引脚控制或端口编号)
: N$ W* N1 i( ]( l+ z' f      ☆ 用户TCXO配置 : }0 A+ `2 u" g  r+ `0 j, \
      ☆ 用户DC/DC配置
9 v: F$ `# N* \5 M% x% K    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。
# O# b/ J1 P- ]- `
  • 第二个选项
    ) w0 T+ i  k# _1 i( w: E' k: I
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。 9 X% Y2 N5 S0 m5 k4 q) ^8 `

1 b( ?9 Q1 F4 U6 r4 S4.1 频段 % s: n5 V5 l  L- p7 J1 \; p% I
STM32WL系列上可以使用两种Nucleo板:
$ C+ q7 C. b9 G
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率 ( f; K3 h+ T  r" W9 e

9 H9 d( l5 T& y/ d" d8 B# c如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。
. S2 L: S2 o& h5 B5 G0 w固件不会检查其所在的板的频段。 4 m. i. K4 @5 Z" ?/ f
$ O7 Y2 g7 B* x6 m' D
4.2 RF开关
) Q  [. C0 d. a1 p5 A' ^# lSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式:
  a8 f! Q4 z# v5 `; N( l2 k+ z
  • 高功率输出
  • 低功率输出
  • 接收 . ~; ?4 Y8 F9 x8 I: b6 F6 O1 H

1 ?! {! f* [- e
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。
, @) p; h3 J- f! T1 }& \. P* \
表4. RF状态与开关配置
15.png
6 u% w2 ?+ B: h
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】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 手机版