Seeed Studio XIAO nRF54LM20A Sense 入门指南

介绍
Seeed Studio XIAO nRF54LM20A Sense 是一款基于 Nordic Semiconductor nRF54LM20A SoC 的紧凑型、超低功耗无线开发板。它集成了 128 MHz Arm Cortex-M33 处理器、512 KB RAM、2 MB 片上 NVM、多协议 2.4 GHz 无线连接、板载 IMU、数字麦克风、8MB 外部 Flash、IPEX 天线连接器以及 nPM1300 PMIC,可用于先进的电池供电物联网、可穿戴设备、智能感知和边缘 AI 应用。
规格参数
| 产品名称 | Seeed Studio XIAO nRF54LM20A | Seeed Studio XIAO nRF54LM20A Sense |
|---|---|---|
| 处理器 | Arm® Cortex®-M33 128 MHz & RISC-V 128 MHz 协处理器 | |
| RAM | 512KB | |
| Flash | 2 MB 非易失性存储器 (NVM) | |
| 外部 Flash | 8MB 板载外部 Flash | |
| PMIC / 电池 | nPM1300 PMIC,用于电源调节和电池充电 | |
| 接口 | 28x GPIO 引脚 | |
| 板载资源 | 1x 用户 LED(R/G/B 三色) | 1x 用户 LED(R/G/B 三色) |
| 无线连接 | Bluetooth LE 6.0(包含 Channel Sounding) | |
| 电源输入 | Type-C:5V | |
| 低功耗模式 (3.7V@2A) | / | 轻睡眠:约 9.96µA |
| 软件兼容性 | Nordic nRF Connect SDK(基于 Zephyr RTOS) | |
| 工作温度 | -20°C 至 70°C | |
| 尺寸 | 21 x 17.8mm | |
特性
-
具备高级连接与安全性的强大 SoC
Seeed Studio XIAO nRF54LM20A Sense 是一款由 Nordic Semiconductor nRF54LM20A SoC 驱动的紧凑型、超低功耗无线开发板。它配备 128 MHz Arm Cortex-M33 处理器、512 KB RAM、2 MB 片上 NVM、128 MHz RISC-V 协处理器、多协议 2.4 GHz 无线连接、板载 IMU、数字麦克风、8MB 外部 Flash、IPEX 天线连接器以及 Nordic nPM1300 PMIC,用于高效电源管理。凭借对 Bluetooth LE、Bluetooth Channel Sounding、Bluetooth Mesh、Thread、Zigbee、Matter 以及最高 4 Mbps 的专有 2.4 GHz 协议的支持,该开发板专为下一代互联产品而设计。板载的运动与音频传感器使其非常适合可穿戴设备、智能感知、TinyML、手势识别、语音触发设备以及电池供电的物联网应用。
-
超低功耗效率
基于 Nordic nRF54LM20A 和 nPM1300 PMIC,XIAO nRF54LM20A Sense 在电池供电(BAT)下实现了仅 4.76 µA 的实测深度睡眠电流。结合 nPM1300 PMIC 及其 0.33 µA 的船运模式 BAT 电流,在无线工作状态下,以 3.7 V 模拟电池输入、发射功率设置为 +8 dBm 时,其平均电流仅为 3.87 mA,非常适合长寿命电池供电的传感应用、可穿戴设备以及始终在线的物联网设备。
-
精简的开发体验
对 Nordic nRF Connect SDK 和 PlatformIO(Zephyr)的完整支持,可实现高效的嵌入式开发流程。(注意:当前不支持 Arduino IDE)
硬件概览
- XIAO nRF54LM20A
- XIAO nRF54LM20A Sense
引脚图
| XIAO 引脚 | 功能 | 芯片引脚 | 描述 |
|---|---|---|---|
| 电源引脚 | |||
| VBUS | VBUS | - | 5V 电源输入/输出 |
| GND | GND | - | 地 |
| 3V3 | 3V3-OUT | - | 3.3V 电源输出 |
| BAT+ | BAT+ | - | 电池输入(通过 I²C 由 nPM1300 监测) |
| BAT- | BAT- | - | 电池负极端子 |
| SHPHLD | SHPHLD | - | PMIC 船运/休眠模式控制(超低功耗出厂状态) |
| 系统与控制引脚 | |||
| RESET | RESET | - | 板级复位 |
| SWCLK | SWCLK | nRF54LM20A SWCLK / SAMD11 SWCLK | 串行线时钟(用于 nRF54 和 SAMD11) |
| SWDIO | SWDIO | nRF54LM20A SWDIO / SAMD11 SWDIO | 串行线数据(用于 nRF54 和 SAMD11) |
| SAMD11_RESET | RESET | SAMD11 RESET | SAMD11 协处理器复位 |
| 用户与 LED 引脚 | |||
| - | USER_BUTTON | P0.09 | 用户按钮输入 |
| - | RGB-B | P1.23 | 板载 RGB LED 蓝色通道 |
| - | RGB-G | P1.24 | 板载 RGB LED 绿色通道 |
| - | RGB-R | P1.22 | 板载 RGB LED 红色通道 |
| 模拟输入 (ADC) 引脚 | |||
| A0 | AIN0 | P1.00 | 模拟输入 0 / GPIO |
| A1 | AIN1 | P1.31 | 模拟输入 1 / GPIO |
| A2 | AIN2 | P1.30 | 模拟输入 2 / GPIO |
| A3 | AIN3 | P1.29 | 模拟输入 3 / GPIO |
| A7 | AIN7 | P1.03 | 模拟输入 7 / GPIO |
| I2C 引脚 | |||
| SDA | I2C_SDA | P1.03 | I2C 数据线(IMU 与外设) |
| SCL | I2C_SCL | P1.07 | I2C 时钟线(IMU 与外设) |
| - | BAT_SDA | P1.18 | 电池监测 I2C SDA(nPM1300) |
| - | BAT_SCL | P1.17 | 电池监测 I2C SCL(nPM1300) |
| UART 引脚 | |||
| TX | UART_TX | P1.08 | UART 发送 |
| RX | UART_RX | P1.09 | UART 接收 |
| SPI 引脚 | |||
| MOSI | SPI_MOSI | P1.06 | SPI 主出从入 |
| MISO | SPI_MISO | P1.05 | SPI 主入从出 |
| SCK | SPI_SCK | P1.04 | SPI 串行时钟 |
| 板载外设引脚 | |||
| - | MIC_DAT | P1.14 | 麦克风数据线 |
| - | MIC_CLK | P1.13 | 麦克风时钟线 |
| - | IMU_SDA | P0.08 | IMU I2C SDA(板载 IMU) |
| - | IMU_SCL | P0.07 | IMU I2C SCL(板载 IMU) |
| - | IMU_CS | P3.12 | IMU 片选 |
| - | IMU_INT1 | P0.06 | IMU 中断 1 |
| - | NFC | P1.02 / P1.01 | NFC 天线引脚 |
| - | GRTC | P0.04 / P0.05 | 通用 RTC 引脚 |
使用 PlatformIO 入门
在本节中,我们将通过 RGB LED 的多色闪烁效果,带你快速上手 XIAO nRF54LM20A。 请先完成下面的软硬件准备,为后续在 XIAO 上的开发做好环境搭建。
硬件准备
你需要准备以下物品:
- 1 x Seeed Studio XIAO nRF54LM20A Sense
- 1 x 电脑
- 1 x USB Type-C 线缆
| Seeed Studio XIAO nRF54LM20A Sense |
|---|
![]() |
下载 VS Code
根据你所使用的系统下载 VS Code

安装 PlatformIO 扩展
打开 VSCode,点击 Extensions,然后搜索 PlatformIO 并选择安装。安装完成后,重启 VSCode。

安装 platform-seeedboards 平台包
Seeed Studio XIAO 系列开发板使用自定义的 PlatformIO 平台,因此你需要手动安装对应的平台包。
- 全新安装请运行以下命令:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

- 如果你之前已经在 PlatformIO 中使用过 Seeed Studio XIAO 系列开发板,请运行下面的命令进行更新:
pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

如果你想使用已有的 PlatformIO 项目,请将 platformio.ini 的内容替换为如下所示:
[env:seeed-xiao-nrf54lm20a]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-nrf54lm20a
创建新项目
- 打开 PlatformIO 扩展,选择 Create New Project。

- 设置项目名称,选择开发板、框架以及文件存储路径。

- 创建完成后,会弹出打开工作区的提示。点击 OK。

- 进入项目文件夹。如果你没有指定自定义路径,文件将存放在默认目录下。
- Windows 默认路径:
<path>: C:\Users\your_name\Documents\PlatformIO\Projects
- Mac / Linux 默认路径:
<path>: ~/Documents/PlatformIO/Projects

添加 Blink 程序
本教程基于 Zephyr RTOS 开发。项目由三个核心文件组成:
main.c:包含应用逻辑的主程序。app.overlay:用于硬件外设配置的 Devicetree overlay 文件。prj.conf:用于启用所需 Zephyr 模块的项目配置文件。

- 添加 main.c 程序
main.c
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/pwm.h>
#include <nrfx_power.h>
#define PWM_PERIOD_NS 1000000U
#define STEP_TIME_MS 500
#define LED_R_NODE DT_ALIAS(pwm_led1)
#define LED_G_NODE DT_ALIAS(pwm_led2)
#define LED_B_NODE DT_ALIAS(pwm_led0)
#if !DT_NODE_EXISTS(LED_R_NODE) || !DT_NODE_EXISTS(LED_G_NODE) || !DT_NODE_EXISTS(LED_B_NODE)
#error "This RGB blink demo expects pwm-led0/pwm-led1/pwm-led2 devicetree aliases"
#endif
static const struct pwm_dt_spec led_r = PWM_DT_SPEC_GET(LED_R_NODE);
static const struct pwm_dt_spec led_g = PWM_DT_SPEC_GET(LED_G_NODE);
static const struct pwm_dt_spec led_b = PWM_DT_SPEC_GET(LED_B_NODE);
struct rgb_step {
uint8_t r;
uint8_t g;
uint8_t b;
uint32_t delay_ms;
};
static int pwm_set_u8(const struct pwm_dt_spec *led, uint8_t level)
{
uint32_t duty_ns = (PWM_PERIOD_NS * (uint32_t)level) / 255U;
return pwm_set_dt(led, PWM_PERIOD_NS, duty_ns);
}
static int rgb_set(uint8_t r, uint8_t g, uint8_t b)
{
int ret;
ret = pwm_set_u8(&led_r, r);
if (ret < 0) {
return ret;
}
ret = pwm_set_u8(&led_g, g);
if (ret < 0) {
return ret;
}
ret = pwm_set_u8(&led_b, b);
if (ret < 0) {
return ret;
}
return 0;
}
int main(void)
{
int ret;
#if defined(CONFIG_NRFX_POWER)
nrfx_power_constlat_mode_request();
#endif
if (!device_is_ready(led_r.dev) || !device_is_ready(led_g.dev) || !device_is_ready(led_b.dev)) {
return -1;
}
static const struct rgb_step demo[] = {
{ 255, 0, 0, STEP_TIME_MS },
{ 0, 255, 0, STEP_TIME_MS },
{ 0, 0, 255, STEP_TIME_MS },
{ 255, 255, 0, STEP_TIME_MS },
{ 0, 255, 255, STEP_TIME_MS },
{ 255, 0, 255, STEP_TIME_MS },
{ 255, 255, 255, STEP_TIME_MS },
{ 0, 0, 0, STEP_TIME_MS },
};
while (1) {
for (size_t i = 0; i < ARRAY_SIZE(demo); i++) {
ret = rgb_set(demo[i].r, demo[i].g, demo[i].b);
if (ret < 0) {
return ret;
}
k_msleep(demo[i].delay_ms);
}
}
return 0;
}
- 添加 app.overlay 文件
在新创建的空白示例中不存在 Devicetree overlay 文件,你需要在 zephyr 目录下添加它。

app.overlay
/*
* Device tree overlay for XIAO nRF54LM20A RGB LED PWM demo.
*
* PWM20 peripheral is used for RGB LED control:
* - Channel 0: P1.22 (Blue LED) -> pwm_led0
* - Channel 1: P1.23 (Red LED) -> pwm_led1
* - Channel 2: P1.24 (Green LED) -> pwm_led2
*/
&pwm20 {
status = "okay";
};
/ {
pwmleds {
compatible = "pwm-leds";
pwm_led0: pwm_led_0 {
pwms = <&pwm20 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "Blue LED";
};
pwm_led1: pwm_led_1 {
pwms = <&pwm20 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "Red LED";
};
pwm_led2: pwm_led_2 {
pwms = <&pwm20 2 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "Green LED";
};
};
};
/ {
aliases {
pwm-led0 = &pwm_led0;
pwm-led1 = &pwm_led1;
pwm-led2 = &pwm_led2;
};
};
- 修改
prj.conf并启用相应的配置。
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n
编译并上传程序
下面介绍两种编译和上传的方法。
- 通过按钮编译并上传

- 通过命令行编译并上传
pio run -e seeed-xiao-nrf54lm20a -t upload -v

观察运行效果

蓝牙天线
本开发板使用外置蓝牙天线。为了确保更好的蓝牙信号质量并提升你的蓝牙使用体验,建议安装蓝牙天线。 连接方式如下图所示:

电池使用
XIAO nRF54LM20A 支持使用 3.7V 锂电池作为电源输入。你可以参考下图进行接线。

焊接时请务必注意不要将正负极短路,以免烧毁电池和设备。 如果电池本身带电,切勿直接焊接到电路板上,否则可能烧毁电路板。在电路带电的情况下发生短路风险极大,建议使用适配器。
电池使用说明:
- 请使用符合规格要求的合格电池。
- 使用电池时,XIAO 也可以通过数据线连接到你的计算机设备,请放心,XIAO 内置电路保护芯片,使用安全。
电池电压检测
XIAO nRF54LM20A 集成了电池电压检测功能,核心是利用 nPM1300-CAA 负载开关高效管理电池电量测量。本指南将重点分析电池检测的软件实现部分(尤其是 main.c 代码),并指导你如何在 PlatformIO 环境中轻松部署和使用该功能,从而避免直接使用 Zephyr NCS SDK 带来的复杂性。

电池检测原理图
nPM1300-CAA 芯片的作用:
nPM1300-CAA 是一款高度集成的电源管理 IC(PMIC),用于替代 TPS22916 的简单负载开关功能。它不仅负责控制电池电压切换以实现低功耗监测,还集成了充电、稳压以及精确的电量计量(通过电压、电流、温度)功能,从而最大化 nRF54LM20A 的电池寿命。
下面的示例同时适用于 PlatformIO 和 nRF Connect SDK。在 PlatformIO 中可以直接使用,而在 SDK 中则需要手动添加文件。请参考此链接
外设概览
本板载的外设电路包括 IMU 和麦克风。你可以在下图中看到它们的位置:

IMU
XIAO nRF54LM20A Sense 搭载了一颗 LSM6DS3TR-C IMU,集成 3 轴加速度计和 3 轴陀螺仪。
MIC
XIAO nRF54LM20A Sense 配备了一颗 MSM261DGT006 数字麦克风,用于音频采集。
常见问题
- 修改配置文件后构建报错
如果你之前已经构建过完整的 Zephyr 工程,之后又修改了配置文件,建议在重新构建和上传前先清理构建缓存。这样可以避免由于缓存文件陈旧或损坏而导致的编译错误。
pio run -t clean // Clean command
- 安装后出现 zsh: command not found: openocd
在终端中直接输入 “openocd” 时,shell 只会在 PATH 中包含的目录里搜索;如果尚未将对应目录加入 PATH,就会提示找不到该命令。只需按照下面的说明,将其永久添加到 ~/.zshrc 中即可。 此解决方案仅适用于 macOS 用户
echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version
- 如果之前多次下载 Seeed Studio XIAO 系列开发板,现在 Platform 项目的下拉选择失败怎么办?
建议先进行清理后再重试。PlatformIO 本地 packages 下累积的重复和过期的 Seeed 平台文件夹会导致文件查找路径过长以及版本冲突,从而造成项目加载失败。请按照以下步骤清理多余的混合来源 Seeed 平台目录,仅保留由 PlatformIO 自动拉取的官方平台,以避免旧的或错误目录引发冲突: 删除所有以 platform-seeed- 和 framework-seeed- 开头的文件夹
rm -rf ~/.platformio/packages/platform-seeed-* ~/.platformio/packages/framework-seeed-*
资源
Seeed Studio XIAO nRF54LM20A
硬件设计
- 📄[Datasheet] Nordic nRF54LM20A 数据手册
- 📄[Schematic] XIAO nRF54LM20A 原理图
- 🗃️[PCB Design Files] XIAO nRF54LM20A KiCad 工程
- 🗃️[PCB Design Libraries]
- 📄[Pinout Diagram]XIAO nRF54LM20A 引脚定义表
Seeed Studio XIAO nRF54LM20A Sense
硬件设计
- 📄[Datasheet] Nordic nRF54LM20A 数据手册
- 📄[Schematic] XIAO nRF54LM20A Sense 原理图
- 🗃️[PCB Design Files] XIAO nRF54LM20A KiCad 工程
- 🗃️[PCB Design Libraries]
- 📄[Pinout Diagram]XIAO nRF54LM20A Sense 引脚定义表
技术支持与产品讨论
感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。




