Nordic nRF52840 DK pinout
Nordic's official development kit for the nRF52840 Bluetooth chip, with a built-in J-Link debugger, 4 buttons, 4 LEDs and Arduino-style headers. Pins run at 3.0 V and are not 5 V tolerant.
The real app with a simulated Nordic nRF52840 DK, running in your browser. No install, nothing to plug in.
At a glance
- Chip
- nRF52840-QIAA (nRF52840)
- Processor
- Arm Cortex-M4F at 64 MHz, 256 KB RAM, 1 MB flash, Bluetooth LE, Thread/Zigbee (802.15.4), NFC, native USB
- Logic level
- 3.3 V. Not 5 V tolerant unless marked below.
- Flashing tool
- nrfjprog (J-Link)
- Arduino board (FQBN)
- adafruit:nrf52:pca10056
- Live pin view in BoardPilot
- Yes (diagnostic agent available)
Pins to avoid or use with care
Flash memory: P0.17, P0.19, P0.21, P0.23, P0.20, P0.22
Wired to the flash memory. Never use them.
USB serial: P0.08, P0.06
Used for uploading and the serial monitor. Anything connected here can break uploads.
Used on the board: P0.10, P0.09, P0.08, P0.07, P0.06, P0.05, P0.01, P0.00, P0.11, P0.17, P0.19, P0.21, P0.23, P0.25, P0.12, P0.18, P0.20, P0.22, P0.24, P1.00
Already connected to something on the board (see the notes in the table).
Good pins for LEDs, buttons and signals
P1.03, P1.04, P1.05, P1.06, P1.10, P1.11, P1.07, P1.08
Default pins in Arduino
- I2C
- SDA = P0.26, SCL = P0.27. Only these pins work with the Wire library defaults. The nRF52840 I2C (TWIM) block can use almost any pin, but the Arduino core's Wire is fixed to P0.26 (SDA) and P0.27 (SCL), the Arduino SDA/SCL sockets.
- SPI
- MOSI = P1.13, MISO = P1.14, SCK = P1.15, CS = P1.12.
- Analog inputs
- P0.03 (A0), P0.04, P0.28, P0.29, P0.30, P0.31 (0–3.6 V)
How to flash it
Plug USB into the port on the short edge (interface MCU, J2) and set the power switch to ON; before the first Arduino sketch, burn the Adafruit bootloader and SoftDevice once.
All 57 pins
| Pin | GPIO | Chip pin | Functions | Notes |
|---|---|---|---|---|
| P0.27 | 27 | P0.27 | GPIO, I2C_SCL (default) | Arduino SCL (I2C clock). The DK connects I2C pull-up resistors to this line when a shield is detected (SB33). |
| P0.26 | 26 | P0.26 | GPIO, I2C_SDA (default) | Arduino SDA (I2C data). The DK connects I2C pull-up resistors to this line when a shield is detected (SB33). |
| P0.02 | 2 | P0.02 | GPIO, AIN0, AREF | Arduino AREF position, wired to P0.02 (analog input AIN0). |
| GND | — | GND | ||
| P1.15 | 47 | P1.15 | GPIO, SPI_SCK (default) | |
| P1.14 | 46 | P1.14 | GPIO, SPI_MISO (default) | |
| P1.13 | 45 | P1.13 | GPIO, SPI_MOSI (default) | |
| P1.12 | 44 | P1.12 | GPIO, SPI_CS (default) | |
| P1.11 | 43 | P1.11 | GPIO | |
| P1.10 | 42 | P1.10 | GPIO | |
| P1.08 | 40 | P1.08 | GPIO | With the TRACE switch (SW7) set to Alt, Button 2 is moved to this pin. |
| P1.07 | 39 | P1.07 | GPIO | With the TRACE switch (SW7) set to Alt, Button 1 is moved to this pin. |
| P1.06 | 38 | P1.06 | GPIO | |
| P1.05 | 37 | P1.05 | GPIO | |
| P1.04 | 36 | P1.04 | GPIO | |
| P1.03 | 35 | P1.03 | GPIO | |
| P1.02 | 34 | P1.02 | GPIO, Serial1_TX | Serial1 TX in the Arduino core. |
| P1.01 | 33 | P1.01 | GPIO, Serial1_RX | Serial1 RX in the Arduino core. |
| P0.10 | 10 | P0.10 | GPIO, NFC2 | NFC antenna pin by default. To use it as a normal pin, set CONFIG_NFCT_PINS_AS_GPIOS in your firmware. |
| P0.09 | 9 | P0.09 | GPIO, NFC1 | NFC antenna pin by default. To use it as a normal pin, set CONFIG_NFCT_PINS_AS_GPIOS in your firmware. |
| P0.08 | 8 | P0.08 | GPIO, UART_RXD, Serial2_RX | Serial RX from the on-board debugger (the USB virtual COM port). Serial2 in the Arduino core. |
| P0.07 | 7 | P0.07 | GPIO, UART_CTS, TRACECLK | Flow-control line (CTS) of the USB virtual COM port. Free when flow control is off, or with switch SW7 set to off. |
| P0.06 | 6 | P0.06 | GPIO, UART_TXD, Serial2_TX | Serial TX to the on-board debugger (the USB virtual COM port). Serial2 in the Arduino core. |
| P0.05 | 5 | P0.05 | GPIO, UART_RTS, AIN3 | Flow-control line (RTS) of the USB virtual COM port. Free when flow control is off, or with switch SW7 set to off. |
| P0.01 | 1 | P0.01 | GPIO, XL2 | Used by the 32.768 kHz crystal. Not connected to this header unless you cut SB1 and short SB3. |
| P0.00 | 0 | P0.00 | GPIO, XL1 | Used by the 32.768 kHz crystal. Not connected to this header unless you cut SB2 and short SB4. |
| VDD | — | VDD | DK supply VDD: 3.0 V by default (fixed 3 V regulator). | |
| VDD | — | IOREF, VDD | Arduino IOREF: tells a shield the logic level, which is VDD (3.0 V by default). | |
| RESET | — | RESET | Not connected by default. Solder bridges SB43-SB46 can link it to the chip reset (P0.18) or the IF BOOT/RESET button. | |
| VDD | — | VDD, 3V3 | Arduino 3.3V position. On this DK it carries VDD, 3.0 V by default. | |
| 5V | — | 5V | 5 V from the DK's boost regulator. Never connect it to an nRF52840 pin. | |
| GND | — | GND | ||
| GND | — | GND | ||
| P0.03 (A0) | 3 | P0.03 | GPIO, AIN1, A0 | |
| P0.04 | 4 | P0.04 | GPIO, AIN2, A1 | With the TRACE switch (SW7) set to Alt, the virtual COM port CTS line is moved to this pin. |
| P0.28 | 28 | P0.28 | GPIO, AIN4, A2 | |
| P0.29 | 29 | P0.29 | GPIO, AIN5, A3 | |
| P0.30 | 30 | P0.30 | GPIO, AIN6, A4 | |
| P0.31 | 31 | P0.31 | GPIO, AIN7, A5 | |
| P0.11 | 11 | P0.11 | GPIO, BUTTON1, TRACEDATA1 | Button 1 on the DK, active low: reads 0 when pressed. Use INPUT_PULLUP (no external pull-up on the board). |
| P0.13 | 13 | P0.13 | GPIO, LED1, LED_BUILTIN | LED 1 (green) on the DK, active low: write 0 to turn it on. Cut SB5 to free the pin. LED_BUILTIN in the Arduino core. |
| P0.15 | 15 | P0.15 | GPIO, LED3 | LED 3 (green) on the DK, active low: write 0 to turn it on. Cut SB7 to free the pin. |
| P0.17 | 17 | P0.17 | GPIO, QSPI_CS | Wired to the on-board 64 Mbit QSPI flash; not connected to this header unless you cut SB13 and short SB23. |
| P0.19 | 19 | P0.19 | GPIO, QSPI_SCK | Wired to the on-board 64 Mbit QSPI flash; not connected to this header unless you cut SB11 and short SB21. |
| P0.21 | 21 | P0.21 | GPIO, QSPI_IO1 | Wired to the on-board 64 Mbit QSPI flash; not connected to this header unless you cut SB14 and short SB24. |
| P0.23 | 23 | P0.23 | GPIO, QSPI_IO3 | Wired to the on-board 64 Mbit QSPI flash; not connected to this header unless you cut SB10 and short SB20. |
| P0.25 | 25 | P0.25 | GPIO, BUTTON4 | Button 4 on the DK, active low: reads 0 when pressed. Use INPUT_PULLUP (no external pull-up on the board). |
| P1.09 | 41 | P1.09 | GPIO, TRACEDATA3 | |
| P0.12 | 12 | P0.12 | GPIO, BUTTON2, TRACEDATA2 | Button 2 on the DK, active low: reads 0 when pressed. Use INPUT_PULLUP (no external pull-up on the board). |
| P0.14 | 14 | P0.14 | GPIO, LED2 | LED 2 (green) on the DK, active low: write 0 to turn it on. Cut SB6 to free the pin. |
| P0.16 | 16 | P0.16 | GPIO, LED4 | LED 4 (green) on the DK, active low: write 0 to turn it on. Cut SB8 to free the pin. |
| P0.18 | 18 | P0.18 | GPIO, nRESET | The chip's reset pin when pin reset is enabled (the IF BOOT/RESET button uses it). Avoid using it as a normal pin. |
| P0.20 | 20 | P0.20 | GPIO, QSPI_IO0 | Wired to the on-board 64 Mbit QSPI flash; not connected to this header unless you cut SB12 and short SB22. |
| P0.22 | 22 | P0.22 | GPIO, QSPI_IO2 | Wired to the on-board 64 Mbit QSPI flash; not connected to this header unless you cut SB15 and short SB25. |
| P0.24 | 24 | P0.24 | GPIO, BUTTON3 | Button 3 on the DK, active low: reads 0 when pressed. Use INPUT_PULLUP (no external pull-up on the board). |
| P1.00 | 32 | P1.00 | GPIO, SWO, TRACEDATA0 | Debug trace output (SWO) to the on-board debugger. Usable as a pin if you do not use trace. |
| GND | — | GND |
Questions
Which pins are I2C on the Nordic nRF52840 DK?
SDA is P0.26 and SCL is P0.27 (the defaults of the Arduino Wire library). Only certain pins support I2C in hardware, so use these unless you know your core allows others.
Which Nordic nRF52840 DK pins should I avoid?
P0.17, P0.19, P0.21, P0.23, P0.20, P0.22 (flash memory); P0.08, P0.06 (USB serial link); P0.10, P0.09, P0.08, P0.07, P0.06, P0.05, P0.01, P0.00, P0.11, P0.17, P0.19, P0.21, P0.23, P0.25, P0.12, P0.18, P0.20, P0.22, P0.24, P1.00 (used on the board).
Is the Nordic nRF52840 DK 5 V tolerant?
No. The pins take at most 3.3 V. Use a level shifter or a voltage divider for 5 V signals.
Which pins can read analog voltage on the Nordic nRF52840 DK?
P0.03 (A0), P0.04, P0.28, P0.29, P0.30, P0.31, from 0 to 3.6 V.
How do I upload code to the Nordic nRF52840 DK?
In the Arduino IDE pick the board adafruit:nrf52:pca10056 (core adafruit:nrf52). Plug USB into the port on the short edge (interface MCU, J2) and set the power switch to ON; before the first Arduino sketch, burn the Adafruit bootloader and SoftDevice once.
Wiring guides for the Nordic nRF52840 DK
Step-by-step wiring, voltage checks and test code for the most used parts:
BME280 BMP280 DHT22 DHT11 HC-SR04 SSD1306 OLED MPU6050 DS18B20 WS2812B LED strip SG90 servo Relay module HC-SR501 PIR LCD 1602 I2C INA219 VL53L0X BH1750 MAX30102 RC522 RFID NEO-6M GPS Capacitive soil moisture sensor ADS1115 TM1637 28BYJ-48 stepper L298N Potentiometer Push button LED Joystick module SD card module AHT20
Learn the basics
Lesson: What is a microcontroller? Lesson: Hardware basics for software developers Lesson: GPIO: pins in and out Pinout GPIO Logic level (HIGH and LOW) JTAG and SWD Debugger
Check your wiring with BoardPilot
BoardPilot shows this board in 3D, flags risky pins as you wire, and flashes it safely with a backup first.
Download BoardPilotSources
- Nordic nRF52840 DK Hardware v1.0.0 User Guide (4440_050, 2020-12-03), 4.6 Connector interface, Figure 21 Arduino signals routing, 4.6.1 Analog pin map, 4.7 Buttons and LEDs, 4.5 External memory, 4.8 32.768 kHz crystal, 3.2 Virtual serial port, 4.11 NFC, 4.13 Solder bridges
- nRF52840 DK hardware files 3.0.3 (PCA10056), 400236_Pick_And_Place.csv (connector and part centres), 400236.GM1 board outline (5.275 x 2.5 in), laminate stack-up, schematic sheet 5 (connectors)
- Nordic nRF52840 Product Specification, Pin assignments (aQFN73): AIN0-AIN7 = P0.02-P0.05, P0.28-P0.31; Absolute maximum ratings (I/O pin voltage max VDD + 0.3 V)
- adafruit/Adafruit_nRF52_Arduino variants/pca10056/variant.h, Pin numbers (port*32+pin), PIN_WIRE_SDA 26 / SCL 27, SPI MOSI 45 / MISO 46 / SCK 47 / SS 44, Serial1 P1.01/P1.02, Serial2 P0.08/P0.06
- adafruit/Adafruit_nRF52_Arduino boards.txt, pca10056 entry: USB 239a:80da / 239a:00da, S140 6.1.1 linker script
- SEGGER J-Link udev rules, quoted on Nordic DevZone, J-Link product ids 0x1015, 0x1051, 0x1061
- Board data file and source notes on GitHub