2. nRF Connect SDK与开发环境实战
nRF Connect SDK(简称 NCS)是 Nordic 官方为 nRF52/nRF53/nRF54 与 nRF91 系列提供的统一软件开发套件。它并不是一个“单纯的芯片驱动库”,而是以 Zephyr RTOS 为内核基础、叠加 Nordic 自研协议栈与示例的完整工程体系。理解它的目录结构与构建机制,是后续所有低功耗蓝牙可穿戴开发的前提。
一、NCS 的整体结构
NCS 采用“多仓库(multi-repo)+ west 清单”的组织方式。安装完成后,工作区(west workspace)中会出现若干并列目录,各自承担明确职责:
- zephyr/:Zephyr RTOS 内核、驱动、子系统与构建系统(CMake + Kconfig + devicetree)。
- nrf/:Nordic 专有内容,包括 nRF Connect SDK 的板级定义、蓝牙协议栈控制器、示例应用(samples)、库与文档。
- modules/:第三方模块,如 hal_nordic、mbedtls、mcuboot、cmsis 等。
- tools/:west 命令扩展、构建辅助脚本与调试工具。
- .west/:west 配置与清单仓库,记录各仓库的版本与路径。
其中 nrf/samples 与 zephyr/samples 是最直接的学习入口。可穿戴项目通常从 nrf/samples/bluetooth/peripheral_uart 或 zephyr/samples/bluetooth/peripheral 起步,再逐步裁剪功耗与外设。
二、Zephyr RTOS 基础要点
Zephyr 是 NCS 的实时内核,其核心概念包括:
- 线程(thread):由
K_THREAD_DEFINE静态创建,或k_thread_create动态创建,优先级数值越小越高。 - 同步原语:信号量
k_sem、互斥量k_mutex、消息队列k_msgq、工作队列k_work。 - 设备模型:通过 devicetree 描述硬件,驱动以
DEVICE_DT_GET获取设备对象。 - Kconfig:以
prj.conf打开/关闭功能,例如CONFIG_BT=y。
低功耗可穿戴的关键在于:让 CPU 尽可能进入 k_cpu_idle 或系统低功耗状态,仅由蓝牙事件、定时器或 GPIO 中断唤醒。因此线程设计应避免忙等,优先使用信号量与工作队列。
三、west 工具与构建烧录流程
west 是 NCS 的元构建工具,常用命令如下:
west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.0 ncs
cd ncs
west update
west build -b nrf52840dk_nrf52840 nrf/samples/bluetooth/peripheral_uart
west flash
构建过程实际由 CMake 驱动:west 解析 CMakeLists.txt,读取 prj.conf 与 devicetree overlay,生成 build/zephyr/zephyr.elf 与 zephyr.hex。烧录时 west 调用 nrfjprog 或 J-Link 将 hex 写入芯片。若使用 VS Code 的 nRF Connect 扩展,可在图形界面完成同样流程,但理解命令行有助于排障。
west.yml 中锁定各仓库 revision,避免团队协作时因版本漂移导致构建失败。四、创建第一个低功耗蓝牙可穿戴工程
下面以 nRF52840 DK 为例,创建一个可被手机连接、并广播自定义名称的 BLE 外设工程。步骤与关键参数如下:
- 复制示例:
cp -r nrf/samples/bluetooth/peripheral_uart my_wearable。 - 修改
prj.conf,打开蓝牙与低功耗相关配置:
CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEVICE_NAME="Wearable_Demo"
CONFIG_BT_DIS=y
CONFIG_BT_DIS_MANUF_NAME="Nordic"
CONFIG_BT_DIS_MODEL_NUMBER="nRF52840"
CONFIG_PM=y
CONFIG_PM_DEVICE=y
- 在
main.c中确认广播参数:广播间隔建议 100~500 ms,连接间隔最小 15 ms、最大 30 ms,从机延迟 0,监督超时 4 s。这些参数直接影响功耗与响应速度。 - 构建并烧录:
west build -b nrf52840dk_nrf52840 my_wearable,然后west flash。 - 用手机 nRF Connect App 扫描,应看到名为
Wearable_Demo的设备,连接后可读取 Device Information 服务。
判断工程是否成功,可观察三点:串口日志出现 Bluetooth initialized 与 Advertising started;手机能扫描到设备;连接后 RSSI 稳定在 -40 ~ -70 dBm 之间。若广播未启动,优先检查 CONFIG_BT 是否打开、板级定义是否匹配。
五、构建与烧录流程可视化
下图展示从源码到芯片的完整信号与数据流,包括 west、CMake、Kconfig、devicetree 与烧录工具之间的依赖关系,便于定位构建失败发生在哪一环。
图中左侧四类输入共同决定构建结果:源码提供逻辑,板级定义提供引脚与时钟,Kconfig 决定功能裁剪,west 清单锁定版本。构建产物经 west flash 写入芯片后,通过串口或 RTT 回读日志,形成“配置—构建—烧录—验证”的闭环。掌握这条链路,后续调整广播间隔、连接参数或电源管理配置时,就能快速判断改动生效在哪个环节。