QN9080DK base board

Support for the QN9080DK base board. More...

Detailed Description

Support for the QN9080DK base board.

General Information

Top View of the QN9080DK V1.2

The QN9080DK is the developer board reference from NXP for the QN908x CPUs. The developer kit comes with two boards: a larger PCB with a QFN "module" including a QN9080DHN soldered onto it, altogether referred as the "base board"; and separately a much smaller USB dongle with another QN9080 cpu. This board module supports the "base board" only, including the definitions of the gpio, buttons and LEDs specific to this board.

This board packs a few peripherals and many GPIOs:

MMA8652FC, a 12-bit accelerometer

The board also features a dedicated programmer hardware implemented using NXP's LPC4322, with its dedicated USB port for connecting to a computer on one end and the SWD port and one UART RX/TX pair connected to the QN9080 on the other end. The LPC4322 also has a fast (50 ksps) ADC ADC122S021 connected to a current sense amplifier to monitor the QN9080 current profile directly on the board.

For more information visit NXP's product description page for the QN9080-DK where you can find the User's Guide.



Label RIOT OS macro MCU PIN Function
SW1 BTN1_PIN PA24 User defined
SW2 BTN2_PIN PA19 User defined
SW3 nRESET QN9080 reset

One RGB led, controlled by three GPIOs

Label RIOT OS macro MCU PIN

SPI Flash

Name MCU Pin


Name MCU Pin
D+ PA26
D- PA27

I2C / MMA8652FC G-Sensor

The jumper JP11 needs to be in place to connect the I2C sensor to the pins. This is the default when freshly unboxed.
Name MCU Pin

The MMA8652 sensor has I2C address 0x1d.

Flashing the Board

The integrated programmer by default comes with an "LPC-LINK2" firmware that provides a CMSIS DAP compatible interface. The programmer can be flashed with a Segger J-Link firmware via DFU, see the LPCSCrypt User Guide for details. It seems that the "LPC-LINK2" firmware the board is shipped with is unreliable. Updating that as also described in the LPCSCrypt User Guide or switching to the J-Link firmware is recommended.

The update software is quite flaky. Do not connect other USB device providing a serial (e.g. CDC ACM) to not confuse it. You may need to adapt the shell script to grep for the correct vid/pid pair using hex values prefixed with 0x when using a dfu-util in a more recent version than the script expects.
The Windows version of the software is at least equally frustrating. So you may was well use the Linux variant and fix the shell script as needed rather than spinning up a Windows VM in the hope to safe pain in the ass.

Using the Internal Programmer with Default Firmware

In the application directory, run:

make BOARD=qn9080dk flash

OpenOCD support for the QN908x flash is as of June 2023 not yet part of any release, but has been merged upstream. It is expected to be included first in the 0.13 release of OpenOCD. Until then, compiling a version from the current git source is the needed.

Using the Internal Programmer with J-Link Firmware

In the application directory, run:

make BOARD=qn9080dk QN9080DK_JLINK=1 flash
Instead of passing QN9080DK_JLINK=1 every time, it can also be exported as environment variable.

Using an External Programmer

By setting the jumper at JP2 to EXT the internal LPC4322 debugger/programmer is disconnect and an external programmer can be connected at header P1 using a standard 10 pin 1.27 mm debug connector.


file  board.h
 Board specific definitions for the QN9080DK base board.
file  gpio_params.h
 Board specific configuration of direct mapped GPIOs.
file  periph_conf.h
 Configuration of CPU peripherals for QN9080DK base board board.