ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

STM32 + nRF7002 + vanilla Zephyr:Wi-Fi 6配套芯片接入实践

2026/8/30 23:49:56 拓冰建站 浏览量
STM32 + nRF7002 + vanilla Zephyr:Wi-Fi 6配套芯片接入实践 最近在折腾低功耗 Wi-Fi 方案把 Nordic 的 nRF7002 这颗 Wi-Fi 6 配套芯片接到了 ST 的 NUCLEO-U5A5ZJ-Q 开发板上全程用 vanilla Zephyr上游主线代码没打 vendor 补丁跑通了扫描、连接和 DHCP 获取地址。整体方案不算复杂但中间涉及设备树、引脚复用、SPI 时序、固件加载这些细节踩了几次坑才稳定下来。这篇博客从硬件接线到软件配置完整记录一遍给想在 STM32 这类非 Nordic 主机上使用 nRF7002 的开发者做个参考。这个方案适合两类人一是在物联网产品里选型想用一颗不带 MCU 的 Wi-Fi 配套芯片搭配自家主控二是想在 Zephyr 主线支持的 STM32 板子上快速跑起 Wi-Fi 协议栈的开发者。如果你用的是 nRF Connect SDK那很多配置是现成的本文的场景是“自己铺路”反而能看得更清楚 Zephyr 的 WiFi 驱动是怎么被设备树串起来的。如果你只是想在 Nordic 自家 SoC 上用 nRF7002也可以参考本文理解整个接口流程再对照 NCS 的差异。1. 方案选型与整体架构1.1 为什么选 nRF7002 作为 Wi-Fi 配套芯片nRF7002 是一颗 companion 芯片也就是说它内部没有运行完整操作系统的 MCU必须挂在另一颗主控芯片下面由主控负责跑网络协议栈和 Wi-Fi 管理。这和市面上常见的 MCUWi-Fi 模组比如 ESP32 这种集成方案思路不太一样nRF7002 不抢主控的计算资源也不限制主控选型你有任意一款支持 SPI/QSPI 的 MCU理论上都能跟它配合。它的优点首先是低功耗因为是纯射频和基带处理待机功耗可以做到很低其次是支持 Wi-Fi 6802.11ax在 2.4GHz 和 5GHz 双频段工作这在实际产品里比只支持 2.4GHz 的老方案有吸引力。再就是与 Zephyr 的集成度高扫描、连接、DHCP 这些事情可以直接复用 Zephyr 的net/wifi管理框架不用自己写一套 AT 指令或私有协议。选择 nRF7002 还有个现实原因Zephyr 主线驱动里已经原生支持它驱动路径在drivers/wifi/nrf7002。这意味着我可以不用依赖 Nordic 的 NCS 分支直接用上游主线代码维护整个工程这对长期项目来说太重要了——NCS 是建立在特定 Zephyr 版本之上的升级周期相对慢而 vanilla Zephyr 的迭代节奏快也能跟社区的修复保持同步。1.2 NUCLEO-U5A5ZJ-Q 在这个组合里的角色NUCLEO-U5A5ZJ-Q 使用的 STM32U5A5ZJ 芯片是 Cortex-M33 内核主频 160MHz带 2MB Flash 和 786KB SRAM。这个配置跑 Zephyr 的 WiFi 协议栈非常舒服因为 802.11 驱动和网络栈很吃 RAM很多低端 MCU 光跑网络缓冲区就已经捉襟见肘了而 STM32U5 的大内存让问题简单很多。板子本身也方便做这种“主控 外挂射频芯片”的调试板载 ST-LINK即插即用还能虚拟出串口用于日志输出SPI、I2C、UART、OctoSPI 外设丰富引脚可以通过 Morpho 排针引出有 Arduino 兼容排针适合快速搭原型整板电源可以走 ST-LINK 的 USB 供电不需要额外电源模块选它还有一个很关键的因素Zephyr 主线已经收录了nucleo_u5a5zj_q这个 board target。也就是说我可以直接用west build -b nucleo_u5a5zj_q编译不用去移植底层板级支持包。如果换一颗 Zephyr 还没支持的 MCU那工作量和难度会陡增因为你需要自己搞定时钟、UART 调试、引脚控制这些基础设备。1.3 vanilla Zephyr 带来的好处与注意事项“vanilla Zephyr” 指的就是上游主线代码库不跟特定的 vendor SDK 绑定。刚开始我也犹豫过nRF7002 毕竟是 Nordic 的芯片Nordic 官方一直在主推 nRF Connect SDK主线 Zephyr 对它的支持会不会不够完整实测下来v3.5 之后的 Zephyr 主线对 nRF7002 的驱动已经足够用了基本功能全部能跑。使用主线的好处有几个代码透明跟踪方便。出现问题可以直接查 Zephyr GitHub 上的 issue 和 PR。更容易和现有 STM32 板级支持组合。NUCLEO-U5A5ZJ-Q 的板级代码在主线里nRF7002 驱动也在主线里两边都是上游没有版本错配问题。方便升级。主线版本刷新时可以用 git 直接跟踪新特性不用等 vendor 重新发版。当然也有注意事项。主线 Zephyr 和 NCS 在 nRF7002 支持上的侧重点不一样NCS 针对 Nordic 自家 SoC 做了很多验证和优化而主线更通用。所以在 NUCLEO 板子上跑需要自己写设备树 overlay、调整 Kconfig 配置这部分就是本文接下来要展开的内容。另外如果你要用的 Zephyr 版本比较老比如 v3.4 之前nRF7002 驱动可能还没有完全合入建议使用 v3.5 或更新的版本。2. 硬件连接与物料准备2.1 物料清单在动手之前先把需要的硬件说清楚。我这里用的是两块现成开发板/模块全程用杜邦线连接NUCLEO-U5A5ZJ-Q 开发板nRF7002 DK 或者一个独立的 nRF7002 模块我用的 nRF7002 DK因为它的排针已经把所有信号引出来了