nRF52840 Advanced Development With the nRF5 SDK
Setting Up the nRF5 SDK
Nordic's nRF5 SDK is a thorough collection of the component drivers, libraries, and tools that are required to build applications for the nRF52840. The files included in this package provide the foundation for most nRF5 projects and products.
Download/Extract the SDK
Download the latest nRF5 SDK from Nordic's nRF5 SDK product page. As of this tutorial's writing, the latest version is 15.2.
The SDK is bundled as a ZIP file. Extract the contents of the ZIP to a desired location on your computer. As a Windows example, we'll use C:\nRF5. Your extracted directory should look something like this:
Configuring Your Toolchain
Once you've extracted the SDK, you'll need to configure it to point to the gcc toolchain you've just installed.
Navigate to the Nordic SDK, then components/toolchain/gcc. In this directory you'll find three Makefiles, one of which will need to be modified to point to your GNU build tools. The file you modify depends on your operating system:
- Windows: Makefile.windows
- Mac and Linux: Makefile.posix
Both of these files look pretty similar. They're both looking for directory locations for the GNU tools installation, version, and prefix. Modify the values of GNU_INSTALL_ROOT
and GNU_VERSION
to match that of the ARM GNU tool directory and versions you just installed.
As an example, here's what I've modified the file to look like on my Windows machine:
GNU_INSTALL_ROOT := C:/Program Files (x86)/GNU Tools ARM Embedded/7 2018-q2-update/bin/
GNU_VERSION := 7.3.1
GNU_PREFIX := arm-none-eabi
To get the version you can use your terminal or CMD to navigate to the "bin" folder of your GNU ARM tools install, and type: arm-none-eabi-gcc --version
.
In the picture above, for example, our version is 7.3.1.
Adding Boards File
The Nordic SDK includes support for a variety of Nordic development boards, but not the SparkFun nRF52840 Mini Breakout. To add support, we'll need to begin by adding a board definition file to the components/boards directory of the nRF5 SDK.
The board-support files include definitions for buttons, LEDs, and common serial pins (UART, SPI, and I2C). Our board definition file can be found in the nRF52840 GitHub Repository. Download that file (click the "Raw" link, and Save As..), or click the link below:
Place that file in the components/boards directory.
You'll also need to modify components/boards/boards.h, adding the following before #elif defined(BOARD_CUSTOM)
:
language:c
#elif defined (BOARD_SPARKFUN_NRF52840_MINI)
#include "sparkfun_nrf52840_mini.h"
This will allow us to add a BOARD_SPARKFUN_NRF52840_MINI
define when compiling example code to pull in sparkfun_nrf52840_mini.h when compiling.