Seeed Studio XIAO nRF52840 is a thumb-sized board (21 × 17.8 mm) with the Nordic nRF52840 chip: very low-power Bluetooth LE, native USB and a Li-Po charger. It’s well suited for wireless sensors, remote controls, wearables and Meshtastic and MeshCore network nodes.
The Sense version adds an LSM6DS3TR-C accelerometer with gyroscope and a digital microphone; the pinout is the same.
Specifications
- nRF52840: 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; ceramic antenna
- 11 GPIO on the headers (D0–D10), 6 analog inputs (A0–A5); the NFC pads on the bottom can be used as 2 more GPIO
- UART, I2C, SPI and PWM on any pins
- USB-C with native USB (UF2 bootloader), RGB LED, RESET button
- Li-Po charging at 50 or 100 mA, battery voltage measurement
In the Arduino IDE, add the Seeed boards (add the URL https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json to the Boards Manager). The Seeed nRF52 Boards core is recommended for Bluetooth and low power, Seeed nRF52 mbed-enabled Boards for the IMU, microphone and TinyML. Pin numbers D6–D10 and the default SS differ between the cores – use the names D0–D10 in your code.
Programs are uploaded over USB; double-press RESET to start the UF2 bootloader. Zephyr (board xiao_ble), CircuitPython and MicroPython 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.
Bottom side
| Pin | Name | Arduino | Direction | UART | I2C | SPI | ADC | Note |
|---|---|---|---|---|---|---|---|---|
| 1 | P0.02 | D0/A0 | input/output | AIN0 | ||||
| 2 | P0.03 | D1/A1 | input/output | AIN1 | ||||
| 3 | P0.28 | D2/A2 | input/output | AIN4 | ||||
| 4 | P0.29 | D3/A3 | input/output | AIN5 | ||||
| 5 | P0.04 | D4/A4 | input/output | SDA | AIN2 | |||
| 6 | P0.05 | D5/A5 | input/output | SCL | AIN3 | |||
| 7 | P1.11 | D6 | input/output | TX | UART TX (Serial1) | |||
| 8 | P1.12 | D7 | input/output | RX | UART RX (Serial1) | |||
| 9 | P1.13 | D8 | input/output | SCK | ||||
| 10 | P1.14 | D9 | input/output | MISO | ||||
| 11 | P1.15 | D10 | input/output | MOSI | ||||
| 12 | 3V3 | output | 3.3 V output from the SGM2040 regulator (250 mA including the board's own consumption). | |||||
| 13 | GND | – | ||||||
| 14 | 5V | input/output | 5 V directly from the USB connector (VBUS, before the diode). It can also power the board – ideally connect the supply through a diode so voltage does not flow back into USB. | |||||
| Bottom side | SWCLK | – | SWD debug interface – clock | |||||
| Bottom side | SWDIO | – | SWD debug interface – data | |||||
| Bottom side | GND | – | ||||||
| Bottom side | RST | input | Reset (P0.18) – connecting to GND restarts the chip | |||||
| Bottom side | BAT- | – | Cell negative (GND) | |||||
| Bottom side | BAT+ | input/output | 3.7 V Li-Po/Li-Ion cell positive. The board charges it from USB at about 50 mA, with P0.13 at logic 0 about 100 mA. | |||||
| Bottom side | P0.09 | input/output | NFC1 – after boot the pin is connected to NFC. A permanent write to UICR switches it to GPIO (Arduino: -DCONFIG_NFCT_PINS_AS_GPIOS, Zephyr: nfct-pins-as-gpios), reverted only by erasing UICR. | |||||
| Bottom side | P0.10 | input/output | NFC2 – after boot the pin is connected to NFC. A permanent write to UICR switches it to GPIO (Arduino: -DCONFIG_NFCT_PINS_AS_GPIOS, Zephyr: nfct-pins-as-gpios), reverted only by erasing UICR. |
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 |
|---|---|
| P0.26 | RGB LED – red (LED_BUILTIN), lights at logic 0 |
| P0.30 | RGB LED – green (AIN6) |
| P0.06 | RGB LED – blue |
| P0.13 | Charge current: input = 50 mA, logic 0 = 100 mA |
| P0.14 | Battery divider enable (logic 0) |
| P0.17 | Charge status (logic 0 = charging) |
| P0.31 | Battery voltage via divider (AIN7), VBAT = 2.96 × U |
| P0.20–P0.25 | QSPI flash 2 MB |
| P0.07/P0.27/P0.11/P1.08 | Sense: IMU SDA, SCL, INT1, power |
| P1.00/P0.16/P1.10 | Sense: microphone CLK, DATA, power |
What to watch out for
- GPIO are not 5V tolerant. Use a level shifter for 5V signals.
- The RGB LED lights at logic 0: red P0.26, green P0.30, blue P0.06.
- According to Nordic, pins D0–D3 and D6–D10 are intended for low-speed signals (up to 10 kHz). Fast SPI works on them but may degrade radio reception – fast signals belong on D4 and D5.
- The NFC pads (P0.09, P0.10) are connected to NFC after boot. A permanent write to UICR switches them to GPIO (
-DCONFIG_NFCT_PINS_AS_GPIOSin Arduino); you can switch back only by erasing UICR. - P0.13 selects the charging current: as an input about 50 mA, at logic 0 about 100 mA. Don’t set it to logic 1.
- Battery voltage is measured on P0.31 (AIN7) through a 1 MΩ / 510 kΩ divider, which P0.14 enables at logic 0 (VBAT = 2.96 × the voltage at AIN7). Seeed recommends keeping P0.14 at logic 0.
- Connect only a 3.7 V Li-Po/Li-Ion cell to the BAT pads.
nRF52840 on chiptron.eu/
Projects and guides on chiptron.eu/:
- MeshCore – off-grid LoRa communication, a guide with the XIAO nRF52840 board and the Wio-SX1262 shield
- MeshPocket – a power bank and LoRa node in one, with Bluetooth handled by the nRF52840
More pinouts
See all pinouts on the Pinouts page.