2. 开发环境搭建:硬件选型、SDK获取、IDE配置与编译烧录

说实话,做 BLE 开发这么多年,我见过太多人一上来就卡在环境搭建这一步。明明芯片选好了,SDK 下错了版本,IDE 配了半天连个 LED 都点不亮。嗯,这章咱们就把这些坑一个个填平。

2.1 硬件选型:nRF52840 vs ESP32

选硬件就像挑工具。你得先想清楚:这项目到底要干什么?

我个人习惯把选型分成两条路:

  • nRF52840:Nordic 的旗舰芯片。BLE 协议栈是它亲生的,稳定、省电、文档全。适合做可穿戴、医疗设备、传感器节点。
  • ESP32:乐鑫的明星产品。便宜、Wi-Fi/BLE 双模、生态热闹。适合做智能家居网关、数据采集器、原型验证。

我在项目中遇到过一件事:有个客户非要拿 ESP32 做超低功耗的体温贴。结果呢?待机电流死活降不下来。后来换了 nRF52840,问题直接解决。说白了,选型不能只看价格,得看场景。

对比项 nRF52840 ESP32
BLE 协议栈 SoftDevice(原生) Bluedroid / NimBLE
峰值功耗 ~5 mA(TX 0 dBm) ~80 mA(Wi-Fi)
待机功耗 ~0.4 µA ~5 µA
Flash / RAM 1 MB / 256 KB 4 MB / 520 KB
典型价格 ~$5 ~$2
适合场景 低功耗 BLE 设备 Wi-Fi + BLE 网关
我的建议: 如果你是第一次做 BLE 项目,选 nRF52840。它的 SDK 和文档最成熟,遇到问题能搜到的资料也多。ESP32 的 BLE 协议栈虽然能用,但坑不少。

2.2 SDK 获取:nRF5 SDK 与 nRF Connect SDK

芯片选好了,接下来就是拿 SDK。这里有个容易搞混的地方:Nordic 现在有两套 SDK。

  • nRF5 SDK:老牌 SDK,基于 Keil / IAR。适合 nRF51、nRF52 系列。代码直接,但已经停止大版本更新。
  • nRF Connect SDK (NCS):新世代 SDK,基于 Zephyr RTOS。支持 nRF53、nRF54、nRF91。功能更强,但学习曲线陡一点。

我建议你直接用 nRF Connect SDK v2.6.0+。为什么?因为 Zephyr 生态越来越成熟,而且 Nordic 已经把新功能全放在 NCS 里了。nRF5 SDK 虽然经典,但迟早要淘汰。

获取方式很简单:

  1. 去 Nordic 官网注册账号(免费)。
  2. 下载 nRF Connect for Desktop。
  3. 在 Toolchain Manager 里安装 NCS v2.6.0。
  4. 或者直接用 west init 命令行拉取。
# 命令行方式(推荐)
mkdir ble_project
cd ble_project
west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.0
west update
注意: 我曾经因为网络问题,west update 卡了半小时。建议用代理或者提前下载好离线包。另外,SDK 版本一定要和 nRF Connect 工具链匹配,否则编译会报一堆莫名其妙的错。

2.3 IDE 配置:VS Code + nRF Connect 插件

编辑器这块,我推荐 VS Code。免费、插件多、社区活跃。配合 nRF Connect 插件,调试体验不比商业 IDE 差。

配置步骤:

  1. 安装 VS Code(这个不用教吧)。
  2. 安装 nRF Connect for VS Code 插件。
  3. 安装 C/C++ 插件(微软官方那个)。
  4. 安装 CMake Tools 插件。
  5. 在插件里配置 NCS 路径(指向你刚才下载的 SDK)。

配置好之后,VS Code 左下角会出现 nRF Connect 的图标。点进去,你可以直接创建项目、选择开发板、配置 Kconfig。嗯,这里要注意:第一次打开项目时,VS Code 会索引整个 SDK,大概要等 3-5 分钟。别急,去泡杯咖啡。

核心配置清单:

  • VS Code 版本:1.85+
  • nRF Connect 插件:2024.1+
  • CMake:3.20+
  • Python:3.8+
  • West:0.14+

2.4 编译与烧录:从代码到硬件

环境搭好了,咱们来跑第一个程序。以 nRF52840 DK 为例,点亮板载 LED。

编译命令:

# 进入项目目录
cd ble_project

# 构建
west build -b nrf52840dk_nrf52840 samples/basic/blinky

# 烧录
west flash

就这么简单?嗯,前提是你把驱动装好了。nRF52840 DK 用的是 J-Link 调试器,需要安装 SEGGER J-Link 驱动。Windows 用户还要装 nRF USB 驱动。

烧录成功后,板子上的 LED 应该开始闪烁。如果没亮,别慌。先检查:

  • USB 线是不是数据线(很多线只能充电)。
  • J-Link 驱动版本对不对。
  • 开发板上的电源开关有没有拨到 ON。

我曾经有一次折腾了半小时,结果发现是 USB 线的问题。从那以后,我桌上永远备着两根确认过的数据线。

2.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你想想看,从硬件选型到 SDK 获取,再到 IDE 配置和编译烧录,其实是一条完整的链路。

开发环境搭建知识体系 开发环境搭建核心流程 硬件选型 nRF52840 / ESP32 SDK 获取 NCS v2.6.0 / west IDE 配置 VS Code + 插件 编译 west build 烧录 west flash 验证 LED 闪烁 / 串口输出 选型 → SDK → IDE → 编译 → 烧录 → 验证,每一步都有坑,但走通了就是坦途

2.6 常见问题与避坑

最后,分享几个我踩过的坑:

  • 驱动问题:Windows 下 nRF52840 DK 的 USB 串口驱动经常装不上。去 Nordic 官网下载 nRF-Command-Line-Tools,一键安装所有驱动。
  • 路径中文:SDK 和项目路径不要有中文。Zephyr 的 CMake 对中文路径支持不好,编译会报错。
  • 版本匹配:NCS 版本、工具链版本、插件版本必须匹配。我见过有人用 NCS v2.5.0 配最新的插件,结果 Kconfig 界面打不开。
  • 烧录失败:如果 west flash 报错,先检查 J-Link 是否识别到设备。命令行输入 JLinkExe,如果能连上,说明驱动没问题。
重要提醒: 开发板第一次上电前,先看原理图!nRF52840 DK 的 VDD 默认是 3.3V,但有些外设模块需要 1.8V。我曾经烧过一个传感器模块,就是因为没看电压跳线。