1. 课程导入与开发环境搭建
Nordic nRF52 与 nRF53 系列是当前低功耗蓝牙(BLE)传感终端最常用的 SoC 平台之一。nRF52 系列以 nRF52832、nRF52840 为代表,采用 Cortex-M4F 内核,主频 64 MHz,片上集成 2.4 GHz 射频与 BLE 协议栈;nRF53 系列以 nRF5340 为代表,采用双核架构——应用核 Cortex-M33 负责业务逻辑,网络核 Cortex-M33 独立运行蓝牙协议栈,两者通过 IPC 通信。对于入门与大多数传感终端项目,nRF52840 开发板(如 nRF52840 DK)是最稳妥的起点:Flash 1 MB、RAM 256 KB,支持 BLE 5.0、Thread、Zigbee 与 USB,外设资源充足,社区资料最丰富。若项目需要更强的安全隔离、双核并行处理或蓝牙 5.2 的 LE Audio 能力,再考虑 nRF5340 DK。
开发环境的核心是 nRF Connect SDK(NCS)。NCS 并非一个独立 IDE,而是基于 Zephyr RTOS 的完整 SDK,包含 Zephyr 内核、Nordic 驱动、蓝牙协议栈、示例工程与构建系统。它与 Zephyr 的关系可以这样理解:Zephyr 提供内核、设备模型、Kconfig 与 CMake 构建框架;NCS 在其上叠加 Nordic 的 HAL、SoftDevice Controller、nRF Connect 专用库与工具链配置。因此安装 NCS 实际上就是安装一套“Zephyr + Nordic 扩展”的完整工具链。
安装 NCS 推荐使用 nRF Connect for VS Code 插件中的“Toolchain Manager”一键安装。它会自动下载并配置 west、CMake、Ninja、GNU Arm GCC 以及 nrfjprog 等工具,并管理多个 SDK 版本。安装完成后,在 VS Code 中打开 nRF Connect 侧边栏,选择“Open Terminal”进入已激活工具链的终端,此时 west 命令才可用。若手动安装,则需依次安装 Python 3.8+、west、CMake、Ninja、GNU Arm Embedded Toolchain 与 nRF Command Line Tools,并设置环境变量。
第一个工程建议从 NCS 自带的 samples/basic/blinky 开始。该示例位于 SDK 的 zephyr/samples/basic/blinky 目录下,功能是让开发板上的 LED1 以固定周期闪烁。在 VS Code 中通过 nRF Connect 插件的“Create a new application”选择该示例,或直接在终端中执行:
west build -b nrf52840dk_nrf52840 zephyr/samples/basic/blinky
west flash
其中 -b 指定板级目标,nrf52840dk_nrf52840 表示 nRF52840 DK 上的 nRF52840 芯片。构建成功后会在 build/zephyr/ 下生成 zephyr.hex 与 zephyr.elf。烧录时 west 会调用 nrfjprog 通过 J-Link 将固件写入芯片 Flash。烧录完成后开发板自动复位,LED1 开始以约 1 秒周期闪烁,说明工具链、编译、烧录链路全部打通。
nrf5340dk_nrf5340_cpuapp);二是 USB 线是否连接在 DK 的“DEBUG”口而非“nRF USB”口;三是 west flash 是否报“No board connected”,此时需确认 J-Link 驱动已安装且设备管理器中出现 JLink 设备。
VS Code 插件配置方面,安装 nRF Connect 扩展后,需在设置中指定工具链路径与 SDK 路径。插件会自动识别 Toolchain Manager 安装的版本。建议同时安装 C/C++ 扩展以获得代码补全与跳转,安装 Cortex-Debug 扩展用于图形化调试。在 settings.json 中可配置 nrf-connect.toolchain.path 与 nrf-connect.sdk.path,确保插件能找到 west 与 SDK 根目录。
完成 blinky 后,可以尝试修改闪烁周期来验证构建系统是否真正生效。在示例的 main.c 中找到 k_msleep(1000),改为 k_msleep(250),重新执行 west build 与 west flash,观察 LED 闪烁明显加快。这一步看似简单,却完整覆盖了“修改源码 → 重新编译 → 烧录 → 观察结果”的闭环,是后续所有传感终端开发的基础操作模式。
west build + west flash 命令链路。建议将板级目标、SDK 版本、工具链版本记录在工程 README 中,便于后续复现与团队协作。