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 网关 |
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 虽然经典,但迟早要淘汰。
获取方式很简单:
- 去 Nordic 官网注册账号(免费)。
- 下载 nRF Connect for Desktop。
- 在 Toolchain Manager 里安装 NCS v2.6.0。
- 或者直接用
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 差。
配置步骤:
- 安装 VS Code(这个不用教吧)。
- 安装 nRF Connect for VS Code 插件。
- 安装 C/C++ 插件(微软官方那个)。
- 安装 CMake Tools 插件。
- 在插件里配置 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 配置和编译烧录,其实是一条完整的链路。
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,如果能连上,说明驱动没问题。