Skip to content

QN9080DK base board

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.

Pinout

Buttons:

LabelRIOT OS macroMCU PINFunction
SW1BTN1_PINPA24User defined
SW2BTN2_PINPA19User defined
SW3nRESETQN9080 reset

One RGB led, controlled by three GPIOs

LabelRIOT OS macroMCU PIN
redLED_RED_PINPA31
greenLED_GREEN_PINPA25
blueLED_BLUE_PINPA13

SPI Flash

NameMCU Pin
MISOPA05
MOSIPA04
SSELPA03
SCKPA30

USB

NameMCU Pin
D+PA26
D-PA27

I2C / MMA8652FC G-Sensor

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

NameMCU Pin
SCLPA06
SDAPA07

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.

Warning: 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.

Note: 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.

In the application directory, run:

make BOARD=qn9080dk QN9080DK_JLINK=1 flash

Note: 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.