Primeros pasos con 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 de 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 memoria 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 y coprocesador RISC-V 128 MHz | |
| RAM | 512KB | |
| Flash | 2 MB de memoria no volátil (NVM) | |
| Flash externa | 8MB de memoria 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 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, un coprocesador RISC-V de 128 MHz, conectividad inalámbrica multiprotocolo de 2,4 GHz, IMU integrada, micrófono digital, 8MB de memoria flash externa, conector de antena IPEX y PMIC Nordic nPM1300 para una gestión de energía eficiente. Con compatibilidad 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 en Ship Mode de 0.33 µA, 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 configurada en +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. (Nota: actualmente no se admite Arduino IDE)
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 | Chip Select 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 Type-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 por defecto:
<path>: C:\Users\your_name\Documents\PlatformIO\Projects
- Para Mac / Linux por defecto:
<path>: ~/Documents/PlatformIO/Projects

Añadir el programa Blink
Este tutorial se desarrolla sobre la base de 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_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;
}
- Añadir el archivo app.overlay
El archivo de superposición Devicetree no existe en el ejemplo en blanco recién creado. Debes 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 (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;
};
};
- 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 cortocircuitar 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. 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 calificadas que cumplan con las especificaciones.
- XIAO se puede conectar a tu dispositivo informático mediante un cable de datos mientras usas la batería; ten la seguridad de que XIAO tiene un chip de protección de circuito integrado, lo cual es seguro.
Detección de voltaje de la batería
El XIAO nRF54LM20A integra una función de detección de voltaje de la 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 nivel de 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. Se puede usar directamente en PlatformIO, mientras que el SDK requiere añadir archivos manualmente. Consulta este enlace
Descripción general de 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 giroscopio 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 tu PATH del 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 diferentes versiones de la plataforma Seeed Studio XIAO de PlatformIO varias veces, 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
- 📄[Datasheet] Nordic nRF54LM20A Datasheet
- 📄[Schematic] Esquemático del XIAO nRF54LM20A
- 🗃️[Archivos de diseño de PCB] Proyecto KiCad del XIAO nRF54LM20A
- 🗃️[Bibliotecas de diseño de PCB]
- 📄[Diagrama de pines]Hoja de pines del XIAO nRF54LM20A
Seeed Studio XIAO nRF54LM20A Sense
Diseño de hardware
- 📄[Datasheet] Nordic nRF54LM20A Datasheet
- 📄[Schematic] Esquemático del XIAO nRF54LM20A Sense
- 🗃️[Archivos de diseño de PCB] Proyecto KiCad del XIAO nRF54LM20A
- 🗃️[Bibliotecas 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.




