Introducción a XIAO nRF54LM20A Sense

Introducción
Seeed Studio XIAO nRF54LM20A Sense es una placa de desarrollo inalámbrica compacta y de ultra bajo consumo basada en el SoC nRF54LM20A de Nordic Semiconductor. Combina un procesador Arm Cortex-M33 a 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, conectividad inalámbrica multiprotocolo de 2,4 GHz, IMU integrada, micrófono digital, 8 MB de flash externa, conector de antena IPEX y PMIC nPM1300 para aplicaciones avanzadas de IoT alimentadas por batería, wearables, sensado inteligente y Edge AI.
Especificaciones
| Nombre del producto | Seeed Studio XIAO nRF54LM20A | Seeed Studio XIAO nRF54LM20A Sense |
|---|---|---|
| Procesador | Arm® Cortex®-M33 128 MHz & coprocesador RISC-V 128 MHz | |
| RAM | 512KB | |
| Flash | 2 MB de memoria no volátil (NVM) | |
| Flash externa | 8MB de flash externa integrada | |
| PMIC / Batería | PMIC nPM1300 para regulación de energía y carga de batería | |
| Interfaz | 28x Pin GPIO | |
| Integrado en placa | 1x LED de usuario (R/G/B 3 colores) | 1x LED de usuario (R/G/B 3 colores) |
| Conectividad inalámbrica | Bluetooth LE 6.0 (incluye Channel Sounding) | |
| Entrada de alimentación | Type-C: 5V | |
| Modo de bajo consumo (3.7V@2A) | / | Light-Sleep: ~9.96µA |
| Compatibilidad de software | Nordic nRF Connect SDK (basado en Zephyr RTOS) | |
| Temperatura de trabajo | -20°C a 70°C | |
| Dimensiones | 21 x 17.8mm | |
Características
-
Potente SoC con conectividad y seguridad avanzadas
Seeed Studio XIAO nRF54LM20A Sense es una placa de desarrollo inalámbrica compacta y de ultra bajo consumo impulsada por el SoC nRF54LM20A de Nordic Semiconductor. Incorpora un procesador Arm Cortex-M33 a 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, un coprocesador RISC-V a 128 MHz, conectividad inalámbrica multiprotocolo de 2,4 GHz, IMU integrada, micrófono digital, 8MB de flash externa, conector de antena IPEX y PMIC Nordic nPM1300 para una gestión de energía eficiente. Con soporte para Bluetooth LE, Bluetooth Channel Sounding, Bluetooth Mesh, Thread, Zigbee, Matter y protocolos propietarios de 2,4 GHz de hasta 4 Mbps, esta placa está diseñada para productos conectados de próxima generación. Los sensores de movimiento y audio integrados la hacen ideal para wearables, sensado inteligente, TinyML, reconocimiento de gestos, dispositivos activados por voz y aplicaciones IoT alimentadas por batería.
-
Eficiencia de ultra bajo consumo
Basada en Nordic nRF54LM20A y el PMIC nPM1300, XIAO nRF54LM20A Sense alcanza una corriente de deep sleep medida de solo 4.76 µA bajo alimentación BAT. Combinada con el PMIC nPM1300 y su corriente BAT de 0.33 µA en Ship Mode, en operación inalámbrica activa registra una corriente media de 3.87 mA con una entrada de batería simulada de 3.7 V y la potencia de transmisión ajustada a +8 dBm; la placa es ideal para aplicaciones de sensado alimentadas por batería de larga duración, wearables y dispositivos IoT siempre encendidos.
-
Experiencia de desarrollo simplificada
La compatibilidad total con Nordic nRF Connect SDK y PlatformIO (Zephyr) permite flujos de trabajo de desarrollo embebido eficientes.
Descripción general del hardware
- XIAO nRF54LM20A
- XIAO nRF54LM20A Sense
Mapa de pines
| Pin XIAO | Función | Pin del chip | Descripción |
|---|---|---|---|
| Pines de alimentación | |||
| VBUS | VBUS | - | Entrada/Salida de alimentación de 5V |
| GND | GND | - | Tierra |
| 3V3 | 3V3-OUT | - | Salida de alimentación de 3.3V |
| BAT+ | BAT+ | - | Entrada de batería (monitorizada por nPM1300 vía I²C) |
| BAT- | BAT- | - | Terminal negativo de la batería |
| SHPHLD | SHPHLD | - | Control de modo Ship/Hibernate del PMIC (estado de envío de ultra bajo consumo) |
| Pines de sistema y control | |||
| RESET | RESET | - | Reinicio de la placa |
| SWCLK | SWCLK | nRF54LM20A SWCLK / SAMD11 SWCLK | Reloj de cable serie (para nRF54 y SAMD11) |
| SWDIO | SWDIO | nRF54LM20A SWDIO / SAMD11 SWDIO | Datos de cable serie (para nRF54 y SAMD11) |
| SAMD11_RESET | RESET | SAMD11 RESET | Reinicio del coprocesador SAMD11 |
| Pines de usuario y LED | |||
| - | USER_BUTTON | P0.09 | Entrada del botón de usuario |
| - | RGB-B | P1.23 | Canal azul del LED RGB integrado |
| - | RGB-G | P1.24 | Canal verde del LED RGB integrado |
| - | RGB-R | P1.22 | Canal rojo del LED RGB integrado |
| Pines de entrada analógica (ADC) | |||
| A0 | AIN0 | P1.00 | Entrada analógica 0 / GPIO |
| A1 | AIN1 | P1.31 | Entrada analógica 1 / GPIO |
| A2 | AIN2 | P1.30 | Entrada analógica 2 / GPIO |
| A3 | AIN3 | P1.29 | Entrada analógica 3 / GPIO |
| A7 | AIN7 | P1.03 | Entrada analógica 7 / GPIO |
| Pines I2C | |||
| SDA | I2C_SDA | P1.03 | Línea de datos I2C (IMU y periféricos) |
| SCL | I2C_SCL | P1.07 | Línea de reloj I2C (IMU y periféricos) |
| - | BAT_SDA | P1.18 | SDA I2C del monitor de batería (nPM1300) |
| - | BAT_SCL | P1.17 | SCL I2C del monitor de batería (nPM1300) |
| Pines UART | |||
| TX | UART_TX | P1.08 | Transmisión UART |
| RX | UART_RX | P1.09 | Recepción UART |
| Pines SPI | |||
| MOSI | SPI_MOSI | P1.06 | SPI Master Out Slave In |
| MISO | SPI_MISO | P1.05 | SPI Master In Slave Out |
| SCK | SPI_SCK | P1.04 | Reloj serie SPI |
| Pines de periféricos integrados | |||
| - | MIC_DAT | P1.14 | Línea de datos del micrófono |
| - | MIC_CLK | P1.13 | Línea de reloj del micrófono |
| - | IMU_SDA | P0.08 | SDA I2C de la IMU (IMU integrada) |
| - | IMU_SCL | P0.07 | SCL I2C de la IMU (IMU integrada) |
| - | IMU_CS | P3.12 | Selección de chip de la IMU |
| - | IMU_INT1 | P0.06 | Interrupción 1 de la IMU |
| - | NFC | P1.02 / P1.01 | Pines de antena NFC |
| - | GRTC | P0.04 / P0.05 | Pines RTC de propósito general |
Primeros pasos con PlatformIO
En esta sección, te guiaremos para comenzar rápidamente con la XIAO nRF54LM20A mediante el efecto de parpadeo multicolor de un LED RGB. Completa las siguientes preparaciones de hardware y software para configurar tu XIAO para el desarrollo posterior.
Preparación de hardware
Necesitas preparar lo siguiente:
- 1 x Seeed Studio XIAO nRF54LM20A Sense
- 1 x Ordenador
- 1 x Cable USB Tipo‑C
| Seeed Studio XIAO nRF54LM20A Sense |
|---|
![]() |
Descargar VS Code
Descarga VS Code según el sistema que estés utilizando

Instalar la extensión PlatformIO
Abre VSCode, haz clic en Extensions, luego busca PlatformIO y selecciona instalar. Después de completar la instalación, reinicia VSCode.

Instalar el paquete de plataforma platform-seeedboards
Las placas de la serie Seeed Studio XIAO utilizan una plataforma personalizada de PlatformIO, por lo que necesitas instalar manualmente el paquete de plataforma correspondiente.
- Ejecuta el siguiente comando para una instalación nueva:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

- Si has utilizado anteriormente placas de la serie Seeed Studio XIAO en PlatformIO, ejecuta el siguiente comando para actualizar:
pio pkg uninstall -g -p "SeeedStudio" && pio pkg install -g -p "SeeedStudio=https://github.com/Seeed-Studio/platform-seeedboards.git" --force

Si quieres usar un proyecto existente de PlatformIO, reemplaza el contenido de platformio.ini como se muestra a continuación:
[env:seeed-xiao-nrf54lm20a]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-nrf54lm20a
Crear un nuevo proyecto
- Abre la extensión PlatformIO y selecciona Create New Project.

- Configura el nombre del proyecto, selecciona la placa de desarrollo, el framework y la ruta de almacenamiento de archivos.

- Después de que se complete la creación, aparecerá un aviso para abrir el espacio de trabajo. Haz clic en OK.

- Navega a la carpeta del proyecto. Los archivos se almacenan en el directorio predeterminado si no especificaste una ruta personalizada.
- Para Windows (predeterminado):
<path>: C:\Users\your_name\Documents\PlatformIO\Projects
- Para Mac / Linux (predeterminado):
<path>: ~/Documents/PlatformIO/Projects

Añadir el programa Blink
Este tutorial está desarrollado sobre Zephyr RTOS. El proyecto consta de tres archivos principales:
main.c: Programa principal que contiene la lógica de la aplicación.app.overlay: Archivo de superposición Devicetree para la configuración de periféricos de hardware.prj.conf: Archivo de configuración del proyecto para habilitar los módulos necesarios de Zephyr.

- Añadir el programa 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_led0)
#define LED_G_NODE DT_ALIAS(pwm_led2)
#define LED_B_NODE DT_ALIAS(pwm_led1)
#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;
}
- Añadir el archivo app.overlay
El archivo de superposición Devicetree no existe en el ejemplo en blanco recién creado. Necesitas añadirlo en el directorio 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 (Red LED) -> pwm_led0
* - Channel 1: P1.23 (Blue 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_INVERTED>;
label = "Red LED";
};
pwm_led1: pwm_led_1 {
pwms = <&pwm20 1 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
label = "Blue LED";
};
pwm_led2: pwm_led_2 {
pwms = <&pwm20 2 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
label = "Green LED";
};
};
};
/ {
aliases {
pwm-led0 = &pwm_led0;
pwm-led1 = &pwm_led1;
pwm-led2 = &pwm_led2;
};
};
- Modifica
prj.confy habilita las configuraciones correspondientes.
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n
Compilar y subir el programa
A continuación se presentan dos métodos para la compilación y la carga.
- Compilar y subir mediante botón

- Compilar y subir mediante línea de comandos
pio run -e seeed-xiao-nrf54lm20a -t upload -v

Observar el resultado

Antena Bluetooth
Esta placa utiliza una antena Bluetooth externa. Para garantizar una mejor calidad de la señal Bluetooth y mejorar tu experiencia de uso de Bluetooth, se recomienda instalar una antena Bluetooth. El método de conexión se muestra a continuación:

Uso de la batería
La XIAO nRF54LM20A es capaz de utilizar una batería de litio de 3,7 V como entrada de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

Por favor, ten cuidado de no provocar un cortocircuito entre los terminales positivo y negativo y quemar la batería y el equipo al soldar. Si la batería tiene carga, nunca la sueldes a la placa, ya que esto puede quemar la placa de circuito. Provocar un cortocircuito mientras el circuito está alimentado supone un riesgo significativo; se recomienda utilizar un adaptador.
Instrucciones sobre el uso de baterías:
- Utiliza baterías cualificadas que cumplan las especificaciones.
- XIAO puede conectarse a tu ordenador mediante un cable de datos mientras utilizas la batería; ten la seguridad de que XIAO tiene un chip de protección de circuito integrado, por lo que es seguro.
Efecto de funcionamiento del indicador de carga
Este ejemplo controla el LEDDRV1 integrado leyendo los estados de VBUS, VBAT e IBAT del nPM1300: el LED se enciende durante la carga y se apaga cuando la batería está completamente cargada, no hay batería conectada o se desconecta el cable USB. Mientras tanto, el programa envía por el puerto serie el voltaje de la batería, la corriente de carga y el estado de carga para facilitar la supervisión del proceso de carga.
Detección del voltaje de la batería
El XIAO nRF54LM20A integra una función de detección de voltaje de batería que se centra en gestionar de forma eficiente las mediciones de potencia de la batería utilizando el interruptor de carga nPM1300-CAA. Esta guía se centrará en analizar la implementación de software de la detección de batería (especialmente el código main.c) y te guiará sobre cómo desplegar y utilizar fácilmente esta función en un entorno PlatformIO, evitando la complejidad del SDK Zephyr NCS.

Esquema de detección de batería
Lo que hace el chip nPM1300-CAA:
nPM1300-CAA es un circuito integrado de gestión de energía (PMIC) altamente integrado que sustituye la simple función de interruptor de carga del TPS22916. No solo controla la conmutación del voltaje de la batería para la monitorización de bajo consumo, sino que también integra carga, regulación y una medición precisa del estado de la batería (mediante voltaje, corriente y temperatura) para maximizar la vida útil de la batería del nRF54LM20A.
El siguiente ejemplo funciona tanto para PlatformIO como para nRF Connect SDK. Puede utilizarse directamente en PlatformIO, mientras que en el SDK es necesario añadir los archivos manualmente. Consulta este enlace
Descripción general de los periféricos
El circuito periférico de esta placa incluye un IMU y un micrófono. Puedes ver su ubicación en el siguiente diagrama:

IMU
El XIAO nRF54LM20A Sense incorpora un IMU LSM6DS3TR-C con un acelerómetro de 3 ejes y un giróscopo de 3 ejes.
MIC
El XIAO nRF54LM20A Sense está equipado con un micrófono digital MSM261DGT006 para la captura de audio.
Preguntas frecuentes
P1: ¿Qué debo hacer si encuentro errores de compilación después de modificar los archivos de configuración?
Si anteriormente compilaste el proyecto y luego modificaste archivos de configuración (como prj.conf, app.overlay o CMakeLists.txt), se recomienda limpiar la caché de compilación antes de volver a compilar. Esto ayuda a evitar errores de compilación causados por archivos de caché obsoletos o dañados.
Ejecuta el siguiente comando:
pio run -t clean
P2: ¿Por qué obtengo zsh: command not found: openocd después de la instalación? (macOS)
Este problema suele producirse porque el directorio del ejecutable de OpenOCD no se ha añadido a la variable PATH de tu sistema. Puedes añadirlo permanentemente a tu archivo ~/.zshrc utilizando los siguientes comandos.
Nota: Esta solución es solo para macOS.
echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version
Si el número de versión se muestra correctamente, la configuración se ha completado.
P3: ¿Qué debo hacer si el desplegable de proyectos de PlatformIO falla después de instalar la plataforma Seeed Studio XIAO varias veces?
Si has instalado varias veces diferentes versiones de la plataforma Seeed Studio XIAO para PlatformIO, los paquetes de plataforma duplicados u obsoletos pueden causar conflictos de versión e impedir que los proyectos de PlatformIO se carguen correctamente.
Se recomienda eliminar todos los paquetes antiguos de la plataforma Seeed y dejar que PlatformIO descargue automáticamente la última versión oficial.
Ejecuta el siguiente comando:
rm -rf ~/.platformio/packages/platform-seeed-* ~/.platformio/packages/framework-seeed-*
Después de la limpieza, vuelve a abrir PlatformIO y recompila tu proyecto.
Recursos
Seeed Studio XIAO nRF54LM20A
Diseño de hardware
- 📄[Hoja de datos] Nordic nRF54LM20A Datasheet
- 📄[Esquemático] Esquemático del XIAO nRF54LM20A
- 🗃️[Archivos de diseño de PCB] Proyecto KiCad del XIAO nRF54LM20A
- 🗃️[Librerías de diseño de PCB]
- 📄[Diagrama de pines]Hoja de pines del XIAO nRF54LM20A
Seeed Studio XIAO nRF54LM20A Sense
Diseño de hardware
- 📄[Hoja de datos] Nordic nRF54LM20A Datasheet
- 📄[Esquemático] Esquemático del XIAO nRF54LM20A Sense
- 🗃️[Archivos de diseño de PCB] Proyecto KiCad del XIAO nRF54LM20A
- 🗃️[Librerías de diseño de PCB]
- 📄[Diagrama de pines]Hoja de pines del XIAO nRF54LM20A Sense
Soporte técnico y debate sobre el producto
Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.




