Laird BL651 – nRF52810

Dieser Beitrag widmet sich um die zumindest mir bereiteten Fallstricke beim Arbeiten mit dem BL651 Modul. Die Informationen sollten sich auch auf die meisten anderen nRF52810 basierenden Module anwenden lassen.

Als erstes sollte man sich das SDK von nRF herunterladen. Dies gibt es in der Sparte `Sparte Software Development Kit` unter: https://www.nordicsemi.com/eng/Products/nRF52810

Das SDK entpackt man sich gemütlich z.B. ins home Verzeichnis. Nun brauchen wir den ARM Compiler, diesen installiert man unter Arch Linux ganz einfach mit Pacman:

sudo pacman -S arm-none-eabi-gcc arm-none-eabi-newlib

Damit man den nRF auch programmieren kann, ich verwende dazu einen J-Link, braucht man noch die nRF tools. Diese kann man sich unter Arch Linux mit yay installieren:

yay -S nrf5x-command-line-tools

Nun fehlt nur noch die Compiler Konfiguration im nRF SDK in der Datei `components/toolchain/gcc/Makefile.posix`:

GNU_INSTALL_ROOT ?= /usr/bin/
GNU_VERSION ?= 8.2.0
GNU_PREFIX ?= arm-none-eabi

Das SDK ist nun im Prinzip ready. Es fehlen jedoch noch die ein oder anderen Konfigurationen in den Examples. Möchte man z.B. das Beacon Example unter `examples/ble_peripheral/ble_app_beacon/pca10040e/s112` nutzen sind folgende Anpassungen notwendig:

Im Makefile müssen folgende Zeilen entfernt werden

CFLAGS += -DDEVELOP_IN_NRF52832
ASMFLAGS += -DDEVELOP_IN_NRF52832

In der sdk_config.h müssen folgende Parameter angepasst werden:

#define NRF_SDH_CLOCK_LF_SRC 0
#define NRF_SDH_CLOCK_LF_RC_CTIV 16
#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2
#define NRF_SDH_CLOCK_LF_ACCURACY 1

Nun ist man nur noch von einem

make flash_softdevice && make flash

entfernt und das Example sollte auf dem nRF laufen 🙂