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 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 引脚

使用 PlatformIO 入门

在本节中,我们将通过 RGB LED 的多色闪烁效果,带你快速上手 XIAO nRF54LM20A。 请先完成下面的软硬件准备,为后续在 XIAO 上的开发做好环境搭建。

硬件准备

你需要准备以下物品:

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"

tip

如果你想使用已有的 PlatformIO 项目,请将 platformio.ini 的内容替换为如下所示:

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

创建新项目

  1. 打开 PlatformIO 扩展,选择 Create New Project

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

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

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

本教程基于 Zephyr RTOS 开发。项目由三个核心文件组成:

  • main.c:包含应用逻辑的主程序。
  • app.overlay:用于硬件外设配置的 Devicetree overlay 文件。
  • prj.conf:用于启用所需 Zephyr 模块的项目配置文件。
  1. 添加 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;
}
  1. 添加 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;
};
};
  1. 修改 prj.conf 并启用相应的配置。
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n

编译并上传程序

下面介绍两种编译和上传的方法。

  1. 通过按钮编译并上传

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

观察运行效果

蓝牙天线

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

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 Sense 搭载了一颗 LSM6DS3TR-C IMU,集成 3 轴加速度计和 3 轴陀螺仪。

MIC

XIAO nRF54LM20A Sense 配备了一颗 MSM261DGT006 数字麦克风,用于音频采集。

常见问题

  1. 修改配置文件后构建报错

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

pio run -t clean  // Clean command
  1. 安装后出现 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
  1. 如果之前多次下载 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

硬件设计

Seeed Studio XIAO nRF54LM20A Sense

硬件设计

技术支持与产品讨论

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

Loading Comments...