1. 课程导入与开发环境搭建
Nordic nRF 系列多协议无线 SoC(如 nRF52840、nRF5340)在同一个芯片上集成了 2.4 GHz 射频前端、多协议无线协议栈、Cortex-M 应用内核以及丰富的外设。要真正把这块芯片用起来,第一步不是写业务代码,而是理解它的整体架构,并把编译、烧录、调试这条工具链打通。本章先建立架构认知,再完成 nRF Connect SDK 与工具链的安装,最后编译并烧录第一个无线工程,让开发板真正"跑起来"。
一、nRF 多协议无线设备架构总览
以 nRF52840 为例,芯片内部可以粗略划分为四层:射频与协议栈层、应用内核层、外设层和电源与时钟层。射频部分工作在 2.4 GHz ISM 频段,支持 Bluetooth Low Energy、Thread、Zigbee、IEEE 802.15.4 以及 Nordic 私有的 Enhanced ShockBurst 等协议。多协议的关键在于:同一时刻射频前端通常只服务一个协议,但通过分时调度(如 BLE 与 Thread 共存)或协议切换,可以在不同时间片运行不同协议栈。
应用内核是 Cortex-M4F(nRF52840)或 Cortex-M33(nRF5340),负责运行应用逻辑。协议栈一般以预编译库或源码形式提供,通过 SoftDevice 或 Zephyr 控制器与射频交互。外设层包括 GPIO、UART、SPI、I2C、PWM、ADC、定时器、RTC、USB、QSPI 等,它们通过总线与内核连接。电源与时钟层提供 LDO/DCDC、高频晶振和低频晶振,直接影响射频精度与功耗。
理解这张架构图的意义在于:后续配置蓝牙广播、连接参数、Thread 网络或低功耗模式时,你都能明确自己操作的是哪一层。例如修改广播间隔属于协议栈配置,调整 GPIO 属于外设层,而选择 DCDC 模式则属于电源层。
二、nRF Connect SDK 与工具链安装
Nordic 当前的官方开发框架是 nRF Connect SDK(简称 NCS),它基于 Zephyr RTOS 构建,集成了协议栈、驱动、示例和构建系统。安装方式主要有两种:一是通过 nRF Connect for VS Code 扩展自动安装工具链;二是使用命令行工具 nrfutil 手动安装。对初学者推荐第一种,因为扩展会自动处理工具链版本、SDK 版本和 Python 依赖。
安装前需要确认系统环境:Windows 10/11、macOS 或 Ubuntu 20.04 以上;至少 10 GB 可用磁盘空间;稳定的网络连接。安装步骤如下:
- 安装 VS Code,并在扩展市场搜索 "nRF Connect for VS Code",安装官方扩展包。
- 打开 VS Code,点击左侧 nRF Connect 图标,选择 "Install Toolchain"。
- 选择 NCS 版本,例如 v2.6.0,工具链会自动下载并安装到默认目录。
- 安装完成后,在 nRF Connect 面板中可以看到 "Toolchain Manager" 和 "SDK Manager"。
如果使用命令行,可以执行以下命令安装 nrfutil 并安装工具链:
# 安装 nrfutil(以 Windows 为例,下载后加入 PATH)
nrfutil install toolchain-manager
nrfutil toolchain-manager install --ncs-version v2.6.0
nrfutil toolchain-manager launch --shell
安装完成后,建议验证工具链是否可用:
west --version
arm-zephyr-eabi-gcc --version
nrfjprog --version
如果 west 和 arm-zephyr-eabi-gcc 都能输出版本号,说明编译工具链就绪;nrfjprog 能识别版本,说明烧录工具就绪。此时还需要安装 J-Link 驱动,nRF52840 DK 板载调试器依赖它。
C:\ncs,避免构建时出现路径解析问题。三、第一个 nRF 无线工程编译与烧录
NCS 自带大量示例,最经典的入门工程是 blinky,但它不涉及无线。为了体现"无线工程",我们选择 zephyr/samples/bluetooth/beacon 或 nrf/samples/bluetooth/peripheral_uart。这里以 peripheral_uart 为例:它会让开发板作为 BLE 外设,广播设备名,并支持通过 UART 收发数据。
在 VS Code 中操作:打开 nRF Connect 面板,点击 "Create a new application",选择 "Copy a sample",搜索 peripheral_uart,选择 NCS 版本和开发板 nrf52840dk_nrf52840,指定工程目录后创建。创建完成后,在 "Applications" 面板中点击 "Add build configuration",选择 build 目录和板型,点击 "Build"。
如果使用命令行,流程如下:
west build -b nrf52840dk_nrf52840 nrf/samples/bluetooth/peripheral_uart
west flash
编译成功后,终端会输出类似 Memory region Used Size Region Size %age Used 的统计信息。烧录时,J-Link 会连接开发板并写入固件。烧录完成后,开发板复位运行,串口会打印广播启动日志,例如:
Bluetooth initialized
Advertising as Nordic_UART
Connected
此时用手机上的 nRF Connect 应用扫描,可以看到名为 Nordic_UART 的设备。连接后,手机端可以发送数据,开发板通过 UART 转发到电脑串口;电脑串口发送的数据也会通过 BLE 通知回手机。这个闭环验证了:工具链可用、烧录正常、BLE 协议栈工作、UART 外设工作。
west flash 报错找不到板子,先检查 USB 线是否连接在 DK 板的 "DEBUG" 口,而不是 "nRF USB" 口;再检查 J-Link 驱动是否安装,设备管理器是否识别到 J-Link 设备。