Seeed Studio XIAO nRF52840 系列入门指南
| XIAO nRF52840 | XIAO nRF52840 Sense | XIAO nRF52840 Plus | XIAO nRF52840 Sense Plus |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
作为 Seeed Studio XIAO 家族中的首款无线产品,Seeed Studio XIAO nRF52840 搭载了强大的 Nordic nRF52840 MCU,集成了 Bluetooth 5.0 连接功能。同时,它具有小巧精致的外形尺寸,可用于可穿戴设备和物联网项目。其单面贴片设计以及板载 Bluetooth 天线,能够极大地加速物联网项目的快速部署。
此外,该开发板还有一个进阶版本 Seeed Studio XIAO nRF52840 Sense。它集成了两个额外的板载传感器。其中之一是 脉冲密度调制 (PDM) 数字麦克风,可以实时接收音频数据,从而可用于语音/音频识别。另一个是 6 轴惯性测量单元 (IMU),在诸如手势识别等 TinyML 项目中非常有用。这些板载传感器在开发板体积极小的前提下,为用户提供了极大的便利。
全新升级的 XIAO nRF52840 Plus 和 XIAO nRF52840 Sense Plus 在功能性和易用性方面都有显著提升。多功能引脚数量增加到 20 个,新增 I2S 和 SPI 资源以支持更复杂的项目,NFC 引脚 被引出以便更轻松地集成到物联网和智能卡应用中,同时 BAT 引脚 重新布局以提升焊接便利性,从而带来更友好的硬件使用体验。
与 Seeed Studio XIAO RP2040 相比,Seeed Studio XIAO nRF52840 拥有更丰富的接口。首先需要注意的是,板载的 近场通信 (NFC) 接口 是可用的。其次,在 Type-C 接口一侧配有一个小型复位按钮。在另一侧,有一个三合一 LED(用户 LED)以及一个充电指示 LED,在连接电池时用于指示充电状态。它提供 11 个数字 I/O 可用作 PWM 引脚,以及 6 个模拟 I/O 可用作 ADC 引脚。它支持三种常见串行接口:UART、I2C 和 SPI。与 Seeed Studio XIAO RP2040 相同,它配备了板载 2 MB Flash,这意味着它同样可以使用 Arduino、MicroPython、CircuitPython 或其他编程语言进行编程。
Seeed Studio XIAO nRF52840 Sense 与 Seeed Studio XIAO 扩展板兼容。
特性
- 强大的无线能力:Bluetooth 5.0,板载天线
- 强劲 CPU:Nordic nRF52840,ARM® Cortex®-M4 32 位处理器,带 FPU,64 MHz
- 超低功耗:待机功耗小于 5μA
- 电池充电芯片:支持锂电池充放电管理
- 板载 2 MB Flash
- 板载 PDM 麦克风(仅在 Seeed Studio XIAO nRF52840 Sense 上)
- 板载 6 轴 LSM6DS3TR-C IMU(仅在 Seeed Studio XIAO nRF52840 Sense 上)
- 超小尺寸:21 x 17.8mm,Seeed Studio XIAO 系列可穿戴设备经典外形
- 丰富接口:在 XIAO nRF52840 (Sense) 上为 1xUART、1xI2C、1xSPI、1xNFC、1xSWD、11xGPIO(PWM)、6xADC;在 XIAO nRF52840 (Sense) Plus 上为 2xUART、1xI2C、2xSPI、1xI2S、1xNFC、1xSWD、18xGPIO(PWM)、6xADC
- 单面元件、贴片安装设计
规格对比
| 项目 | Seeed Studio XIAO nRF52840 | Seeed Studio XIAO nRF52840 Sense | Seeed Studio XIAO nRF52840 Plus | Seeed Studio XIAO nRF52840 Sense Plus |
|---|---|---|---|---|
| 处理器 | Nordic nRF52840, ARM® Cortex®-M4 32-bit processor with FPU, 64 MHz | |||
| 无线连接 | Bluetooth Low Energy 5.4/ Bluetooth Mesh/NFC | |||
| 存储器 | 256 KB RAM,1MB Flash 2MB onboard Flash | |||
| 板载传感器 | N/A | 6 DOF IMU (LSM6DS3TR-C), PDM Microphone | N/A | 6 DOF IMU (LSM6DS3TR-C), PDM Microphone |
| 接口 | 1xI2C, 1xUART, 1xSPI | 1xI2C, 2xUART, 2xSPI, 1xI2S | ||
| PWM/模拟引脚 | 11/6 | 20/6 | ||
| 板载按键 | Reset Button | |||
| 板载 LED | 3-in-one LED/ Charge LED | |||
| 电池充电芯片 | BQ25101 | |||
| 编程语言 | Arduino/ MicroPython/ CircuitPython | |||
硬件概览
- XIAO nRF52840/XIAO nRF52840 Sense
- XIAO nRF52840 Plus/XIAO nRF52840 Sense Plus
| XIAO nRF52840/XIAO nRF52840 Sense 正面标注示意图 |
|---|
![]() |
| XIAO nRF52840/XIAO nRF52840 Sense 背面标注示意图 |
![]() |
| XIAO nRF52840/XIAO nRF52840 Sense 引脚列表 |
![]() |
引脚映射
| XIAO 引脚 | 功能 | 芯片引脚 | 描述 | Arduino 名称 |
|---|---|---|---|---|
| 5V | VBUS | 电源输入/输出 | ||
| GND | ||||
| 3V3 | 3V3_OUT | 电源输出 | ||
| D0 | Analog | P0.02 | GPIO, AIN0 | 0 |
| D1 | Analog | P0.03 | GPIO, AIN1 | 1 |
| D2 | Analog | P0.28 | GPIO, AIN4 | 2 |
| D3 | Analog | P0.29 | GPIO, AIN5 | 3 |
| D4 | Analog,SDA | P0.04 | GPIO, I2C Data, AIN2 | 4 |
| D5 | Analog,SCL | P0.05 | GPIO, I2C Clock, AIN3 | 5 |
| D6 | TX | P1.11 | GPIO, UART Transmit | 7/6 |
| D7 | RX | P1.12 | GPIO, UART Receive | 8/7 |
| D8 | SPI_SCK | P1.13 | GPIO, SPI Clock | 9/8 |
| D9 | SPI_MISO | P1.14 | GPIO, SPI Data | 10/9 |
| D10 | SPI_MOSI | P1.15 | GPIO, SPI Data | 11/10 |
| NFC1 | P0.09 | NFC | ||
| NFC2 | P0.10 | NFC | ||
| Reset | P0.18 | RESET | ||
| ADC_BAT | P0.14 | 读取 BAT 电压值 | ||
| 6 DOF IMU_PWR | P1.08 | 6D 模块电源开关 | ||
| 6 DOF IMU__INT1 | P0.11 | 6D 模块中断信号引脚 | ||
| PDM Microphone_DATA | P0.16 | PDM 音频数据输入引脚 | ||
| PDM Microphone_CLK | P1.00 | PDM 音频时钟输出引脚 | ||
| RF Switch Port Select | P2.05 | 切换板载天线 | ||
| RF Switch Power | P2.03 | 电源 | ||
| CHARGE_LED | P0.17 | CHG-LED_Red | ||
| USER_LED_R | P0.26 | 用户控制的红色 RGB LED 引脚 | 11 | |
| USER_LED_B | P0.06 | 用户控制的蓝色 RGB LED 引脚 | 13/12 | |
| USER_LED_G | P0.30 | 用户控制的绿色 RGB LED 引脚 | 12/13 |
| XIAO nRF52840 Plus 正面指示图 |
|---|
![]() |
| XIAO nRF52840 Plus 背面指示图 |
![]() |
| XIAO nRF52840 Plus 引脚列表 |
![]() |
| XIAO 引脚 | 功能 | 芯片引脚 | 复用功能 | 描述 | Arduino 名称 |
|---|---|---|---|---|---|
| 5V | VBUS | 电源输入/输出 | |||
| GND | |||||
| 3V3 | 3V3_OUT | 电源输出 | |||
| D0 | Analog | P0.02 | GPIO, ADC | 0 | |
| D1 | Analog | P0.03 | GPIO, ADC | 1 | |
| D2 | Analog | P0.28 | GPIO, ADC | 2 | |
| D3 | Analog | P0.29 | GPIO, ADC | 3 | |
| D4 | Analog,SDA | P0.04 | GPIO, I2C Data, ADC | 4 | |
| D5 | Analog,SCL | P0.05 | GPIO, I2C Clock, ADC | 5 | |
| D6 | TX | P1.11 | GPIO, UART Transmit | 7/6 | |
| D7 | RX | P1.12 | GPIO, UART Receive | 8/7 | |
| D8 | SPI_SCK | P1.13 | GPIO, SPI Clock | 9/8 | |
| D9 | SPI_MISO | P1.14 | GPIO, SPI Data | 10/9 | |
| D10 | SPI_MOSI | P1.15 | GPIO, SPI Data | 11/10 | |
| D11 | I2S_SD | P0.15 | GPIO, I2S, ADC | ||
| D12 | I2S_SCK | P0.19 | GPIO,I2S, ADC | ||
| D13 | I2S_WS | P1.01 | GPIO, I2S ADC | ||
| D14 | RX1 | P0.09 | NFC1 | GPIO, UART Receive, ADC | |
| D15 | TX1 | P0.10 | NFC2 | GPIO, UART Transmit, ADC | |
| D16 | BAT | P0.31 | GPIO | ||
| D17 | SCK1 | P1.03 | GPIO, SPI | ||
| D18 | MISO1 | P1.05 | GPIO, SPI | ||
| D19 | MOSI1 | P1.07 | GPIO, SPI | ||
| ADC_BAT | P0.14 | 读取 BAT 电压值 | |||
| 6 DOF IMU_PWR | P1.08 | 6D 模块的电源开关 | |||
| 6 DOF IMU__INT1 | P0.11 | 6D 模块的中断信号引脚 | |||
| PDM Microphone_DATA | P0.16 | PDM 音频数据输入引脚 | |||
| PDM Microphone_CLK | P1.00 | PDM 音频时钟输出引脚 | |||
| Reset | P0.18 | 复位 | |||
| RF Switch Port Select | P2.05 | 切换板载天线 | |||
| RF Switch Power | P2.03 | 电源 | |||
| CHARGE_LED | P0.17 | CHG-LED_Red | |||
| USER_LED_R | P0.26 | 用户控制的红色 RGB LED 引脚 | 11 | ||
| USER_LED_B | P0.06 | 用户控制的蓝色 RGB LED 引脚 | 13/12 | ||
| USER_LED_G | P0.30 | 用户控制的绿色 RGB LED 引脚 | 12/13 |
两个 Arduino 库
Seeed Studio XIAO nRF52840 在一块小小的板子上集成了许多功能,有时可能无法让每个功能都发挥到最佳性能。因此,Seeed 发布了两个 Arduino 库,以便最大化每个功能的性能。因此:
- 如果你想使用 Bluetooth function 和 "Low Energy Cost Function",推荐使用
Seeed nRF52 Boards库。 - 如果你想在 embedded Machine Learning Applications 中使用它,或使用 "IMU & PDM advanced function",推荐使用
Seeed nRF52 mbed-enabled Boards库。 - 在基础用法方面,例如 LED, Digital, Analog, Serial, I2C, SPI,这两个库都提供了很好的支持。
这两个库所支持的引脚定义可能会有些许不同,Seeed 将持续更新本 wiki,直到内容清晰为止。
-
如果你使用 Seeed nRF52 Boards 的板载包,
Serial功能可能无法编译。解决方法是在代码中添加一行#include <Adafruit_TinyUSB.h>。你可以从以下地址下载该包:https://github.com/adafruit/Adafruit_TinyUSB_Arduino -
如果你更喜欢简单的方法,可以一开始就选择 Seeed nRF52 mbed-enabled Boards。它支持
Serial功能的编译,而无需额外修改。
入门指南
首先,我们将 Seeed Studio XIAO nRF52840(Sense)连接到电脑,并从 Arduino IDE 上传一个简单的代码,以检查开发板是否工作正常。
硬件准备
你需要准备以下物品:
- 1 x Seeed Studio XIAO nRF52840 或 Studio XIAO nRF52840 Sense
- 1 x 电脑
- 1 x USB Type-C 线缆
有些 USB 线缆只能供电,不能传输数据。如果你没有 USB 线缆,或者不确定你的 USB 线缆是否可以传输数据,可以查看 Seeed USB Type-C support USB 3.1。
通过 USB Type-C 线缆将 Seeed Studio XIAO nRF52840(Sense)连接到电脑。

软件准备
- 步骤 1. 根据你的操作系统下载并安装最新版本的 Arduino IDE
-
步骤 2. 启动 Arduino 应用程序
-
步骤 3. 将 Seeed Studio XIAO nRF52840(Sense)板卡包添加到 Arduino IDE
进入 File > Preferences,在 "Additional Boards Manager URLs" 中填入以下链接: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

进入 Tools > Board > Boards Manager...,在搜索框中输入关键字 "seeed nrf52",选择你想要的最新版本板卡并安装。你也可以两个都安装。

- 步骤 4. 选择你的开发板和端口
开发板
安装好板卡包后,进入 Tools > Board 并选择你想要的开发板,继续选择 "Seeed XIAO nRF52840 Sense"。现在我们已经完成了在 Arduino IDE 中对 Seeed Studio XIAO nRF52840(Sense)的设置。

端口
导航到 Tools > Port 并选择已连接的 Seeed Studio XIAO nRF52840 (Sense) 的串口名称。它很可能是 COM3 或更高(COM1 和 COM2 通常保留给硬件串口)。已连接的 Seeed Studio XIAO nRF52840 (Sense) 的串口名称通常会包含括号,其中 Seeed Studio XIAO nRF52840 对应 Seeed Studio XIAO nRF52840,而 Seeed Studio XIAO nRF52840 Sense 对应 Seeed Studio XIAO nRF52840 Sense。

- 步骤 5. 导航到 File > Examples > 01.Basics > Blink 打开 Blink 示例

- 步骤 6. 点击 Upload 按钮将 Blink 示例代码上传到开发板

上传完成后,你会看到板载红色 LED 以 1 秒的间隔闪烁一次。这意味着连接成功,现在你可以使用 Seeed Studio XIAO nRF52840 (Sense) 探索更多项目了!
玩转板载三合一 LED
Seeed Studio XIAO nRF52840 (Sense) 具有一个板载三合一 LED,用户可以自行编程控制。现在你将学习如何使用 Arduino 逐个控制 RGB 颜色!
首先你需要了解,当通过代码控制这个 LED 时,它的行为与通常情况不同。当我们给出低电平信号时,LED 会点亮,而当我们给出高电平信号时,它会熄灭。这是因为该 LED 采用共阳极控制,只有在低电平信号下才会点亮。
一个示例代码如下:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
}
在这里,即使使用了 HIGH,LED 也会熄灭。你需要将 HIGH 替换为 LOW 才能点亮 LED。
请参考下面 LED 的引脚映射,并在你的代码中使用它们:
- 红色 LED = LED_BUILTIN 或 LED_RED
- 蓝色 LED = LED_BLUE
- 绿色 LED = LED_GREEN
功耗验证
Seeed Studio XIAO nRF52840 具有低功耗特性,这里我们提供一种验证方法。强烈建议在此处使用 Seeed nRF52 Boards 库。
- 步骤 1. 使用 JLink 下载器为 Seeed Studio XIAO nRF52840 (Sense) 刷写引导加载程序固件。
如果你正在使用 Seeed Studio XIAO nRF52840 的出厂固件,或者从未更改过 Seeed Studio XIAO nRF52840 的固件,则可以跳过此步骤。
- 步骤 2. 在此处使用
Seeed nRF52 Boards库。

- 步骤 3. 在此处上传 deep_sleep 演示并使用 Arduino 运行它
// The MIT License (MIT)
// Copyright (c) 2019 Ha Thach for Adafruit Industries
#include "SdFat.h"
#include "Adafruit_SPIFlash.h"
// Uncomment to run example with custom SPI and SS e.g with FRAM breakout
// #define CUSTOM_CS A5
// #define CUSTOM_SPI SPI
#if defined(CUSTOM_CS) && defined(CUSTOM_SPI)
Adafruit_FlashTransport_SPI flashTransport(CUSTOM_CS, CUSTOM_SPI);
#elif defined(ARDUINO_ARCH_ESP32)
// ESP32 use same flash device that store code.
// Therefore there is no need to specify the SPI and SS
Adafruit_FlashTransport_ESP32 flashTransport;
#else
// On-board external flash (QSPI or SPI) macros should already
// defined in your board variant if supported
// - EXTERNAL_FLASH_USE_QSPI
// - EXTERNAL_FLASH_USE_CS/EXTERNAL_FLASH_USE_SPI
#if defined(EXTERNAL_FLASH_USE_QSPI)
Adafruit_FlashTransport_QSPI flashTransport;
#elif defined(EXTERNAL_FLASH_USE_SPI)
Adafruit_FlashTransport_SPI flashTransport(EXTERNAL_FLASH_USE_CS, EXTERNAL_FLASH_USE_SPI);
#else
#error No QSPI/SPI flash are defined on your board variant.h !
#endif
#endif
Adafruit_SPIFlash flash(&flashTransport);
/* If you want to use a specific flash device, for example for a custom built board, first look for it in Adafruit_SPIFlash\src\flash_devices.h
* If it isn't in there you need to create your own definition like the W25Q80DLX_EXAMPLE example below.
* These definitions need to be edited to match information on the data sheet of the flash device that you want to use.
* If you are not sure what the manufacture ID, memory type and capacity values should be, try running the sketch anyway and look at the serial output
* The flash device will report these values to you as a single hexadecimal value (the JDEC ID)
* For example, the first device on the list - the W25Q80DLX - will report its JDEC ID as 0xef4014, which is made of these three values:
* manufacturer_id = 0xef
* memory_type = 0x40
* capacity = 0x14
* With this macro properly defined you can then create an array of device definitions as shown below, this can include any from the list of devices in flash_devices.h, and any you define yourself here
* You need to update the variable on line 71 to reflect the number of items in the array
* You also need to uncomment line 84 and comment out line 81 so this array will be passed to the flash memory driver.
*/
//Example of a user defined flash memory device:
//#define W25Q80DLX_EXAMPLE \
// { \
// .total_size = (1 << 20), /* 1 MiB */ \
// .start_up_time_us = 5000, .manufacturer_id = 0xef, \
// .memory_type = 0x40, .capacity = 0x14, .max_clock_speed_mhz = 80, \
// .quad_enable_bit_mask = 0x02, .has_sector_protection = false, \
// .supports_fast_read = true, .supports_qspi = true, \
// .supports_qspi_writes = false, .write_status_register_split = false, \
// .single_status_byte = false, .is_fram = false, \
// }
/*
* Create an array of data structures and fill it with the settings we defined above.
* We are using two devices, but more can be added if you want.
*/
//static const SPIFlash_Device_t my_flash_devices[] = {
// W25Q80DLX_EXAMPLE,
//};
/*
* Specify the number of different devices that are listed in the array we just created. If you add more devices to the array, update this value to match.
*/
//const int flashDevices = 1;
#include <bluefruit.h>
bool deepPowerDown(Adafruit_SPIFlash& flash, Adafruit_FlashTransport& transport) {
uint32_t id_before = flash.getJEDECID();
transport.begin();
transport.runCommand(0xB9); // SPI deep power-down command
delay(10);
uint32_t id_after = flash.getJEDECID();
return (id_after == 0xFFFFFF || id_after == 0xFFFFFFFF);
}
void setup() {
flash.begin();
Bluefruit.begin();
if (!deepPowerDown(flash, flashTransport)) {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
while (1) {
yield();
}
}
flash.end();
sd_power_system_off();
}
void loop() {
// nothing to do
}
在这里,我们要对提供代码的作者表示特别感谢 → daCoder ←
如果你想更详细地了解这个示例,请点击这里
电池充电电流
电池充电电流可选择为 50mA 或 100mA,你可以将 Pin13 设置为高电平或低电平,以将其更改为 50mA 或 100mA。低电流充电时,在输入模式下设置为高电平;高电流充电时,在输出模式下设置为低电平。
低充电电流
void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, HIGH);
}
高充电电流
void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, LOW);
}
访问 SWD 引脚进行调试和重新烧录引导加载程序
所需硬件
所需软件
需要从官网上下载 Segger 软件。
- 步骤 1. 使用 Jlink 连接以下引脚:

- 步骤 2. 启动 J-Flash 并搜索 nRF52840,创建新项目:

- 步骤 3. 点击 "Target" 然后选择 "Connect"。

- 步骤 4. 将 bin 或 hex 文件拖拽到软件中。然后按顺序按 F4 和 F5。重新刷写完成。
常见问题
Q1: 在向开发板上传代码时,我的 Arduino IDE 卡住了
你可以先尝试点击一次 "Reset Button" 来复位开发板。如果这不起作用,请快速点击两次以进入bootloader mode。如果仍然无效,请将开发板与电脑断开连接,然后重新连接开发板。
Q2: 我的开发板没有在 Arduino IDE 中显示为串口设备
你可以先尝试点击一次 "Reset Button" 来复位开发板。如果这不起作用,请快速点击两次以进入bootloader mode。
Q3: 使用 XIAO nRF52840(Sense)进行电池充电时需要注意什么?
当 P0.14(D14)在 3.3V 的高电平下关闭 ADC 功能时,P0.31 将处于 3.6V 的输入电压极限。有烧毁 P0.31 引脚的风险。
目前针对这个问题,我们建议用户在电池充电期间不要关闭 P0.14(D14)的 ADC 功能,也不要将 P0.14(D14)设置为高电平。

Q4: 上电时绿色指示灯的行为是怎样的?

P0.17 引脚用于控制绿色指示灯的行为,用于指示充电状态:
- 低电平:表示正在进行充电。
- 高电平:表示电池未充电或已充满。
当其处于低电平时,RED_CHG LED 会点亮。
更多详情请查看 PMIC 数据手册:BQ25100 和 XIAO nRF52840 datasheet。
资源
Seeed Studio XIAO nRF52840
硬件设计
- 📄[数据手册] Nordic nRF52840 数据手册
- 📄[数据手册] Flash P25Q16H-UXH-IR 数据手册
- 📄[原理图] XIAO nRF52840 原理图
- 🗃️[PCB 设计文件]
- 🗃️[PCB 设计库]
- 📄[引脚图] XIAO nRF52840 引脚图表
机械设计
- 📄[2D 尺寸] XIAO nRF52840 DXF 尺寸图
- 📄[2D 尺寸] XIAO nRF52840 底部焊盘数据
Seeed Studio XIAO nRF52840 Sense
硬件设计
- 📄[数据手册] Nordic nRF52840 数据手册
- 📄[数据手册] Flash-P25Q16H-UXH-IR 数据手册
- 📄[数据手册] 充电 IC-BQ25101 数据手册
- 📄[数据手册] IMU-LSM6DS3TR 数据手册
- 📄[数据手册] 麦克风-MSM261D3526H1CPM 数据手册
- 📄[原理图] XIAO nRF52840 Sense 原理图
- 🗃️[PCB 设计文件]
- 🗃️[PCB 设计库]
- 📄[引脚图] XIAO nRF52840 Sense 引脚图表
机械设计
- 📄[2D 尺寸] XIAO nRF52840 Sense DXF 尺寸图
- 📄[2D 尺寸] XIAO nRF52840 底部焊盘数据
- 📄[3D 模型] XIAO nRF52840 Sense 3D 模型
其他
Seeed Studio XIAO nRF52840 (Sense) Plus
硬件设计
- 📄[数据手册] Nordic nRF52840 数据手册
- 📄[数据手册] Flash-P25Q16H-UXH-IR 数据手册
- 🗃️[原理图] XIAO nRF52840 (Sense) Plus 原理图
- 🗃️[PCB 设计文件]
- 🗃️[PCB 设计库]
机械设计
- 🗃️[2D 尺寸] XIAO nRF52840 Sense DXF 尺寸图
课程资源

技术支持与产品讨论
感谢您选择我们的产品!我们将为您提供多种支持,以确保您在使用我们产品时的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。










