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

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

[复制链接]
STMCU小助手 发布时间:2025-2-10 09:56
' y, ]7 P7 e; t: p! J% i* r: D: \
本应用笔记将指导用户完成基于STM32WL系列微控制器构建特定LoRa®应用程序所需的所有步骤。 4 f0 Z) K7 q' W8 R3 F
LoRa®是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN®定义了通信和安全协议,此协议会确保与LoRa®网络的互操作性。
6 z8 v6 J$ Z5 F; u" K* E! zSTM32CubeWL MCU软件包中的固件兼容LoRa Alliance®规范协议LoRaWAN®,并具有以下主要特性:
1 u: r' w6 K3 D3 U
  • 可直接集成应用程序
  • 低功耗LoRa®解决方案的简易附加组件
  • CPU负载极低
  • 无延迟要求
  • STM32存储器占用空间小
  • 低功耗定时服务
      b# A' f5 ^) U6 N! W8 j
8 K# w4 R: U8 R) ?
STM32CubeWL MCU软件包的固件基于STM32Cube HAL驱动程序。
9 Y2 F  _# o) u& r0 I. _' B: i; z+ d本文提供了有关带STM32WL55JC的NUCLEO-WL55JC开发板(适于高频段的订购代码为NUCLEO-WL55JC1,适于低频段的订购代码为NUCLEO-WL55JC2)和带STM32WL5M的B-WL5M-SUB1连接扩展板的客户应用程序示例。 $ N$ [8 |7 N6 t) ?9 y5 [! W" W
为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉 STM32 系列微控制器、LoRa®技术,并了解低功耗管理和任务排序等系统服务。0 r. P: s  b1 s
STM32CubeWL在基于Arm® Cortex®-M处理器的STM32WL系列微控制器上运行。 ' K+ O  D1 i1 H9 i
1 e7 Y5 Y) \% D+ n# h
注意: Arm是Arm Limited(或其子公司)在美国和/或其他地区的注册商标。6 B5 j9 m$ a6 N) H% B7 ^* d& m

3 z4 @% A% m4 Z. D( L9 i8 sSTM32CubeWL概述 8 F$ F+ f  }1 j0 _5 s
STM32CubeWL MCU软件包的固件包括以下资源(参见图1): 7 t% `% X$ C  v
板级支持包:
' c  F; R9 I. k
  • STM32WL_Nucleo驱动程序
  • B-WL5M-SUBG1驱动程序 ; N4 @1 I8 z2 x! \

2 X$ J9 @4 {+ i9 k! Y" P- B) l( ^STM32WLxx_HAL_Driver
8 m8 {% a8 {4 u) R. n9 B1 n中间件:
( U- e3 F3 W  a# y- d- LoRaWAN包含:
( k( o; n) S9 s* k5 b
  • LoRaWAN层
  • LoRa实用程序
  • LoRa软件密码引擎
  • LoRa状态机 6 c9 L3 m% k# [$ K' g+ w
  ~# S5 O8 ]" h& m, x" U
- 包含无线电和radio_driver接口的SubGHz_Phy层中间件 , f, i3 G# _6 \0 K
LoRaWAN应用程序:
- g( ]7 ]$ e0 C0 O) S
  • LoRaWAN_AT_Slave(单核及双核)
  • LoRaWAN_End_Node(单核、双核、使用FreeRTOS的单核以及使用FreeRTOS的双核)
    $ f$ s) J+ L2 \# m, {/ a; ]
0 Z1 T% L. e1 X. D8 m* F; ~
SubGHz_Phy应用程序:, a& H( G" A% w" D
  • SubGHz_Phy_PingPong(单核及双核)
  • SubGHz_Phy_Per(单核)
  • SubGHz_Phy_AT_Slave(单核)
  • SubGHz_Phy_LrFhss(单核)
    9 |( j; _8 l" d" L+ B8 ]
) U4 L9 o0 e/ A7 y" Z
另外,此应用程序还提供与以下设备的高效系统集成:
, l% |: I, C# ~3 ^& W
  • 调度器,用于在后台执行任务并在没有活动时进入低功耗模式
  • 定时器服务,为应用提供在RTC上运行的虚拟定时器(在停止和待机模式下)
    ; o- k1 P2 \! D  y; S

9 @: B0 @" ]2 n7 [% P$ W: v若需更多信息,请参见第9节。7 x. v% w# _0 |9 l) N& H% U2 }0 z$ o
13.png
3 SubGHz HAL驱动程序
. T# d2 K) g% p' ^* @2 y7 y本节主要介绍SubGHz HAL(未详述其他HAL功能,如定时器或GPIO)。
( S; r, l6 x& v$ \' |$ g5 H& [SubGHz HAL直接位于sub-GHz无线电外设上方(参见图3)。 $ k: y7 O5 @; ]; Q3 U2 y
SubGHz HAL驱动程序基于简单的一次性面向指令架构(无完整过程)。因此,未定义LL驱动程序。
# t; [* E; `/ H- _此SubGHz HAL驱动程序由以下主要部分组成:
+ a6 A# v3 M) M
  • 句柄、初始化和配置数据结构
  • 初始化API
  • 配置和控制API
  • MSP和事件回调
  • 基于SUBGHZ_SPI的总线I/O操作(固有服务) 9 R% J$ M( s* z& P- u: C8 D( h
$ }% q7 f, S6 Z9 c0 o
由于HAL API主要基于总线服务通过一次性操作发送指令,因此,除了复位/就绪HAL状态外,不使用功能状
$ N) T8 x3 l( q1 R- m态机。
9 o, \- q- }- o, s0 D 1 C7 B5 \$ a# P. b
3.1  SubGHz资源 - W2 ]8 z( C& A# I+ {& i3 E
初始化无线电时会调用以下HAL SubGHz API: ) [  Q5 ~; ?0 ?; T
  • 声明SUBGHZ_HandleTypeDef句柄结构。
  • 通过调用HAL_SUBGHZ_Init(&hUserSubghz) API,初始化sub-GHz无线电外设。
  • 通过实现HAL_SUBGHZ_MspInit() API,初始化SubGHz低级资源:
    . q* e4 T0 u. N5 W% ~# w

, o, F7 J: l: W+ A/ ?) ]6 e( q    - PWR配置:启用sub-GHz无线电外设的唤醒信号。
; [+ Z9 s& p% j& k$ U8 l    - NVIC配置: + S) V$ H. K0 T3 F0 f3 K4 x5 s3 e5 S
      ☆ 启用NVIC无线电IRQ中断。
# l! P* O# O' U1 H1 t      ☆ 配置sub-GHz无线电中断优先级。
+ k- f" b$ F' ?' x8 ~在stm32wlxx_it.c 文件中会调用以下HAL无线电中断:
& x* r: j( T# {- q  _, \/ O
  • SUBGHZ_Radio_IRQHandler中的 HAL_SUBGHZ_IRQHandler。
    2 J' V/ K+ Y: u9 E
' c. Y8 C: |0 g* K# l
3.2  SubGHz数据传输
) X" y! i, k% e0 s; J4 HSet 指令操作在轮询模式下使用HAL_SUBGHZ_ExecSetCmd(); API执行。
' d) ^) x5 v: `' g7 u/ S! aGet Status 操作在轮询模式下使用HAL_SUBGHZ_ExecGetCmd(); API执行。 ! R, B2 P! m1 c, G( D- T
读/写寄存器访问操作在轮询模式下使用以下API执行: $ [/ ]+ d& Q. U3 e+ e  C
  • HAL_SUBGHZ_WriteRegister();
  • HAL_SUBGHZ_ReadRegister();
  • HAL_SUBGHZ_WriteRegisters();
  • HAL_SUBGHZ_ReadRegisters();
  • HAL_SUBGHZ_WriteBuffer();
  • HAL_SUBGHZ_ReadBuffer();
    / Q# ~" f  Z* P. c
: G$ A* M- f  X! M
4 BSP STM32WL板 7 f) H0 o+ x( u+ O* P- ?
本 BSP 驱动程序提供了一系列无线电射频服务管理功能,如射频开关设置和控制、TCXO 设置以及 DC/DC. o( `) D7 F( e: j
设置。 6 P; }/ [- _% I, W+ t! ^7 O0 B
注意: 无线电中间件(SubGHz_Phy)通过radio_board_if.c/h 接口文件连接无线电 BSP。当使用定制用户板时,建议执行一个以下选项: # ~, D$ o( R5 \! W
' b8 n9 Z; H8 _( K
  • 第一个选项9 p3 v  t+ b" _# v/ H0 M
    - 复制BSP/STM32WLxx_Nucleo/目录。 % U8 P+ q/ j. P2 s
    - 使用以下信息重命名并更新用户BSP API:
) l# e1 x( |; ?$ E      ☆ 用户射频开关配置和控制(如引脚控制或端口编号) + [2 A) k$ C' u  L1 u8 ~
      ☆ 用户TCXO配置
; w8 i+ s+ e% o, W5 b      ☆ 用户DC/DC配置 $ K4 T4 n" I* P6 R" H, ~2 P  }
    - 将IDE项目中的STM32WLxx_Nucleo BSP文件替换为用户BSP文件。
0 W" t; W5 }; a$ P( l8 |
  • 第二个选项8 \# i+ N' Z6 v& h, l/ W
      ☆ 禁用Core/Inc/platform.h 中的 USE_BSP_DRIVER,并在 radio_board_if.c中直接实现 BSP功能。
" b; j: L. S2 }
1 I. J1 a" N2 X7 }6 }+ \- D4.1 频段 1 b' V+ P5 w9 ~( |, T2 k
STM32WL系列上可以使用两种Nucleo板:
$ W4 M1 J; [4 Q4 t. b9 |' `
  • NUCLEO-WL55JC1:高频段,适于865 MHz至930 MHz之间的频率
  • NUCLEO-WL55JC2:低频段,适于470 MHz至520 MHz之间的频率
    * z  Z7 _+ c: B5 P) j
# \! a+ W3 \/ d/ V
如果用户试图在低频段板上运行在868 MHz下编译的固件,预计射频性能会非常差。 $ _. M) U* Z0 x9 s) z
固件不会检查其所在的板的频段。 * p! M3 @7 H0 W& P1 h
. G8 K. s3 L4 Y' {; H' X- f, ~
4.2 RF开关
: I0 a! H, W! X  H' zSTM32WL Nucleo板内置一个射频3端口开关(SP3T),使用同一个板即可实现以下模式: ; t3 b/ i/ G, R1 y1 ^* s! V
  • 高功率输出
  • 低功率输出
  • 接收 7 \/ J) e- L% L: j, R0 d9 y

  ]9 s, R2 U- [" U9 ~9 Q
表3. BSP无线电开关
14.png
RF状态与开关配置如下表所示。
0 [5 g3 ?- c+ x, G+ h+ U3 g) @
表4. RF状态与开关配置
15.png

# q$ ^7 P/ b) P% l
产看更多该应用笔记详情,请点击附件下载查看>>
【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序.pdf (2.99 MB, 下载次数: 32)
赞 收藏 评论0 发布时间:2025-2-10 09:56

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版