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