Skip to main content

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 nRF54LM20ASeeed Studio XIAO nRF54LM20A Sense
处理器Arm® Cortex®-M33 128 MHz & RISC-V 128 MHz 协处理器
RAM512KB
Flash2 MB 非易失性存储器 (NVM)
外部 Flash8MB 板载外部 Flash
PMIC / 电池nPM1300 PMIC,用于电源调节和电池充电
接口

28x GPIO 引脚
9x 模拟引脚
1x I2C
1x UART
1x SPI
1x NFC
1x SHPHLD

板载器件

1x 用户 LED(R/G/B 三色)
1x 充电 LED(电池充电指示灯)
1x 复位按钮
1x 用户按钮
1x IPEX4 连接器(用于外接天线)

1x 用户 LED(R/G/B 三色)
1x 充电 LED(电池充电指示灯)
1x 复位按钮
1x 用户按钮
1x IPEX4 连接器(用于外接天线)
1x 六轴 IMU
1x PDM 麦克风

无线连接

Bluetooth LE 6.0(包含 Channel Sounding)
Bluetooth Mesh
NFC
Thread
Zigbee
Matter
Amazon Sidewalk
专有 2.4 GHz 协议

电源输入

Type-C:5V
电池:3.7V

低功耗模式 (3.7V@2A)/

轻睡眠:约 9.96µA
深度睡眠(系统关闭):约 4.76µA
深度睡眠(系统关闭,GRTC 唤醒):约 4.92µA
船运模式:0.33µA

软件兼容性

Nordic nRF Connect SDK(基于 Zephyr RTOS)
PlatformIO(基于 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 引脚功能芯片引脚描述
电源引脚
VBUSVBUS-5V 电源输入/输出
GNDGND-
3V33V3-OUT-3.3V 电源输出
BAT+BAT+-电池输入(通过 I²C 由 nPM1300 监测)
BAT-BAT--电池负极端子
SHPHLDSHPHLD-PMIC 船运/休眠模式控制(超低功耗出厂状态)
系统与控制引脚
RESETRESET-板级复位
SWCLKSWCLKnRF54LM20A SWCLK / SAMD11 SWCLK串行线时钟(用于 nRF54 和 SAMD11)
SWDIOSWDIOnRF54LM20A SWDIO / SAMD11 SWDIO串行线数据(用于 nRF54 和 SAMD11)
SAMD11_RESETRESETSAMD11 RESETSAMD11 协处理器复位
用户与 LED 引脚
-USER_BUTTONP0.09用户按钮输入
-RGB-BP1.23板载 RGB LED 蓝色通道
-RGB-GP1.24板载 RGB LED 绿色通道
-RGB-RP1.22板载 RGB LED 红色通道
模拟输入 (ADC) 引脚
A0AIN0P1.00模拟输入 0 / GPIO
A1AIN1P1.31模拟输入 1 / GPIO
A2AIN2P1.30模拟输入 2 / GPIO
A3AIN3P1.29模拟输入 3 / GPIO
A7AIN7P1.03模拟输入 7 / GPIO
I2C 引脚
SDAI2C_SDAP1.03I2C 数据线(IMU 与外设)
SCLI2C_SCLP1.07I2C 时钟线(IMU 与外设)
-BAT_SDAP1.18电池监测 I2C SDA(nPM1300)
-BAT_SCLP1.17电池监测 I2C SCL(nPM1300)
UART 引脚
TXUART_TXP1.08UART 发送
RXUART_RXP1.09UART 接收
SPI 引脚
MOSISPI_MOSIP1.06SPI 主出从入
MISOSPI_MISOP1.05SPI 主入从出
SCKSPI_SCKP1.04SPI 串行时钟
板载外设引脚
-MIC_DATP1.14麦克风数据线
-MIC_CLKP1.13麦克风时钟线
-IMU_SDAP0.08IMU I2C SDA(板载 IMU)
-IMU_SCLP0.07IMU I2C SCL(板载 IMU)
-IMU_CSP3.12IMU 片选
-IMU_INT1P0.06IMU 中断 1
-NFCP1.02 / P1.01NFC 天线引脚
-GRTCP0.04 / P0.05通用 RTC 引脚

入门指南

在本节中,我们将通过 RGB LED 的多彩闪烁效果,引导你快速上手 XIAO nRF54LM20A。 请完成下面的软硬件准备,以便为后续开发配置好你的 XIAO。

硬件

你需要准备以下物品:

Seeed Studio XIAO nRF54LM20A Sense

软件

为 XIAO nRF54LM20A 配置 PlatformIO

按照以下精简步骤配置你的开发环境,并在 XIAO nRF54LM20A 上部署你的第一个应用。

为 VS Code 安装 PlatformIO IDE 扩展

如果你尚未安装,请在 Visual Studio Code 中直接安装 PlatformIO IDE 扩展。这个强大的扩展可以将 VS Code 打造成一个完整的嵌入式开发环境。

  • 打开 VS Code。
  • 进入扩展视图(Ctrl+Shift+X 或 Cmd+Shift+X)。
  • 搜索 PlatformIO IDE 并点击 Install。

创建一个新的 PlatformIO 工程

在这里你可以选择任意一个开发版本来创建工程文件,这里以 XIAO ESP32 C3 为例。

操作一操作二

为 XIAO nRF54LM20A 的 Zephyr 支持配置 platformio.ini

工程创建完成后,在工程目录根目录中找到 platformio.ini 文件(在左侧 VS Code 资源管理器中可见)。该文件是 PlatformIO 工程配置的核心。

操作三

你需要将 platformio.ini 文件的全部内容替换为以下配置:

[env:seeed-xiao-nrf54lm20a]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-nrf54lm20a

然后重新保存 platformio.ini 文件(Ctrl+S 或 Cmd+S),并等待其完全加载完成。

加载完成后,你可以关闭该工程。此步骤是为了下载必要的库文件。

tip

如果你之前安装过其他 XIAO 库,我们建议使用以下 PlatformIO 命令将该库更新到最新版本。 这是官方推荐的方法。只需在工程根目录中直接运行该命令(无需进入 platform 文件夹):

pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

现在,让我们通过经典的 Blink 示例来测试你的环境配置。该代码会控制 XIAO nRF54LM20A Sense 上的板载 LED 进行闪烁。

下面是下载库的链接。你可以选择将该工程直接下载到本地,然后在 VS Code 中直接打开。或者,你也可以按照以下步骤操作:替换并添加一些示例代码。该过程包括:

tip

Seeed Studio XIAO 系列开发板的定义存储在 platform-seeedboards 仓库中。如果你使用的是 XIAO nRF54LM20A Sense,请确保将该仓库更新到最新版本。


步骤 1:创建一个新工程

操作四

步骤 2:打开工程 你可以先编译一下,查看你拉取的工程是否能正确运行。如果可以,则说明工程拉取成功。 如下图所示:

操作五

步骤 3:替换工程代码

  • 打开 src/main.cZephyr/prj.conf 文件,并将原有代码替换为以下代码。
操作六
src/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;
}

Zephyr/prj.conf
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n
Zephyr/app.overlay
  1. 如果你需要修改或重新定义设备树节点内容,请在 Zephyr 目录中创建一个新的 app.overlay 文件,以显式绑定设备节点。
  2. 如果你已经修改了设备树文件,请在重新构建前清理原有文件,以防止 CMake 无法识别你的更改。
/*
* 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;
};
};

现在,通过 USB 将你的 XIAO nRF54LM20A 连接到电脑。保存、编译并下载后,RGB 灯将开始闪烁。在 VS Code 中:

操作七

终端中的输出应表明编译和烧录过程已成功完成。

代码说明

  • src/main.c 主应用程序入口,实现演示逻辑,包括 LED 颜色配置、呼吸效果、闪烁节奏控制、基于按键的模式切换以及其他硬件交互行为。

  • zephyr/prj.conf Zephyr RTOS 配置文件,用于启用/禁用系统组件和外设驱动,包括日志、UART、PWM、I2C、SPI、低功耗管理等功能。

观察结果

蓝牙天线

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

Bluetooth antenna connection

电池使用

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

Battery wiring
caution

焊接时请注意不要将正负极短路,以免烧毁电池和设备。 如果电池本身带电,切勿直接焊接到电路板上,否则可能烧毁电路板。在电路带电的情况下发生短路风险极大,建议使用转接头。

电池使用说明:

  1. 请使用符合规格要求的合格电池。
  2. 使用电池时,XIAO 仍可通过数据线连接到你的电脑设备,请放心,XIAO 内置电路保护芯片,使用安全。

电池电压检测

XIAO nRF54LM20A 集成了电池电压检测功能,核心是利用 nPM1300-CAA 负载开关高效管理电池电量测量。本指南将重点分析电池检测的软实现 (尤其是 main.c 代码),并指导你如何在 PlatformIO 环境中轻松部署和使用该功能,从而避免 Zephyr NCS SDK 的复杂性。

XIAO nRF54L15 BLE Advertising Power Consumption

电池检测原理图

nPM1300-CAA 芯片的作用:

nPM1300-CAA 是一款高度集成的电源管理 IC(PMIC),替代了 TPS22916 的简单负载开关功能。它不仅控制用于低功耗监测的电池电压切换,还集成了充电、稳压以及精确的电量计量(通过电压、电流、温度),以最大化 nRF54LM20A 的电池寿命。


note

下面的示例同时适用于 PlatformIO 和 nRF Connect SDK。在 PlatformIO 中可以直接使用,而在 SDK 中则需要手动添加文件。请参考此链接

外设概览

该开发板上的外设电路包括 IMU 和麦克风。你可以在下图中看到它们的位置:

IMU and microphone locations

IMU

XIAO nRF54LM20A 搭载 LSM6DS3TR-C IMU,支持 6 轴加速度计、陀螺仪和磁力计。

MIC

XIAO nRF54LM20A 配备 MSM261DGT006 麦克风,支持 16 位音频采集。

常见问题

问题 1:在 macOS 上卡在 Reading CMake configuration 步骤

在 macOS 上使用 PlatformIO 编译和上传程序时,即使排除了网络问题,流程仍可能卡在 Reading CMake configuration 步骤。这通常是由于 macOS 兼容性问题导致基于 Python 的 arm-none-eabi-gdb-py 工具无法正常运行。

推荐解决方法: 使用符号链接替换损坏的 gdb-py 文件。

  1. 进入工具目录: /Users/mengdu/.platformio/packages/[email protected]/bin/
  2. 通过重命名将原文件 arm-none-eabi-gdb-py 备份为 arm-none-eabi-gdb-py.broken.bak
  3. 创建一个名为 arm-none-eabi-gdb-py 的新符号链接,指向 arm-none-eabi-gdb

问题 2:修改配置文件后构建报错

如果你之前构建过完整的 Zephyr 工程,之后又修改了配置文件,建议在重新构建和上传前清理构建缓存。这样可以避免由于缓存文件过期或损坏而导致的编译错误。

pio run -t clean  // Clean command

问题 3:修改配置文件后构建报错

有些 USB 线只能供电,不能传输数据。如果你没有 USB 线,或者不确定你的 USB 线是否可以传输数据,可以查看 Seeed USB Type-C 支持 USB 3.1

资源

Seeed Studio XIAO nRF54LM20A

硬件设计

Seeed Studio XIAO nRF54LM20A Sense

硬件设计

技术支持与产品讨论

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

Loading Comments...