持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情
本文介绍nRF52实践系列文章之环境搭建。
前言
笔者购买了一块 nrf52832 的板子,使用该板子对 BLE 协议进行研究。本文为 nRF52实践系列第一篇,主要介绍环境的搭建及编译烧写的过程。
概述
nRF52有2套SDK,分别是nRF5 SDK和NCS(nRF Connect SDK 的缩写)。
开发环境分3个层面:
-
编辑
IDE或任意编辑器即可,如NCS还支持 VS Code 开发。
-
编译
在不同的IDE中编译。gcc使用Makefile编译。
-
烧录
用 J-Link 烧录,在 Keil 中可直接下载烧录(设置好地址),在 NRFgo Studio、NCS 工具的 programmer也可下载。
整体看可用 Keil、IAR、SES开发环境进行编码编译,再用 NRFgo Studio 烧录。
当前使用:vscode写代码,Keil 编译,烧录。
nRF5 SDK
SDK 下载地址为:www.nordicsemi.com/Products/De… 。SDK最新的是 17.1.0,本文即使用此版本,解压后得到目录为nRF5_SDK_17.0.2_d674dde
。注意,不同版本的SDK,keil 使用的组件版本不同,部分接口不同,不能兼容。
Keil
Keil 总体安装步骤如下:
直接安装 ARM 版本的 keil,找到SDK的示例工程文件,双击打开,会提示缺少包,再下载对应版本,安装之。完成。
下面分步介绍。
安装 Keil ARM版本
直接安装即可,注意是 ARM 版本(不能用 C51 版本)。
安装软件包
由于不同的 SDK 依赖的软件包版本不同,所以需先打开SDK的例程观察版本号,以 blinky 为例,其目录为:nRF5_SDK_17.1.0_ddde560\examples\peripheral\blinky\pca10040\blank\arm5_no_packs。 双击工程文件,Keil 提示缺失的软件包及版本(也可以直接在uvprojx文件中查看)。本文提示如下。
Device family pack
Device family pack 下载地址为:www.nordicsemi.com/Products/De…
使用版本如下:
下载文件名称:nordicsemiconductor.nrf_devicefamilypack.8.40.3.pack
ARM CMSIS 5
Keil 中默认4.5,但所需版本5.6.0。5系列下载:github.com/ARM-softwar…。
注:4系列下载为:github.com/ARM-softwar…。之前的SDK是4版本。
下载的文件名为:ARM.CMSIS.5.6.0.pack、nordicsemiconductor.nrf_devicefamilypacknordiclicense.8.40.3.pack,分别双击安装之。
安装后, Keil 中的 Pack Installer 界面如下:
烧写工具nRFgo Studio
下载地址:www.nordicsemi.com/Products/De…
选择“Windows x86 64”版本,文件:nrfgostudiowin641212installer.msi
提示安装各种驱动和工具(J-Link、Command Line Tool),安装之。注意,这些配套的工具会有对应的版本,最新的不一定合适。
nRF Connect SDK
此为新的方式,笔者暂未深入使用,此时仅记录当时的操作。
下载地址:www.nordicsemi.com/Products/De…
版本3.10.0。
PC端
双击nrfconnect-setup-3.10.0.exe
安装。过程提示安装J-Link,安装之。
如无法下载json文件,提示:
到 github.com/NordicSemic… 找到apps.json
,将内容拷贝到C:\Users\Administrator.nrfconnect-apps\apps.json
文件。
更新后界面:
选择需要的工具,点击“Install”,即可安装。
本文安装:Programmer、Toolchain Manager。
打开 Toolchain Manager 。安装最新的SDK。
提示确认下载目录,本文选择非C盘。
等待下载完成。界面右下角可显示下载日志。
手机端
在应用市场可下载,但无法访问。使用 github 仓库。
版本:nRF.Connect.4.25.0。APP截图如下:
注:经实践,使用 APP 可以配合从机例程做测试,桌面版连接不了(应该是环境问题)。
例程
本节以官方SDK的例程演示编译烧写看日志过程。
注:经测试,笔者从某宝上购买的一板开发板,可直接使用官方的SDK例程编译烧写运行)。
例程说明
以blinky工程为例。
工程目录: examples\ble_peripheral\ble_app_blinky
,主文件:main.c。
nrf52832的keil 工程目录:\pca10040\s132\arm5_no_packs
,配置文件:pca10040\s132\config\sdk_config.h
。
双击ble_app_blinky_pca10040_s132.uvprojx
打开工程。
默认使用串口输出日志(NRF_LOG_BACKEND_UART_ENABLED宏为1),如需使用 RTT 输出日志,在sdk_config.h中设置 NRF_LOG_BACKEND_RTT_ENABLED 为1。
编译
按 F7 编译。
在_build
目录下生成可烧写文件,其实真正烧写的为nrf52832_xxaa.hex
,在 keil 环境中下载所用的是nrf52832_xxaa.axf
文件。需要注意的是,上图第一个红框为编译目标,还包含有flash_s132_nrf52_7.2.0_softdevice
,不过笔者未试过在 Keil 中使用。
烧写
烧写使用 JTAG 接口,板子上已经有对应的接口,PC 端为 USB 口。
如果是纯单机程序,可烧写到0地址,如果带BLE协议栈,则必要先烧写 SoftDevice,再烧写应用程序。SoftDevice只烧写一次即可,其烧写文件为components\softdevice\s132\hex\s132_nrf52_7.2.0_softdevice.hex
。
打开nRFgo Studio
软件,连接板子,稍等,点击左侧NRF5x Programming
,出现下图界面。可选SoftDevice或Application类型烧写。
观察日志
安装 J-Link 时自动安装 RTT Viewer。打开,在初始化界面中选项目标设备。
注:图为显示日志后,再打开连接窗口。
板子连接J-Link接口后,会自动上电,初始化时的日志,此时应该已经打印了。但用RTT连接后,也能显示,估计是有缓存。
需要说明的是,在日常调试阶段,一般已经烧写了 SoftDevice,且各项参数已经配置好,在连接 JTAG 线时, 在 Keil 中按 F7 编译,再按 F8 烧写即可。笔者就是使用此方式,改代码,编译烧写验证,比较快速。