• 正文
  • 相关推荐
申请入驻 产业图谱

STM32CubeWL 快速搭建 LoRa/LoRaWAN 应用全流程

9小时前
118
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

AN5406 是意法半导体针对STM32WL 系列 Sub-GHz 无线 MCU推出的官方应用笔记,也是基于STM32CubeWL固件包开发 LoRa®/LoRaWAN® 应用的标准落地手册。这份文档完整覆盖物理层调试、协议栈配置、双核通信、低功耗管理、密钥安全等全环节,直接适配 NUCLEO-WL55JC1/2 与 B-WL5M-SUB1 开发板,可快速落地物联网远距离低功耗无线项目。

资料获取:【应用笔记】AN5406 如何使用STM32CubeWL构建LoRa®应用程序

1. 先理清:STM32CubeWL 软件包全貌

STM32CubeWL 是 STM32WL 的专属固件包,全部基于 STM32Cube HAL 驱动,开箱即可对接 LoRa 联盟标准,核心组成一目了然:

  • 驱动层:STM32WLxx_HAL_Driver + CMSIS,负责 Sub-GHz 无线电GPIO、RTC 等硬件控制
  • BSP 板级支持:适配 NUCLEO-WL55JC 与 B-WL5M-SUB1,管理 RF 开关TCXODC/DC
  • 中间件:LoRaWAN 协议栈(含 MAC、密码、区域配置)+ SubGHz_Phy 物理层抽象
  • 应用示例:LoRaWAN_End_Node、LoRaWAN_AT_Slave、SubGHz_Phy_PingPong、SubGHz_Phy_Per、SubGHz_Phy_LrFhss
  • 实用工具:序列发生器、RTC 定时器服务、低功耗管理、系统时间、DMA 跟踪

硬件频段严格区分:

  • NUCLEO-WL55JC1:高频 865–930MHz
  • NUCLEO-WL55JC2:低频 470–520MHz混用固件会导致射频性能急剧下降,开发前务必核对硬件型号。

2. 核心架构:从硬件到应用的四层通路

AN5406 把 LoRa 应用架构拆为四层,逻辑清晰、便于移植:

  1. SubGHz HAL:直接驱动片内 Sub-GHz 无线电,提供初始化、寄存器读写、收发控制 API
  2. BSP:封装射频开关、TCXO、电源配置,自定义硬件只需修改 radio_board_if.c
  3. SubGHz_Phy 中间件:radio.c+radio_driver.c,统一 LoRa/FSK/LR-FHSS 调制接口
  4. LoRaWAN 中间件:MAC 层 + 区域层 + 密码引擎 + LmHandler,屏蔽状态机复杂度
  5. 应用层:基于事件驱动,配合序列发生器进入低功耗,无 RTOS 也能稳定运行

配套实用工具是低功耗关键:

  • 序列发生器:后台任务调度,无活动时自动进低功耗
  • RTC 定时器服务:停止 / 待机模式仍计时,支持虚拟定时器
  • 低功耗管理器:自动切换睡眠 / 停止 2 / 关断模式,停止 2 模式功耗仅 2μA
  • 跟踪工具:DMA 输出日志,不阻塞实时流程

3. LoRaWAN 协议栈:开发最核心的配置环节

STM32CubeWL 兼容LoRaWAN 1.0.3/1.0.4双版本,支持全球主流区域频段(EU868、US915、CN470、AS923 等)STMicroelectronics。

3.1 设备激活二选一

  • OTAA 空中激活:DevEUI、JoinEUI、AppKey、NwkKey,重启重连更安全
  • ABP 个性化激活:DevAddr、NwkSKey、AppSKey,上电即可入网

3.2 设备类别与关键参数

  • 默认Class A,收发时隙最省电;支持 Class B/Class C 按需开启
  • ADR 自适应数据率:默认开启,网络自动优化速率与功率
  • Rx 窗口:Rx1/Rx2 延迟、频率、速率可自定义配置
  • NVM 上下文管理:掉电保存网络状态,重启快速恢复

3.3 LmHandler:简化协议栈交互

LmHandler 是官方封装的高层接口,不用直接操作 MAC 原语,常用 API:

  • LmHandlerInit:初始化状态机
  • LmHandlerConfigure:加载频段、激活方式、功率参数
  • LmHandlerJoin:发起入网
  • LmHandlerSend:发送上行数据
  • 回调 OnJoinRequest/OnTxData/OnRxData:处理入网、收发事件

4. SubGHz_Phy 物理层:点对点与射频测试

不跑 LoRaWAN,只做点对点 LoRa/FSK 通信,直接用 SubGHz_Phy 示例:

  • PingPong:双板互发 Ping/Pong,验证基础链路
  • PER:数据包错误率测试,评估射频质量
  • LrFhss:远距离跳频扩频,抗干扰更强
  • AT_Slave:UART+AT 指令控制,快速做无线 Modem

调制配置集中在 subghz_phy_app.h:

  • LoRa:带宽 125/250/500kHz、扩频因子 SF7–SF12、编码率 4/5~4/8
  • FSK:速率 50kbps、带宽 50kHz、频偏可调
  • 发射功率:-17~22dBm,符合区域法规

5. 工程必改配置

所有参数都有明确宏定义,直接定位文件修改:

  1. 激活方式:lora_app.h 设置 ACTIVATION_TYPE_OTAA/ABP
  2. 区域频段:lorawan_conf.h 启用 REGION_xx,sys_conf.h 设置 ACTIVE_REGION
  3. ADR 与数据率:LORAWAN_ADR_STATE、LORAWAN_DEFAULT_DATA_RATE
  4. 低功耗:sys_conf.h LOW_POWER_DISABLE=0 启用停止 2 模式
  5. 调试跟踪:APP_LOG_ENABLED、VERBOSE_LEVEL 控制日志输出
  6. 上下文:CONTEXT_MANAGEMENT_ENABLED 启用掉电保存

6. 双核管理:CPU1 与 CPU2 的稳定通信

STM32WL5x 为双核架构:

  • CPU1(M4):跑用户应用
  • CPU2(M0+):跑无线协议栈、无线电底层、KMS 安全服务

核间靠IPCC+MBMUX 邮箱通信:

  • 通道分系统、跟踪、KMS、无线电、协议栈五类
  • 消息格式:Cmd (指令)→Resp (响应)、Notif (通知)→Ack (确认)
  • 共享 RAM 存储参数与状态,启动时 CPU1 主导同步 CPU2

双核固件分开烧录:

  • CPU1:0x08000000
  • CPU2:0x08020000

7. KMS 密钥管理:LoRaWAN 安全合规

AN5406 集成KMS 密钥管理服务,符合 PKCS#11 标准,密钥不外露:

  • 静态嵌入式密钥:根密钥烧录在 Flash 安全区,不可修改
  • 动态 NVM 密钥:会话密钥运行时生成,存储在 2KB 双缓冲 Flash 页
  • 支持 AES-CBC/CCM/GCM/CMAC,保障 LoRaWAN 加密安全

最小 NVM 分配 4KB,可存约 14 个动态密钥,满足常规终端频繁入网需求。

8. 系统性能:官方实测数据(NUCLEO-WL55JC1)

  • Flash 占用:LoRaWAN_End_Node 约 63KB,协议栈占比超 50%
  • RAM 占用:约 10.7KB,小容量 MCU 也能跑
  • 功耗:停止 2 模式≈2μA;接收≈7mA;发射≈23mA
  • 实时性:Tx 完成后 Rx1 窗口延迟 1s(±20μs),严格遵循 LoRa 时序

9. 快速上手:5 步跑通示例

  1. 打开 STM32CubeWL 对应工程(LoRaWAN_End_Node)
  2. 修改频段、激活参数、密钥信息
  3. 编译生成 CPU1 与 CPU2 固件
  4. 烧录到 NUCLEO-WL55JC 开发板
  5. 对接 LoRaWAN 网关,查看上行数据与接收下行

AN5406 是STM32WL LoRa 开发的标准答案,从物理层射频调试到 LoRaWAN 协议栈入网,从双核通信到安全密钥,全部给出标准化实现与可直接编译的配置。配合 STM32CubeWL 固件包,不用从零造轮子,就能快速做出远距离、低功耗、合规稳定的 LoRa/LoRaWAN 物联网终端,广泛适用于表计、安防、工业传感、智慧农业等场景。

相关推荐