Introdução ao Seeed Studio XIAO nRF54LM20A Sense

Introdução
Seeed Studio XIAO nRF54LM20A Sense é uma placa de desenvolvimento sem fio compacta e de consumo ultrabaixo, construída em torno do SoC nRF54LM20A da Nordic Semiconductor. Ela combina um processador Arm Cortex-M33 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, conectividade sem fio multiprotocolo de 2,4 GHz, IMU onboard, microfone digital, flash externo de 8 MB, conector de antena IPEX e PMIC nPM1300 para aplicações avançadas de IoT alimentadas por bateria, vestíveis, de detecção inteligente e de IA de borda.
Especificações
| Nome do Produto | Seeed Studio XIAO nRF54LM20A | Seeed Studio XIAO nRF54LM20A Sense |
|---|---|---|
| Processador | Arm® Cortex®-M33 128 MHz & Coprocessador RISC-V 128 MHz | |
| RAM | 512KB | |
| Flash | 2 MB de memória não volátil (NVM) | |
| Flash Externa | 8MB de flash externa onboard | |
| PMIC / Bateria | PMIC nPM1300 para regulação de energia e carregamento de bateria | |
| Interface | 28x pinos GPIO | |
| Onboard | 1x LED de usuário (R/G/B 3 cores) | 1x LED de usuário (R/G/B 3 cores) |
| Conectividade sem fio | Bluetooth LE 6.0 (inclui Channel Sounding) | |
| Entrada de energia | Type-C: 5V | |
| Modo de baixo consumo (3.7V@2A) | / | Light-Sleep: ~9.96µA |
| Compatibilidade de software | Nordic nRF Connect SDK (baseado em Zephyr RTOS) | |
| Temperatura de operação | -20°C a 70°C | |
| Dimensões | 21 x 17.8mm | |
Recursos
-
SoC poderoso com conectividade e segurança avançadas
Seeed Studio XIAO nRF54LM20A Sense é uma placa de desenvolvimento sem fio compacta e de consumo ultrabaixo, alimentada pelo SoC nRF54LM20A da Nordic Semiconductor. Ela apresenta um processador Arm Cortex-M33 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, um coprocessador RISC-V de 128 MHz, conectividade sem fio multiprotocolo de 2,4 GHz, IMU onboard, microfone digital, flash externa de 8MB, conector de antena IPEX e PMIC Nordic nPM1300 para gerenciamento de energia eficiente. Com suporte para Bluetooth LE, Bluetooth Channel Sounding, Bluetooth Mesh, Thread, Zigbee, Matter e protocolos proprietários de 2,4 GHz de até 4 Mbps, esta placa foi criada para produtos conectados de próxima geração. Os sensores de movimento e áudio onboard a tornam ideal para vestíveis, detecção inteligente, TinyML, reconhecimento de gestos, dispositivos acionados por voz e aplicações de IoT alimentadas por bateria.
-
Eficiência de energia ultrabaixa
Baseado no Nordic nRF54LM20A e no PMIC nPM1300, o XIAO nRF54LM20A Sense atinge uma corrente de deep sleep medida de apenas 4,76 µA sob alimentação BAT. Combinado com o PMIC nPM1300 e sua corrente BAT de 0,33 µA em Ship Mode, em operação sem fio ativa ele registra uma corrente média de 3,87 mA com uma entrada de bateria simulada de 3,7 V e potência de TX ajustada para +8 dBm; a placa é ideal para aplicações de detecção alimentadas por bateria de longa duração, vestíveis e dispositivos de IoT sempre ligados.
-
Experiência de desenvolvimento simplificada
Suporte completo para Nordic nRF Connect SDK e PlatformIO (Zephyr) permite fluxos de trabalho eficientes de desenvolvimento embarcado. (Observação: Arduino IDE atualmente não é suportado)
Visão geral de hardware
| Lista de pinos do XIAO nRF54LM20A |
|---|
![]() |
![]() |
Mapa de pinos
| Pino XIAO | Função | Pino do chip | Descrição |
|---|---|---|---|
| Pinos de energia | |||
| VBUS | VBUS | - | Entrada/Saída de energia de 5V |
| GND | GND | - | Terra |
| 3V3 | 3V3-OUT | - | Saída de energia de 3,3V |
| BAT+ | BAT+ | - | Entrada de bateria (monitorada pelo nPM1300 via I²C) |
| BAT- | BAT- | - | Terminal negativo da bateria |
| SHPHLD | SHPHLD | - | Controle de modo Ship/Hibernate do PMIC (estado de envio de ultrabaixo consumo) |
| Pinos de sistema e controle | |||
| RESET | RESET | - | Reset da placa |
| SWCLK | SWCLK | nRF54LM20A SWCLK / SAMD11 SWCLK | Clock de fio serial (para nRF54 e SAMD11) |
| SWDIO | SWDIO | nRF54LM20A SWDIO / SAMD11 SWDIO | Dados de fio serial (para nRF54 e SAMD11) |
| SAMD11_RESET | RESET | SAMD11 RESET | Reset do coprocessador SAMD11 |
| Pinos de usuário e LED | |||
| - | USER_BUTTON | P0.09 | Entrada do botão de usuário |
| - | RGB-B | P1.23 | Canal azul do LED RGB onboard |
| - | RGB-G | P1.24 | Canal verde do LED RGB onboard |
| - | RGB-R | P1.22 | Canal vermelho do LED RGB onboard |
| Pinos 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 |
| Pinos I2C | |||
| SDA | I2C_SDA | P1.03 | Linha de dados I2C (IMU e periférico) |
| SCL | I2C_SCL | P1.07 | Linha de clock I2C (IMU e periférico) |
| - | BAT_SDA | P1.18 | SDA I2C do monitor de bateria (nPM1300) |
| - | BAT_SCL | P1.17 | SCL I2C do monitor de bateria (nPM1300) |
| Pinos UART | |||
| TX | UART_TX | P1.08 | Transmissão UART |
| RX | UART_RX | P1.09 | Recepção UART |
| Pinos 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 | Clock serial SPI |
| Pinos de periféricos onboard | |||
| - | MIC_DAT | P1.14 | Linha de dados do microfone |
| - | MIC_CLK | P1.13 | Linha de clock do microfone |
| - | IMU_SDA | P0.08 | SDA I2C da IMU (IMU onboard) |
| - | IMU_SCL | P0.07 | SCL I2C da IMU (IMU onboard) |
| - | IMU_CS | P3.12 | Chip Select da IMU |
| - | IMU_INT1 | P0.06 | Interrupção 1 da IMU |
| - | NFC | P1.02 / P1.01 | Pinos de antena NFC |
| - | GRTC | P0.04 / P0.05 | Pinos RTC de uso geral |
Introdução
Nesta seção, vamos guiá-lo para começar rapidamente com o XIAO nRF54LM20A por meio do efeito de piscar em várias cores de um LED RGB. Conclua as preparações de hardware e software abaixo para configurar seu XIAO para o desenvolvimento subsequente.
Hardware
Você precisa preparar o seguinte:
- 1 x Seeed Studio XIAO nRF54LM20A
- 1 x Computador
- 1 x Cabo USB Type-C
| Seeed Studio XIAO nRF54LM20A Sense |
|---|
![]() |
Software
Configurando o PlatformIO para o XIAO nRF54LM20A
Siga estas etapas simplificadas para configurar seu ambiente de desenvolvimento e implantar seu primeiro aplicativo no XIAO nRF54LM20A.
Instalar a extensão PlatformIO IDE para o VS Code
Se ainda não o fez, instale a extensão PlatformIO IDE diretamente no Visual Studio Code. Esta poderosa extensão transforma o VS Code em um ambiente completo de desenvolvimento embarcado.
- Abra o VS Code.
- Vá para a visualização de Extensões (Ctrl+Shift+X ou Cmd+Shift+X).
- Procure por PlatformIO IDE e clique em Install.
Criar um novo projeto PlatformIO
Aqui você pode escolher qualquer uma das versões de desenvolvimento para criar um arquivo de projeto, eu uso o XIAO ESP32 C3 como exemplo.
| Operação um | Operação dois |
|---|---|
![]() | ![]() |
Configurar o platformio.ini para suporte ao Zephyr no XIAO nRF54LM20A
Depois que o projeto for criado, localize o arquivo platformio.ini na raiz do diretório do seu projeto (visível no Explorador do VS Code à esquerda). Este arquivo é o coração da configuração do seu projeto PlatformIO.
| Operação três |
|---|
![]() |
Você precisa substituir todo o conteúdo do seu arquivo platformio.ini pela seguinte configuração:
[env:seeed-xiao-nrf54lm20a]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-nrf54lm20a
Em seguida, salve novamente o arquivo platformio.ini (Ctrl+S ou Cmd+S) e aguarde até que ele seja carregado completamente.
Você pode fechar este projeto assim que o carregamento for concluído. Esta etapa serve para baixar os arquivos de biblioteca necessários.
Se você já instalou outras bibliotecas XIAO antes, recomendamos atualizar esta biblioteca para a versão mais recente usando o seguinte comando do PlatformIO. Este é o método oficialmente recomendado. Basta executar o comando diretamente no diretório raiz do seu projeto (não é necessário navegar até a pasta platform):
pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

Compile e envie seu primeiro exemplo Blink
Agora, vamos testar sua configuração com um clássico exemplo Blink. Este código irá alternar o LED embutido no seu XIAO nRF54LM20A Sense.
Abaixo está o link para baixar a biblioteca. Você pode optar por baixar este projeto diretamente para sua máquina local e, em seguida, abri-lo diretamente no VS Code. Como alternativa, você pode seguir estas etapas: substituir e adicionar algum código de demonstração. Este processo envolve:
As definições para as placas de desenvolvimento da série Seeed Studio XIAO são armazenadas no repositório platform-seeedboards. Se você estiver usando o XIAO nRF54LM20A Sense, certifique-se de atualizar este repositório para a versão mais recente.
Etapa 1: Criar um novo projeto
| Operação quatro |
|---|
![]() |
Etapa 2: Abrir o projeto Você pode compilá-lo primeiro para ver se o projeto que você puxou é executado corretamente. Se for, o projeto foi puxado com sucesso. Imagem abaixo:
| Operação cinco |
|---|
![]() |
Etapa 3: Substituir o código do projeto
- Abra os arquivos src/main.c e Zephyr/prj.conf e substitua o código original pelo código a seguir.
| Operação seis |
|---|
![]() |
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
- Se você precisar modificar ou redefinir o conteúdo de nós da device tree, crie um novo arquivo app.overlay no diretório do Zephyr para vincular explicitamente os nós do dispositivo.
- Se você tiver modificado os arquivos da device tree, limpe os arquivos originais antes de recompilar para evitar que o CMake deixe de reconhecer suas alterações.
/*
* 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;
};
};
Agora, conecte seu XIAO nRF54LM20A ao computador via USB. Após salvar, compilar e fazer o download, a luz RGB começará a piscar. No VS Code:
| Operação sete |
|---|
![]() |
A saída no terminal deve indicar um processo de compilação e gravação bem-sucedido.
Explicação do Código
-
src/main.c Ponto de entrada principal da aplicação que implementa a lógica de demonstração, incluindo configuração de cor do LED, efeitos de respiração, controle de ritmo de piscar, troca de modo baseada em botão e outros comportamentos de interação com o hardware.
-
zephyr/prj.conf Arquivo de configuração do Zephyr RTOS para habilitar/desabilitar componentes do sistema e drivers de periféricos, incluindo registro de logs, UART, PWM, I2C, SPI, gerenciamento de baixo consumo de energia e outras funcionalidades.
Observe o Resultado

Antena Bluetooth
Esta placa utiliza uma antena Bluetooth externa. Para garantir uma melhor qualidade de sinal Bluetooth e aprimorar sua experiência de uso, recomenda-se instalar uma antena Bluetooth. O método de conexão é mostrado abaixo:

Uso da Bateria
O XIAO nRF54LM20A é capaz de usar uma bateria de lítio de 3,7 V como entrada de alimentação. Você pode consultar o diagrama a seguir para o método de fiação.

Tenha cuidado para não causar curto-circuito entre os terminais positivo e negativo e queimar a bateria e o equipamento durante a soldagem. Se a bateria estiver com carga, nunca a solde na placa, pois isso pode queimar a placa de circuito. Um curto-circuito enquanto o circuito estiver energizado representa um risco significativo; recomenda-se usar um adaptador.
Instruções sobre o uso de baterias:
- Utilize baterias qualificadas que atendam às especificações.
- O XIAO pode ser conectado ao seu dispositivo computador via cabo de dados enquanto utiliza a bateria; fique tranquilo, pois o XIAO possui um chip de proteção de circuito integrado, sendo seguro.
Detecção de Tensão da Bateria
O XIAO nRF54LM20A integra um recurso de detecção de tensão da bateria que se concentra em gerenciar de forma eficiente as medições de energia da bateria usando o load switch nPM1300-CAA. Este guia se concentrará em analisar a implementação de software da detecção de bateria (especialmente o código main.c) e orientá-lo sobre como implantar e usar facilmente esse recurso em um ambiente PlatformIO, evitando a complexidade do Zephyr NCS SDK.

Esquemático de Detecção da Bateria
O que o chip nPM1300-CAA faz:
O nPM1300-CAA é um CI de gerenciamento de energia (PMIC) altamente integrado que substitui a função simples de load switch do TPS22916. Ele não apenas controla a comutação da tensão da bateria para monitoramento de baixo consumo, mas também integra carregamento, regulação e medição precisa do nível de carga (via tensão, corrente, temperatura) para maximizar a vida útil da bateria do nRF54LM20A.
O exemplo a seguir funciona tanto para PlatformIO quanto para nRF Connect SDK. Ele pode ser usado diretamente no PlatformIO, enquanto o SDK exige a adição manual de arquivos. Consulte este link
Visão Geral dos Periféricos
A circuitaria periférica desta placa inclui um IMU e um microfone. Você pode ver suas localizações no diagrama abaixo:

IMU
O XIAO nRF54LM20A possui um IMU LSM6DS3TR-C, com suporte a acelerômetro, giroscópio e magnetômetro de 6 eixos.
MIC
O XIAO nRF54LM20A está equipado com um microfone MSM261DGT006, com suporte a captura de áudio de 16 bits.
FAQ
Problema 1: Travado em Reading CMake configuration no macOS
Ao compilar e enviar programas com o PlatformIO no macOS, o processo pode ficar travado na etapa Reading CMake configuration mesmo após descartar problemas de rede. Isso geralmente é causado por um problema de compatibilidade do macOS que impede a execução correta da ferramenta baseada em Python arm-none-eabi-gdb-py.
Correção recomendada: Substituir o arquivo gdb-py com defeito por um link simbólico.
- Navegue até o diretório da ferramenta:
/Users/mengdu/.platformio/packages/[email protected]/bin/ - Faça backup do arquivo original renomeando
arm-none-eabi-gdb-pyparaarm-none-eabi-gdb-py.broken.bak. - Crie um novo link simbólico chamado
arm-none-eabi-gdb-pyque aponte paraarm-none-eabi-gdb.
Problema 2: Erros de compilação após modificar arquivos de configuração
Se você compilou anteriormente o projeto completo do Zephyr e depois modificou arquivos de configuração, é recomendável limpar o cache de compilação antes de recompilar e enviar. Isso ajuda a evitar erros de compilação causados por arquivos de cache antigos ou corrompidos.
pio run -t clean // Clean command
Problema 3: Erros de compilação após modificar arquivos de configuração
Alguns cabos USB podem apenas fornecer energia e não transferir dados. Se você não tiver um cabo USB ou não souber se o seu cabo USB pode transmitir dados, você pode verificar o Seeed USB Type-C com suporte a USB 3.1.
Recursos
Seeed Studio XIAO nRF54LM20A
Projeto de Hardware
- 📄[Datasheet] Nordic nRF54LM20A Datasheet
- 📄[Schematic] Esquemático do XIAO nRF54LM20A
- 🗃️[Arquivos de Projeto de PCB] Projeto KiCad do XIAO nRF54LM20A
- 🗃️[Bibliotecas de Projeto de PCB]
- 📄[Diagrama de Pinagem]Folha de Pinagem do XIAO nRF54LM20A
Seeed Studio XIAO nRF54LM20A Sense
Design de hardware
- 📄[Datasheet] Nordic nRF54LM20A Datasheet
- 📄[Schematic] Esquemático do XIAO nRF54LM20A Sense
- 🗃️[PCB Design Files] Projeto KiCad do XIAO nRF54LM20A
- 🗃️[PCB Design Libraries]
- 📄[Pinout Diagram]Folha de pinagem do XIAO nRF54LM20A Sense
Suporte técnico e discussão sobre o produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.









