Adafruit Feather nRF52840 Express is a Feather-format board (51 × 23 mm) with the Nordic nRF52840 chip in a Raytac MDBT50Q module: Bluetooth LE, native USB and a Li-Po charger. The pins follow the standard Feather layout, so FeatherWing add-on boards fit it. It can be programmed in Arduino and CircuitPython and has an SWD connector fitted for debugging.
Specifications
- nRF52840 in a Raytac MDBT50Q module: Arm Cortex-M4F 64 MHz, 1 MB flash, 256 kB RAM
- 2 MB external flash (QSPI)
- Bluetooth LE 5, Thread and Zigbee (IEEE 802.15.4), NFC; PCB antenna on the module
- 21 GPIO on the headers (+ AREF), 6 analog inputs (A0–A5)
- UART, I2C, SPI, I2S and PWM on any pins
- micro USB with native USB (UF2 bootloader), NeoPixel, red and blue LEDs, RESET and USER buttons
- 2 × 5 SWD connector (1.27 mm) for debugging
- Li-Po charging at about 200 mA (JST PH connector), battery voltage measurement (A6)
In the Arduino IDE, add the URL https://adafruit.github.io/arduino-board-index/package_adafruit_index.json to the Boards Manager, install the Adafruit nRF52 package and select the Adafruit Feather nRF52840 Express board. For Bluetooth, use the Bluefruit library included in the package.
Programs are uploaded over USB; double-press RESET to start the UF2 bootloader (the board shows up as an FTHR840BOOT drive). CircuitPython, MicroPython and Zephyr (board adafruit_feather_nrf52840) work too.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Arduino | Direction | UART | I2C | SPI | ADC | Note |
|---|---|---|---|---|---|---|---|---|
| 1 | RST | input | Reset (P0.18) – connecting to GND restarts the chip, a double press starts the UF2 bootloader. It is pin 10 on the SWD connector. | |||||
| 2 | 3V3 | output | 3.3 V output from the RT9080 regulator (600 mA including the board's own consumption). It is pin 1 on the SWD connector. | |||||
| 3 | P0.31 | AREF | input/output | AIN7 | AREF (A7 in Arduino) – external reference for the analog comparator (COMP); the board has 100 nF to GND. Not used for the ADC; the pin can be used as GPIO or as analog input AIN7. | |||
| 4 | GND | – | ||||||
| 5 | P0.04 | A0 | input/output | AIN2 | ||||
| 6 | P0.05 | A1 | input/output | AIN3 | ||||
| 7 | P0.30 | A2 | input/output | AIN6 | ||||
| 8 | P0.28 | A3 | input/output | AIN4 | ||||
| 9 | P0.02 | A4 | input/output | AIN0 | ||||
| 10 | P0.03 | A5 | input/output | AIN1 | ||||
| 11 | P0.14 | D26 | input/output | SCK | ||||
| 12 | P0.13 | D25 | input/output | MOSI | ||||
| 13 | P0.15 | D24 | input/output | MISO | ||||
| 14 | P0.24 | D1 | input/output | RX | ||||
| 15 | P0.25 | D0 | input/output | TX | ||||
| 16 | P0.10 | D2 | input/output | NFC2 (D2) – the Adafruit bootloader switches the pin to GPIO at the factory (UICR). To use the NFC antenna, reprogram UICR via SWD. | ||||
| 17 | P0.12 | D22 | input/output | SDA | I2C SDA – no pull-up resistor on the board | |||
| 18 | P0.11 | D23 | input/output | SCL | I2C SCL – no pull-up resistor on the board | |||
| 19 | P1.08 | D5 | input/output | |||||
| 20 | P0.07 | D6 | input/output | |||||
| 21 | P0.26 | D9 | input/output | |||||
| 22 | P0.27 | D10 | input/output | |||||
| 23 | P0.06 | D11 | input/output | |||||
| 24 | P0.08 | D12 | input/output | |||||
| 25 | P1.09 | D13 | input/output | |||||
| 26 | VBUS | output | 5 V from USB (only when USB is connected) | |||||
| 27 | EN | input | Logic 0 disables the 3.3 V regulator and thus the whole board | |||||
| 28 | VBAT | input/output | 3.7 V Li-Po/Li-Ion cell positive from the JST PH connector. The board charges it from USB at about 200 mA (MCP73831). | |||||
| SWD | 3V3 | output | 3.3 V output from the RT9080 regulator (600 mA including the board's own consumption). It is pin 1 on the SWD connector. | |||||
| SWD | SWDIO | – | SWD debug interface – data | |||||
| SWD | GND | – | ||||||
| SWD | SWCLK | – | SWD debug interface – clock | |||||
| SWD | GND | – | ||||||
| SWD | SWO | – | SWO trace output (P1.00) | |||||
| SWD | GND | – | ||||||
| SWD | NC | – | ||||||
| SWD | GND | – | ||||||
| SWD | RST | input | Reset (P0.18) – connecting to GND restarts the chip, a double press starts the UF2 bootloader. It is pin 10 on the SWD connector. | |||||
| pad | P0.09 | input/output | NFC1 – only a test point on the underside of the board (TP1). Works as GPIO after switching the NFC pins in UICR (switched at the factory). |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| P1.15 | Red LED (D3, LED_BUILTIN) |
| P1.10 | Blue CONN LED (D4) – Bluetooth connection |
| P0.16 | NeoPixel (D8) |
| P1.14 | NeoPixel power (logic 1 = on) |
| P1.02 | USER button (D7) – held during reset, starts the bootloader |
| P0.29 | Battery voltage via 1 : 2 divider (A6, VBAT = 2 × U) |
| P0.17/P0.19–P0.23 | QSPI flash 2 MB (GD25Q16) |
| P1.00 | SWO – pin 6 konektoru SWD |
What to watch out for
- GPIO are not 5V tolerant. Use a level shifter for 5V signals.
- I2C (SDA, SCL) has no pull-up resistors on the board – most modules have them; otherwise add 2.2–10 kΩ to 3.3 V.
- AREF (A7) is a reference only for the analog comparator, not for the ADC.
- According to Nordic, pins A2–A5 (P0.30, P0.28, P0.02, P0.03), AREF and D2 are intended for low-speed signals (up to 10 kHz). Fast SPI works on them but may degrade radio reception.
- The NeoPixel is powered from P1.14 – it lights up only with P1.14 at logic 1 (the Arduino core sets this automatically).
- Battery voltage is measured on A6 (P0.29) through a 1 : 2 divider – VBAT = 2 × the voltage at A6.
- Holding the USER button (D7) during reset starts the bootloader; double-pressing RESET starts the UF2 bootloader.
- Connect only a 3.7 V Li-Po/Li-Ion cell to the JST PH connector, and check the polarity before connecting it.
nRF52840 and CircuitPython on chiptron.eu/
Projects and guides on chiptron.eu/:
- MeshCore – off-grid LoRa communication, nRF52840 nodes with Bluetooth to your phone
More pinouts
See all pinouts on the Pinouts page.