news 2026/9/20 19:32:47

Zephyr 上的 RAK3172 WisDuo LoRa 板级支持:STM32WLE5CC 硬件解析、烧录调试与 hello_world 实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zephyr 上的 RAK3172 WisDuo LoRa 板级支持:STM32WLE5CC 硬件解析、烧录调试与 hello_world 实战
  • 操作系统
  • 嵌入式
  • RTOS
  • 物联网

【免费下载链接】zephyr

Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.

项目地址:https://gitcode.com/GitHub_Trending/ze/zephyr
点击查看免费下载

本篇技术指南围绕 Zephyr RTOS 仓库中 RAK3172 板级定义(boards/rakwireless/rak3172/doc/index.rst)展开,完整梳理该 WisDuo LPWAN 模块的硬件资源、设备树与分区布局、支持的驱动功能,并给出从源码构建、pyOCD 烧录到串口验证hello_world的完整实操流程。读完本文,你将能够在 Zephyr 环境下独立完成 RAK3172 应用的构建、烧录与串口调试,并理解其时钟树、LoRa 射频前端与 MCUboot 分区等底层实现细节。

板级概览:一颗邮票模块承载完整 LoRa 节点

RAK3172 是 RAKwireless 推出的 WisDuo LPWAN 邮票式(stamp)模块,核心是一颗STM32WLE5CC芯片。该板级支持定义位于boards/rakwireless/rak3172/,其compatible字符串为stm32,rak3172_stm32wl(见 rak3172.dts)。从板级 YAML(rak3172.yaml)可以看到官方声明的能力矩阵:

项目数值 / 说明
类型mcu(ARM Cortex 架构)
RAM64 KB
Flash256 KB
支持的驱动counter、gpio、i2c、nvs、spi、uart、watchdog、lora
工具链zephyr、gnuarmemb

模块的硬件特征如下:

  • 主控:STM32WLE5CC,LPWAN 专用单核 Cortex®-M4,主频 48 MHz
  • 存储:256-Kbyte Flash + 64-Kbyte SRAM
  • 射频:LoRa® 调制 RF 收发器
  • 安全:硬件 AES256 加密引擎 + 真随机数生成器(TRNG)
  • 天线:SMA 连接器直连 LoRa 天线
  • IO 接口:UART、I2C、SPI、SWD

评估底板(breakout board)以 RAK3172 邮票模块为核心,将模块引脚扇出到标准的2.54 mm 排针,方便直接访问模块全部引脚,也便于快速评估模块各项能力。板卡引脚分布如下图所示:

从板级源码角度看,RAK3172 有两块 LED 指示灯定义于 rak3172.dts:绿色 LED(GPIOA0)与蓝色 LED(GPIOA1),并已通过aliasesled0指向绿色 LED,应用中可直接使用标准 LED API 操作。

设备树剖析:时钟树、串口与外围接口

板级设备树文件 rak3172.dts 及其公共定义 dts/arm/rakwireless/rak3172.dtsi 共同描述了整块板卡的硬件拓扑,下面逐层拆解。

时钟树:48 MHz 系统主频

系统时钟由 PLL 从HSE 32 MHz晶振倍频得到。在公共 dtsi 中,clk_hseclk_lse均被使能,LSE 频率固定为 32768 Hz,用于驱动 RTC 与低功耗定时器:

  • &pll配置为div-m = 1mul-n = 6div-r = 4div-q = 4,以 HSE 为时钟源
  • &rcc将系统时钟设定为DT_FREQ_M(48),即 48 MHz
  • lptim1被选为 Zephyr 系统定时器(zephyr,system-timer),时钟源来自 LSE,适合低功耗场景
  • rtc同样以 LSE 为时钟源并处于okay状态

串口:usart1 作默认控制台

chosen节点将zephyr,consolezephyr,shell-uart均指向usart1(PB6/PB7),其波特率默认配置为 115200。usart2(PA2/PA3)同样以 115200 使能,可作为扩展串口使用。

其他外围接口

  • I2C2:SCL=PA12、SDA=PA11,时钟频率配置为I2C_BITRATE_FAST(400 kHz)
  • SPI1:NSS=PA4、SCK=PA5、MISO=PA6、MOSI=PA7
  • 看门狗iwdg独立看门狗已使能,并经aliases暴露为watchdog0
  • 安全外设aes(AES256 硬件加密)与rng(真随机数发生器)均处于okay状态

LoRa 射频前端

LoRa 收发器挂载于subghzspi总线上,公共 dtsi 中定义了射频前端控制引脚与发射功率参数:

  • tx-enable-gpios:PC13(FE_CTRL1)
  • rx-enable-gpios:PB8(FE_CTRL2)
  • power-amplifier-output = "rfo-hp"rfo-hp-max-power = <22>(最大 22 dBm 发射功率)

射频驱动实现在 drivers/lora/native/sx126x/(含 STM32WL 专用 HAL sx126x_hal_stm32wl.c),此外也提供了基于 LoRaMAC-node 的 drivers/lora/loramac-node/sx126x.c 实现可供参考。

Flash 分区:面向 MCUboot 的布局

flash0定义了四段分区(rak3172.dts),256 KB Flash 的分配如下:

分区起始地址大小用途
boot_partition0x0000000032 KBmcuboot(只读)
slot0_partition0x00008000108 KBimage-0(主镜像槽)
slot1_partition0x00023000108 KBimage-1(升级镜像槽)
storage_partition0x0003e0008 KB存储分区(NVS 等)

chosenzephyr,code-partition指向slot0_partition,说明该板默认采用 MCUboot 双槽 OTA 升级方案,应用镜像烧写至 slot0。

支持的驱动功能

借助板级 YAML 与设备树,RAK3172 在 Zephyr 中支持以下子系统:

  • uart:usart1/usart2,115200 默认波特率,usart1 同时承担控制台与 shell 角色
  • gpio:全部引脚可访问,含两路板载 LED
  • i2c:I2C2 快速模式 400 kHz
  • spi:SPI1 四线全功能
  • counter:lptim1 低功耗定时器同时兼任系统定时器
  • watchdog:iwdg 独立看门狗
  • nvs:基于 storage 分区的非易失存储
  • lora:sub-ghz 射频收发(rfo-hp,最大 22 dBm)

默认 defconfig(rak3172_defconfig)已开启CONFIG_SERIALCONFIG_GPIOCONFIG_CLOCK_CONTROLCONFIG_CONSOLECONFIG_UART_CONSOLE,并启用CONFIG_ARM_MPUCONFIG_HW_STACK_PROTECTION以提供内存保护与硬件栈保护。

烧录与调试:SWD 探针 + pyOCD

RAK3172 没有板载调试器,需要通过外部调试探针连接SWD 引脚进行烧录与调试。Zephyr 侧已在 board.cmake 中预配置好三套烧录工具参数:

  • pyOCD:目标芯片stm32wle5ccux,并附加cmsis_dap.limit_packets=1以规避部分 CMSIS-DAP 探针的传输限制
  • J-Link:设备名STM32WLE5CC,速率 4000 kHz,烧录后自动复位
  • STM32CubeProgrammer:SWD 端口、硬件复位模式

使用 pyOCD 烧录前,需要先安装 STM32WL 的器件支持包(该芯片不在 pyOCD 默认器件库内):

$ pyocd pack --update $ pyocd pack --install stm32wl

构建并烧录 hello_world

hello_world示例演示完整流程。首先进入 Zephyr 环境,构建并烧录:

$ west build -b rak3172 samples/hello_world $ west flash

west flash会根据board.cmake中配置的 runner 自动调用 pyOCD 完成烧录;若使用 J-Link 或 STM32CubeProgrammer,也可显式指定:

$ west flash -r jlink $ west flash -r stm32cubeprogrammer

烧录完成后,用串口终端连接开发板。默认情况下usart1通过板载 USB 转 TTL 转换器暴露给主机,串口参数如下:

  • 波特率:115200
  • 数据位:8
  • 校验位:None
  • 停止位:1

连接串口后应看到如下输出:

Hello World! rak3172/stm32wle5xx

其中rak3172/stm32wle5xx表明当前运行的是 RAK3172 板级目标(SoC 为 STM32WLE5 系列),至此应用已在目标板上成功运行。

小结

RAK3172 是 Zephyr 生态中一个开箱即用的 LoRa 节点参考平台:设备树层面已完整覆盖 48 MHz 时钟树、usart1 控制台、I2C/SPI、看门狗、AES/RNG 与 rfo-hp 射频前端;分区布局面向 MCUboot 双槽 OTA;烧录链路同时支持 pyOCD、J-Link 与 STM32CubeProgrammer。开发者只需west build -b rak3172即可将任意 Zephyr 应用(含 LoRa 相关 sample)快速部署到该模块上进行评估与产品原型验证。

  • 操作系统
  • 嵌入式
  • RTOS
  • 物联网

【免费下载链接】zephyr

Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.

项目地址:https://gitcode.com/GitHub_Trending/ze/zephyr
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 19:32:44

LLVM项目解析:从编译器架构到优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 19:29:19

嵌入式人工智能:传感器原生AI落地四步实操法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 19:29:11

医药物流开题报告:GSP合规驱动的系统架构与参数设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 19:29:06

股票入门知识大全:从交易规则到风控体系的系统攻略

简介&#xff1a;股票入门知识大全PDF电子书&#xff0c;是一份面向零基础投资者的股市入门资料&#xff0c;重点解决股票概念混淆、市场规则不清、术语难懂等问题。内容从股票基础概念讲起&#xff0c;系统区分A股、B股、H股、N股、S股等不同股票类型&#xff0c;并介绍股票市…

作者头像 李华
网站建设 2026/9/20 19:27:12

AutoCut:用文本编辑器剪视频,三步从原始录像到成片

AutoCut&#xff1a;用文本编辑器剪视频&#xff0c;三步从原始录像到成片 【免费下载链接】autocut 用文本编辑器剪视频 项目地址: https://gitcode.com/GitHub_Trending/au/autocut AutoCut 是一个本地运行的命令行视频剪辑工具&#xff1a;它先把你的视频转成带时间戳…

作者头像 李华