Pular para o conteúdo principal

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​

ItemEspecificação
ProdutoSeeed Studio XIAO STM32C5
MicrocontroladorSTMicroelectronics STM32C5A3CG
CPUArm Cortex-M33 de núcleo único, até 144MHz, com FPU e instruções DSP
Encapsulamento do MCUUFQFPN48
Flash interna de programa1MB
SRAM256KB
Flash externa16MB
Controladores CAN2 controladores CAN FD nativos
Transceptor CAN onboard1 x TI TCAN3403-Q1
Conexão de barramento CAN onboardPads CANH/CANL; use o GND da placa como referência de sinal
Segundo canal CANSinais digitais TX/RX; transceptor CAN externo necessário
Terminação CAN120 ohms, habilitada por padrão; pode ser desconectada por meio de um jumper de solda cortável
Isolação CANSem isolamento galvânico onboard
IMUSTMicroelectronics LSM6DS3TR-C, acelerômetro de três eixos e giroscópio de três eixos
Aquecimento do IMUResistores de aquecimento dedicados ao redor do IMU com acionamento controlado por GPIO
Regulação de temperaturaAquecimento programável; regulação de ponto de ajuste em malha fechada requer feedback de temperatura e firmware de aplicação adequado
Clock externoCristal externo de alta velocidade onboard
USBUSB‑C; USB 2.0 Full Speed, taxa de sinalização de 12Mbps
Nível lógico3,3V
AlimentaçãoEntrada de 5V via USB‑C ou bateria de lítio compatível através dos pads BAT
Carregamento de bateriaCircuito de carregamento onboard
Controles do usuárioBotão de reset e botão de boot
IndicadoresLED de usuário e indicador de carregamento
Interface de depuraçãoSWD
Fator de formaMódulo XIAO compacto com pads laterais metalizados

Visão geral de hardware​

XIAO STM32C5 - Frente​


XIAO STM32C5 - Verso​

Mapa de pinos​

Pino / Sinal XIAOFunçãoPino do chipFunções alternativasDescrição
VBUSAlimentaçãoUSB 5VEntrada/saída de alimentação de 5V
GNDTerraTerra de alimentação
3V3 / 3.3V-OUTAlimentaçãoVOUT_3V3Saída regulada de 3,3V
D0AnalógicoPA0A0, ADCGPIO e entrada analógica
D1AnalógicoPA1A1, ADCGPIO e entrada analógica
D2AnalógicoPA2A2, ADCGPIO e entrada analógica
D3AnalógicoPA3A3, ADCGPIO e entrada analógica
D4I2CPB7I2C1_SDAGPIO e dados I2C
D5I2CPB6I2C1_SCLGPIO e clock I2C
D6UARTPA9UART_TXGPIO e transmissão UART
D7UARTPA10UART_RXGPIO e recepção UART
D8SPIPE2SPI_SCKGPIO e clock SPI
D9SPIPB0SPI_MISOGPIO e entrada de dados SPI
D10SPIPB15SPI_MOSIGPIO e saída de dados SPI
D11CAN FDPB8FDCAN1_RXGPIO e recepção FDCAN1
D12CAN FDPB9FDCAN1_TXGPIO e transmissão FDCAN1
D13CAN FDPB5FDCAN2_RXGPIO e recepção do transceptor CAN onboard
D14CAN FDPB13FDCAN2_TXGPIO e transmissão do transceptor CAN onboard
D15Controle CANPB14CAN_STBControla o modo standby do transceptor CAN onboard
CAN_HBarramento CANTCAN3403 CANHBarramento diferencial CAN FD alto
CAN_LBarramento CANTCAN3403 CANLBarramento diferencial CAN FD baixo
CANFD2_TERMTerminação CANJP1, 120 ohmCorte/abra para desabilitar o resistor de terminação de 120 ohms onboard
BAT+Alimentação da bateriaVBATTerminal positivo para uma bateria Li-ion/LiPo de 3,7V
BAT-Terra da bateriaGNDTerminal negativo da bateria
BAT_ENMonitor de bateriaPA15Habilita o circuito de medição de tensão da bateria
BAT_READAnalógicoPA4ADCLê a tensão da bateria; a entrada ADC é aproximadamente VBAT / 2
SWCLKDepuraçãoPA14SWD ClockPad de clock do Serial Wire Debug
SWDIODepuraçãoPA13SWD DataPad de dados do Serial Wire Debug
RSTSistemaNRSTSTM32C5_RESETPad de teste de reset por hardware
USB_D+USBPA12USB_DPDados diferenciais USB 2.0 positivos
USB_D-USBPA11USB_DNDados diferenciais USB 2.0 negativos
BOOTSistemaPH2-BOOT0STM32C5_BOOTPad de teste de modo de boot e sinal do botão de boot
CHARGE_LEDIndicadorSaída NCHG do carregadorLED vermelho de status de carregamento controlado pelo CI carregador
USER_LEDIndicador GPIOPB12GPIO25 / User_LEDLED verde de usuário; conectado em nível baixo ativo
IMU_SDAIMU onboardPB4I2C2_SDADados I2C para o IMU LSM6DS3TR-C onboard
IMU_SCLIMU onboardPB3I2C2_SCLClock I2C para o IMU LSM6DS3TR-C onboard
IMU_INTIMU onboardPC13IMU_INT1Saída de interrupção do IMU onboard
IMU_HEATER_PWMAquecedor do IMUPA8PWMControle 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:

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
dica

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
dica

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

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.overlay dentro da pasta zephyr.
/* USB CDC console and the user LED are configured by the board DTS. */
  • Crie o arquivo de configuração prj.conf dentro da pasta zephyr.
# 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
/ {
/* Expose the battery ADC input to the application. */
zephyr,user {
io-channels = <&adc1 4>;
};
};

&adc1 {
/* Add the battery input on PA4 (ADC1_IN4). */
pinctrl-0 = <&adc1_in0_pa0 &adc1_in1_pa1 &adc1_in2_pa2
&adc1_in3_pa3 &adc1_in4_pa4>;

channel@4 {
reg = <4>;
zephyr,gain = "ADC_GAIN_1";
zephyr,reference = "ADC_REF_INTERNAL";
zephyr,acquisition-time = <ADC_ACQ_TIME(ADC_ACQ_TIME_TICKS, 289)>;
zephyr,resolution = <12>;
};
};
prj.conf
# Battery voltage measurement. USB CDC console support is supplied by the board.
CONFIG_ADC=y
CONFIG_GPIO=y
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.

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.

Recursos​

Projeto de Hardware

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.

Loading Comments...