Primeros pasos con Seeed Studio 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
-
SoC potente 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 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 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
Parte frontal de XIAO nRF54LM20A Sense

Parte trasera de 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 de acuerdo con 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 update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

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 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 de 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.

Tenga cuidado de no cortocircuitar los terminales positivo y negativo y quemar la batería y el equipo al soldar. Si la batería tiene energía, nunca la suelde en la placa, ya que esto puede quemar la placa de circuito. Un cortocircuito mientras el circuito está alimentado representa un riesgo significativo; se recomienda utilizar un adaptador.
Instrucciones sobre el uso de baterías:
- Utilice baterías calificadas que cumplan con las especificaciones.
- XIAO se puede conectar a su dispositivo informático mediante un cable de datos mientras usa la batería; puede estar tranquilo, ya 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 energía 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 le guiará sobre cómo desplegar y utilizar fácilmente esta función en un entorno PlatformIO, evitando la complejidad del SDK Zephyr NCS.

Esquemático 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 reemplaza 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 carga (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 agregar archivos manualmente. Consulte este enlace
Descripción general de periféricos
El circuito periférico de esta placa incluye un IMU y un micrófono. Puede ver sus ubicaciones 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
- Errores de compilación después de modificar archivos de configuración
Si anteriormente compiló el proyecto completo de Zephyr y luego modificó archivos de configuración, se recomienda limpiar la caché de compilación antes de volver a compilar y cargar. Esto ayuda a evitar errores de compilación causados por archivos de caché obsoletos o dañados.
pio run -t clean // Clean command
- zsh: command not found: openocd después de la instalación
Al introducir directamente "openocd" en la terminal, el shell solo buscará en los directorios dentro de la variable PATH; si el directorio aún no se ha añadido, indicará que no se puede encontrar el comando. Simplemente añádalo de forma permanente a ~/.zshrc, siguiendo las instrucciones a continuación. Esta solución es solo para usuarios de macOS
echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version
- ¿Qué debo hacer si descargué previamente las placas de la serie Seeed Studio XIAO varias veces y ahora el desplegable del proyecto de la plataforma falla?
Se recomienda limpiar antes de intentarlo de nuevo. Las carpetas duplicadas y obsoletas acumuladas de la plataforma Seeed bajo los paquetes locales de PlatformIO provocan rutas de búsqueda de archivos demasiado largas y conflictos de versiones, lo que da lugar a fallos en la carga del proyecto. Limpie los directorios redundantes de la plataforma Seeed de fuentes mixtas según los pasos siguientes y conserve únicamente la plataforma oficial que PlatformIO descarga automáticamente para evitar conflictos causados por directorios antiguos e incorrectos: Elimine todas las carpetas que comiencen con platform-seeed- y framework-seeed-
rm -rf ~/.platformio/packages/platform-seeed-* ~/.platformio/packages/framework-seeed-*
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
- 🗃️[Bibliotecas 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
- 🗃️[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 ofrecerle diferentes tipos de soporte para garantizar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.
