Introdução ao XIAO STM32C5

Visão geral
Conheça o primeiro XIAO com STM32. Construído em torno do STM32C5A3CG com um núcleo Arm Cortex-M33 de 144MHz, o XIAO STM32C5 traz conectividade CAN FD, 16MB de Flash externa e um IMU de seis eixos com aquecimento programável para o formato compacto do XIAO. Resistores de aquecimento dedicados ao redor do IMU permitem aquecimento controlado por firmware para projetos de robótica e detecção de movimento. Dois controladores CAN FD nativos, incluindo um canal com um transceptor TCAN3403-Q1 onboard, fornecem um ponto de partida para adaptadores USB‑para‑CAN, sensores conectados e projetos de controle de robôs. USB‑C e carregamento de bateria onboard suportam tanto o desenvolvimento em desktop quanto aplicações portáteis.
Recursos
- O primeiro XIAO com STM32: Construído com o STM32C5A3CG, com um processador Arm Cortex-M33 de 144MHz, suporte a ponto flutuante e instruções DSP para controle embarcado e processamento de sensores.
- Conectividade CAN FD integrada: Dois controladores CAN FD nativos, com um canal conectado a um transceptor TCAN3403-Q1 onboard e pads CANH/CANL acessíveis. Adicione um transceptor externo para usar o segundo canal.
- IMU de 6 eixos com aquecimento programável: O acelerômetro e giroscópio LSM6DS3TR-C onboard são combinados com resistores de aquecimento dedicados ao redor do sensor. O aquecimento controlado por GPIO permite aquecimento programável e, com firmware de feedback de temperatura, regulação de temperatura em malha fechada para ajudar a reduzir a deriva relacionada à temperatura em aplicações de robótica e detecção de movimento.
- Flash externa de 16MB: Armazene dados de aplicação, logs de sensores, arquivos de configuração e registros de mensagens CAN usando o firmware da aplicação.
- Cristal externo para temporização de comunicação: Um cristal externo de alta velocidade onboard fornece uma referência de clock para CAN FD e outras aplicações sensíveis à temporização.
- USB‑C e carregamento de bateria: Desenvolva via USB‑C ou construa dispositivos alimentados por bateria usando o circuito de carregamento de bateria de lítio onboard e pads de conexão de bateria.
- Design compacto e fácil de integrar: O formato XIAO e os pads laterais metalizados suportam prototipagem em breadboard com headers e integração em placas carrier personalizadas.
Especificações
| Item | Especificação |
|---|---|
| Produto | Seeed Studio XIAO STM32C5 |
| Microcontrolador | STMicroelectronics STM32C5A3CG |
| CPU | Arm Cortex-M33 de núcleo único, até 144MHz, com FPU e instruções DSP |
| Encapsulamento do MCU | UFQFPN48 |
| Flash interna de programa | 1MB |
| SRAM | 256KB |
| Flash externa | 16MB |
| Controladores CAN | 2 controladores CAN FD nativos |
| Transceptor CAN onboard | 1 x TI TCAN3403-Q1 |
| Conexão de barramento CAN onboard | Pads CANH/CANL; use o GND da placa como referência de sinal |
| Segundo canal CAN | Sinais digitais TX/RX; transceptor CAN externo necessário |
| Terminação CAN | 120 ohms, habilitada por padrão; pode ser desconectada por meio de um jumper de solda cortável |
| Isolação CAN | Sem isolamento galvânico onboard |
| IMU | STMicroelectronics LSM6DS3TR-C, acelerômetro de três eixos e giroscópio de três eixos |
| Aquecimento do IMU | Resistores de aquecimento dedicados ao redor do IMU com acionamento controlado por GPIO |
| Regulação de temperatura | Aquecimento programável; regulação de ponto de ajuste em malha fechada requer feedback de temperatura e firmware de aplicação adequado |
| Clock externo | Cristal externo de alta velocidade onboard |
| USB | USB‑C; USB 2.0 Full Speed, taxa de sinalização de 12Mbps |
| Nível lógico | 3,3V |
| Alimentação | Entrada de 5V via USB‑C ou bateria de lítio compatível através dos pads BAT |
| Carregamento de bateria | Circuito de carregamento onboard |
| Controles do usuário | Botão de reset e botão de boot |
| Indicadores | LED de usuário e indicador de carregamento |
| Interface de depuração | SWD |
| Fator de forma | Módulo XIAO compacto com pads laterais metalizados |
Visão geral de hardware
Mapa de pinos
| Pino / Sinal XIAO | Função | Pino do chip | Funções alternativas | Descrição |
|---|---|---|---|---|
| VBUS | Alimentação | USB 5V | Entrada/saída de alimentação de 5V | |
| GND | Terra | Terra de alimentação | ||
| 3V3 / 3.3V-OUT | Alimentação | VOUT_3V3 | Saída regulada de 3,3V | |
| D0 | Analógico | PA0 | A0, ADC | GPIO e entrada analógica |
| D1 | Analógico | PA1 | A1, ADC | GPIO e entrada analógica |
| D2 | Analógico | PA2 | A2, ADC | GPIO e entrada analógica |
| D3 | Analógico | PA3 | A3, ADC | GPIO e entrada analógica |
| D4 | I2C | PB7 | I2C1_SDA | GPIO e dados I2C |
| D5 | I2C | PB6 | I2C1_SCL | GPIO e clock I2C |
| D6 | UART | PA9 | UART_TX | GPIO e transmissão UART |
| D7 | UART | PA10 | UART_RX | GPIO e recepção UART |
| D8 | SPI | PE2 | SPI_SCK | GPIO e clock SPI |
| D9 | SPI | PB0 | SPI_MISO | GPIO e entrada de dados SPI |
| D10 | SPI | PB15 | SPI_MOSI | GPIO e saída de dados SPI |
| D11 | CAN FD | PB8 | FDCAN1_RX | GPIO e recepção FDCAN1 |
| D12 | CAN FD | PB9 | FDCAN1_TX | GPIO e transmissão FDCAN1 |
| D13 | CAN FD | PB5 | FDCAN2_RX | GPIO e recepção do transceptor CAN onboard |
| D14 | CAN FD | PB13 | FDCAN2_TX | GPIO e transmissão do transceptor CAN onboard |
| D15 | Controle CAN | PB14 | CAN_STB | Controla o modo standby do transceptor CAN onboard |
| CAN_H | Barramento CAN | TCAN3403 CANH | Barramento diferencial CAN FD alto | |
| CAN_L | Barramento CAN | TCAN3403 CANL | Barramento diferencial CAN FD baixo | |
| CANFD2_TERM | Terminação CAN | JP1, 120 ohm | Corte/abra para desabilitar o resistor de terminação de 120 ohms onboard | |
| BAT+ | Alimentação da bateria | VBAT | Terminal positivo para uma bateria Li-ion/LiPo de 3,7V | |
| BAT- | Terra da bateria | GND | Terminal negativo da bateria | |
| BAT_EN | Monitor de bateria | PA15 | Habilita o circuito de medição de tensão da bateria | |
| BAT_READ | Analógico | PA4 | ADC | Lê a tensão da bateria; a entrada ADC é aproximadamente VBAT / 2 |
| SWCLK | Depuração | PA14 | SWD Clock | Pad de clock do Serial Wire Debug |
| SWDIO | Depuração | PA13 | SWD Data | Pad de dados do Serial Wire Debug |
| RST | Sistema | NRST | STM32C5_RESET | Pad de teste de reset por hardware |
| USB_D+ | USB | PA12 | USB_DP | Dados diferenciais USB 2.0 positivos |
| USB_D- | USB | PA11 | USB_DN | Dados diferenciais USB 2.0 negativos |
| BOOT | Sistema | PH2-BOOT0 | STM32C5_BOOT | Pad de teste de modo de boot e sinal do botão de boot |
| CHARGE_LED | Indicador | Saída NCHG do carregador | LED vermelho de status de carregamento controlado pelo CI carregador | |
| USER_LED | Indicador GPIO | PB12 | GPIO25 / User_LED | LED verde de usuário; conectado em nível baixo ativo |
| IMU_SDA | IMU onboard | PB4 | I2C2_SDA | Dados I2C para o IMU LSM6DS3TR-C onboard |
| IMU_SCL | IMU onboard | PB3 | I2C2_SCL | Clock I2C para o IMU LSM6DS3TR-C onboard |
| IMU_INT | IMU onboard | PC13 | IMU_INT1 | Saída de interrupção do IMU onboard |
| IMU_HEATER_PWM | Aquecedor do IMU | PA8 | PWM | Controle PWM para o aquecedor de compensação de temperatura do IMU |
Uso do Bootloader
O XIAO STM32C5 vem de fábrica com um bootloader compatível com UF2, destinado principalmente a atualizações de firmware. Antes de gravar um arquivo .uf2, pressione rapidamente duas vezes o botão Reset on‑board. Uma unidade de armazenamento em massa chamada XIAOC5BOOT será montada no seu PC. Em seguida, você pode copiar o arquivo de firmware para essa unidade para concluir a gravação.

Introdução ao PlatformIO
Esta seção demonstra o desenvolvimento e uso do XIAO STM32C5 acendendo o LED de usuário on‑board, utilizando a plataforma de desenvolvimento PlatformIO com o framework Zephyr RTOS.
Preparação de Hardware
Você precisa preparar o seguinte:
- 1 x Seeed Studio XIAO STM32C5
- 1 x Computador
- 1 x Cabo USB Tipo‑C
| Seeed Studio XIAO STM32C5 |
|---|
![]() |
Preparação de Software
Passo 1. Baixar o VS Code
Baixe o VS Code de acordo com o sistema que você está usando

Passo 2. Instalar a extensão PlatformIO
Abra o VSCode, clique em Extensions, depois pesquise por PlatformIO e selecione para instalar. Após a conclusão da instalação, reinicie o VSCode.

Passo 3. Instalar o pacote de plataforma platform-seeedboards
As placas da série Seeed Studio XIAO usam uma plataforma personalizada do PlatformIO, portanto você precisa instalar manualmente o pacote de plataforma correspondente.
- Execute o seguinte comando para uma instalação nova:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

- Se você já usou placas da série Seeed Studio XIAO no PlatformIO, execute o comando abaixo para atualizar:
# for Windows
pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"
# for macOS/Linux
pio pkg uninstall -g -p "SeeedStudio" && pio pkg install -g -p "SeeedStudio=https://github.com/Seeed-Studio/platform-seeedboards.git" --force
Se você quiser usar um projeto PlatformIO existente, substitua o conteúdo de platformio.ini como segue:
[env:seeed-xiao-stm32c5]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-stm32c5
Passo 4. Criar um novo projeto
Passos acelerados para criar um novo projeto pela primeira vez (Opcional)
Nesta etapa, você pode pré‑baixar os pacotes de recursos necessários para o desenvolvimento com o XIAO STM32C5 para acelerar a criação do seu primeiro novo projeto.
1. Instale o pacote do framework Zephyr.
pio pkg install --global --tool "framework-zephyr-nrf54lm20=https://dl.registry.platformio.org/download/platformio/tool/framework-zephyr/3.40400.260428/framework-zephyr-3.40400.260428.tar.gz"
2. Instale os módulos Zephyr e o STM32 HAL.
Copie o bloco de comandos para o seu sistema operacional no terminal do VS Code. Se aparecer um aviso de colagem multilinha, clique em Paste para preservar as quebras de linha. Não clique em Paste as one line.
Windows (PowerShell):
$env:PATH = "$HOME/.platformio/penv/Scripts;$env:PATH"
python "$HOME/.platformio/packages/framework-zephyr-nrf54lm20/scripts/platformio/install-deps.py" `
--platform ststm32 `
--secondary-installation
macOS/Linux (Bash ou Zsh):
export PATH="$HOME/.platformio/penv/bin:$PATH"
python "$HOME/.platformio/packages/framework-zephyr-nrf54lm20/scripts/platformio/install-deps.py" \
--platform ststm32 \
--secondary-installation
O tamanho do download é grande. Aguarde pacientemente e mantenha sua conexão de rede estável.
- Na interface do plugin PlatformIO, selecione criar um novo projeto.

- Dê um nome ao seu projeto, escolha Seeed Studio XIAO STM32C5 como a placa alvo e configure o framework de desenvolvimento e o caminho de armazenamento do projeto.

A criação do projeto pode levar algum tempo na primeira inicialização, aguarde pacientemente.
Compilar e Enviar
Passo 1. Escrever o programa de piscar LED
O XIAO STM32C5 possui um LED de usuário mapeado para o GPIO PB12. O LED acende em nível lógico baixo; este exemplo o configura para piscar a cada 500 ms.
O projeto consiste em três arquivos principais:
main.c: Programa principal que contém a lógica da aplicação.app.overlay: Arquivo Devicetree overlay para configuração de periféricos de hardware.prj.conf: Arquivo de configuração do projeto para habilitar os módulos necessários do Zephyr.
Siga os passos abaixo para acender o LED:
- Abra o seu projeto recém‑criado e crie o arquivo devicetree
app.overlaydentro da pastazephyr.
- Crie o arquivo de configuração
prj.confdentro da pastazephyr.
# GPIO for LED control
CONFIG_GPIO=y
- Copie o código de referência mostrado abaixo para
main.c.
/*
* Copyright (c) 2026 Seeed Technology Co., Ltd.
* SPDX-License-Identifier: Apache-2.0
*
* Blinky example for XIAO STM32C5 with TinyUF2 bootloader support.
* Based on Zephyr samples/basic/blinky.
*
* The 1200-bps UF2 bootloader trigger is armed automatically by the
* board support package — no code changes needed in this example.
*/
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
#define SLEEP_TIME_MS 500
#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
int main(void)
{
int ret;
bool led_state = true;
if (!gpio_is_ready_dt(&led)) {
return 0;
}
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
return 0;
}
while (1) {
ret = gpio_pin_toggle_dt(&led);
if (ret < 0) {
return 0;
}
led_state = !led_state;
printk("LED state: %s\n", led_state ? "ON" : "OFF");
k_msleep(SLEEP_TIME_MS);
}
return 0;
}
Passo 2. Compilar e enviar o programa
- Na barra de ferramentas inferior, acione a compilação do projeto com um clique.

Como alternativa, você pode realizar a compilação via interface de linha de comando.
pio run -e seeed-xiao-stm32c5
- Enviar o firmware

Da mesma forma, o envio do firmware também pode ser concluído pela linha de comando.
pio run -e seeed-xiao-stm32c5 -t upload
- Resultado da execução do programa
O LED on‑board do XIAO STM32C5 pisca em um intervalo de 500 ms.

Enquanto isso, a porta serial exibe o estado ligado/desligado do LED.

Uso da Bateria
Um conector de bateria BAT é reservado no lado traseiro do XIAO STM32C5 para alimentação usando uma bateria de íons de lítio de 3,7 V‑4,2 V.

Leitura da Tensão da Bateria
O XIAO STM32C5 incorpora circuitos de detecção de tensão da bateria e de carregamento da bateria.
No circuito de detecção, BAT_EN / PA15 habilita o chip TPS22916CNYFPR, enquanto BAT_Reading / PA4 lê a tensão da bateria. São usados dois resistores divisores de tensão de 10 kΩ, portanto o valor medido é igual à metade da tensão real da bateria de íons de lítio.
O Charge_LED pisca durante o carregamento da bateria e apaga quando o carregamento é concluído.

- Modifique o código de aplicação correspondente.
app.overlay
prj.conf
main.c
/*
* Copyright (c) 2026 Seeed Technology Co., Ltd.
* SPDX-License-Identifier: Apache-2.0
*
* Read the XIAO STM32C5 battery voltage once per second.
* printk() output uses USB CDC;
* BAT_Reading/PA4 is added by app.overlay. BAT_EN/PA15 and USB CDC are
* supplied by the board devicetree.
*/
#include <zephyr/device.h>
#include <zephyr/drivers/adc.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/printk.h>
#if !DT_NODE_EXISTS(DT_PATH(zephyr_user)) || \
!DT_NODE_HAS_PROP(DT_PATH(zephyr_user), io_channels)
#error "No battery ADC io-channel specified"
#endif
#define BATTERY_ADC_NODE DT_PATH(zephyr_user)
#define BAT_EN_NODE DT_ALIAS(baten)
#define BATTERY_ENABLE_DELAY_MS 5
#define ADC_AVG_SAMPLES 16
#define SAMPLE_PERIOD_MS 1000
static const struct adc_dt_spec battery_adc =
ADC_DT_SPEC_GET_BY_IDX(BATTERY_ADC_NODE, 0);
static const struct gpio_dt_spec bat_en =
GPIO_DT_SPEC_GET(BAT_EN_NODE, gpios);
int main(void)
{
uint16_t raw;
struct adc_sequence sequence = {
.buffer = &raw,
.buffer_size = sizeof(raw),
};
int err;
if (!device_is_ready(battery_adc.dev) || !gpio_is_ready_dt(&bat_en)) {
printk("Battery ADC hardware is not ready\n");
return 0;
}
err = gpio_pin_configure_dt(&bat_en, GPIO_OUTPUT_ACTIVE);
if (err) {
printk("BAT_EN configure failed: %d\n", err);
return 0;
}
k_msleep(BATTERY_ENABLE_DELAY_MS);
err = adc_channel_setup_dt(&battery_adc);
if (err) {
printk("Battery ADC channel setup failed: %d\n", err);
return 0;
}
err = adc_sequence_init_dt(&battery_adc, &sequence);
if (err) {
printk("Battery ADC sequence init failed: %d\n", err);
return 0;
}
printk("Battery voltage monitor (USB CDC)\n");
while (1) {
uint32_t raw_sum = 0;
uint16_t raw_avg;
int32_t adc_mv;
/* Discard the first conversion after the one-second idle period. */
err = adc_read(battery_adc.dev, &sequence);
for (int i = 0; !err && i < ADC_AVG_SAMPLES; i++) {
err = adc_read(battery_adc.dev, &sequence);
raw_sum += raw;
}
if (!err) {
raw_avg = raw_sum / ADC_AVG_SAMPLES;
adc_mv = raw_avg;
err = adc_raw_to_millivolts_dt(&battery_adc, &adc_mv);
if (err) {
printk("Battery voltage conversion failed: %d\n", err);
} else {
/* The 1:1 divider halves the battery voltage. */
printk("Battery: %d mV\n", adc_mv * 2);
}
} else {
printk("Battery ADC read failed: %d\n", err);
}
k_msleep(SAMPLE_PERIOD_MS);
}
return 0;
}
- Resultado da leitura de tensão

IMU
O XIAO STM32C5 possui um LSM6DS3TR‑C sensor inercial de 6 eixos integrado, que combina um acelerômetro de 3 eixos e um giroscópio de 3 eixos. Ele pode ser aplicado em detecção de atitude, reconhecimento de movimento, monitoramento de vibração e outros casos de uso.
Para mitigar o impacto da variação de temperatura ambiente no desvio do sensor e na estabilidade das medições, a placa implementa um circuito ativo de aquecimento para compensação de temperatura. Resistores de aquecimento posicionados ao redor da IMU fornecem aquecimento uniforme para o sensor, e a potência de aquecimento pode ser ajustada por sinais PWM. Combinado com as leituras internas de temperatura da IMU, o controle por software mantém o sensor operando em uma temperatura relativamente estável. Isso reduz a deriva de medição causada pela deriva de temperatura e melhora a consistência dos dados durante a operação de longo prazo e sob condições de temperatura variável.
- Uso de referência: XIAO STM32C5 IMU Usage

CAN FD
O XIAO STM32C5 possui dois controladores CAN FD. O FDCAN1 expõe pinos TX e RX em nível lógico e requer um transceptor CAN externo para conexão ao barramento CAN. O FDCAN2 está conectado ao transceptor integrado TCAN3403-Q1 e se conecta ao barramento através dos pads CAN_H e CAN_L. A placa também pode trocar quadros Classical CAN. No entanto, nós que suportam apenas Classical CAN não conseguem decodificar quadros CAN FD, portanto confirme que os nós ativos no barramento suportam CAN FD antes de transmitir tráfego FD. O CAN FD suporta cargas úteis de até 64 bytes e, quando a comutação de taxa de bits está habilitada, uma taxa de bits mais alta durante a fase de dados.
A placa possui um resistor de terminação de 120 Ω integrado e desconectável, habilitado por padrão. Mantenha-o habilitado quando o XIAO estiver em uma extremidade física do barramento CAN e essa extremidade não tiver outro terminador. Desabilite-o quando o XIAO for um nó intermediário ou já houver outro terminador instalado na mesma extremidade. Certifique-se de que a extremidade oposta do barramento também esteja devidamente terminada. O transceptor suporta modo de espera (standby) para reduzir o consumo de energia quando a comunicação CAN não é necessária.
- Uso de referência: XIAO STM32C5 CANFD Usage

Recursos
Projeto de Hardware
- 📄[Datasheet] STM32C5A3CG
- 📄[Datasheet] LSM6DS3TR-C
- 📄[Datasheet] TCAN3403D4BQ1
- 📄[Esquemático] XIAO STM32C5 Schematic
- 🗃️[Arquivos de projeto de PCB]
- 🗃️[Bibliotecas de projeto de PCB]
- 📄[Diagrama de pinagem] XIAO STM32C5 Pinout Sheet
Suporte Técnico e Discussão de Produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas 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.

