Saltar al contenido principal

Seeed Studio XIAO RP2350 con Arduino

La placa Seeed Studio XIAO RP2350 ahora admite programación mediante Arduino, gracias al arduino-pico core. Esta guía te ayudará a configurar y empezar a usar Arduino en tu placa RP2350.

Características

  • Potente placa MCU: Equipada con un chip Raspberry Pi RP2350 con doble núcleo Arm Cortex-M33 simétrico a 150MHz con FPU.
  • Funciones de seguridad mejoradas: El arranque seguro integrado y el bootloader cifrado garantizan la seguridad de la aplicación.
  • Compatibilidad de software: Compatible con C/C++ y MicroPython, lo que garantiza un desarrollo y prototipado de proyectos sencillo.
  • Ricos recursos integrados: Integra un LED RGB, 2MB de Flash, 520kB de SRAM y 19 GPIO multifunción (Analógico, Digital, I²C, UART, SPI, PWM).
  • 8 nuevos IO ampliados: En comparación con las anteriores MCU XIAO, la incorporación de 8 pines IO en la parte posterior admite aplicaciones más complejas.
  • Diseño de energía eficiente: Consumo de energía ultrabajo de solo 50μA en modo de suspensión, lo que permite la alimentación por batería. La medición directa del voltaje de la batería a través de un IO interno mejora el sistema de gestión de batería (BMS).
  • Diseño compacto del tamaño de un pulgar: Con unas dimensiones de 21 x 17.8mm, adopta el factor de forma clásico XIAO de Seeed Studio, ideal para aplicaciones con limitaciones de espacio.
  • Amigable para producción: Diseño de dispositivo de montaje superficial (SMD) con todos los componentes en la parte frontal y orificios tipo sello en ambos lados, lo que facilita una producción en masa eficiente.

Especificación

ProductoXIAO RP2040XIAO RP2350
ProcesadorRaspberry Pi RP2040
Doble Cortex-M0+ @ 133MHz
Raspberry Pi RP2350
Doble Cortex-M33 @ 150MHz, FPU
RAM264kB SRAM520kB SRAM
Flash2MB integrada2MB Flash
LEDs1x LED de usuario
1x LED de encendido
1x LED RGB
1x LED de usuario
1x LED de encendido
1x LED RGB
Interfaz11 pines (todos PWM):
4x Analógico
11x Digital
1x I²C
1x UART
1x SPI
19 pines (todos PWM):
3x Analógico
19x Digital
2x I²C
2x UART
2x SPI
Botón1x botón RESET
1x botón BOOT
1x botón RESET
1x botón BOOT
Seguridad-OTP, Secure Boot, Arm TrustZone
Compatibilidad de softwareSoporta Micropython / Arduino / CircuitPythonSoporta Micropython / Arduino / C,C++
Temperatura de trabajo-20°C-70°C-20°C-70°C
Dimensiones21x17.8 mm21x17.8 mm

Descripción general del hardware

Distribución de pines frontal de XIAO RP2350
XIAO RP2350 Front Pinout
Distribución de pines trasera de XIAO RP2350
XIAO RP2350 Back Pinout
Componentes de XIAO RP2350
XIAO RP2350 Components

¿Necesitas más detalles sobre la distribución de pines? Navega a Assets and Resources más abajo.

Mapa de pines

Pin XIAOFunciónPin del chipFunciones alternativasDescripción
5VVBUSEntrada/Salida de alimentación
GND
3V33V3_OUTSalida de alimentación
D0AnalógicoGPIO26GPIO, ADC
D1AnalógicoGPIO27GPIO, ADC
D2AnalógicoGPIO28GPIO, ADC
D3SPI0_CSnGPIO5GPIO, SPI
D4SDA1GPIO6GPIO, datos I2C
D5SCL1GPIO7GPIO, reloj I2C
D6TX0GPIO0GPIO, transmisión UART
D7RX0GPIO1GPIO, recepción UART
D8SPI0_SCKGPIO2GPIO, reloj SPI
D9SPI0_MISOGPIO4GPIO, datos SPI
D10SPI0_MOSIGPIO3GPIO, datos SPI
D11RX1GPIO21GPIO, recepción UART
D12TX1GPIO20GPIO, transmisión UART
D13SCL0GPIO17GPIO, reloj I2C
D14SDA0GPIO16GPIO, datos I2C
D15SPI1_MOSIGPIO11GPIO, datos SPI
D16SPI1_MISOGPIO12GPIO, datos SPI
D17SPI1_SCKGPIO10GPIO, reloj SPI
D18SPI1_CsnGPIO9Csn
ADC_BATGPIO29Leer el valor de voltaje de la batería
ADC_BAT_ENGPIO19Habilitar detección de voltaje de la batería
ResetRUNRUN
BootRP2040_BOOTEntrar en modo Boot
CHARGE_LEDNCHGCHG-LED_Red
RGB LEDGPIO22LED RGB
USER_LEDGPIO25Luz de usuario_Amarilla

Requisitos previos

Para comenzar, asegúrate de tener:

  • Una placa RP2350
  • El Arduino IDE
  • Un cable USB

Configuración del software

1. Instalar el Arduino IDE

Descarga e instala la última versión del Arduino IDE desde el sitio oficial: Arduino Software.

2. Añadir compatibilidad con la placa RP2350

  1. Abre el Arduino IDE y navega a File > Preferences.

  2. En el campo Additional Boards Manager URLs, añade esta URL:

    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  3. Haz clic en OK para guardar la configuración.

  4. Ve a Tools > Board > Boards Manager.

  5. En el Boards Manager, busca pico y haz clic en Install.

  6. Después de la instalación, ve a Tools > Board y selecciona la placa que se muestra a continuación como tu placa.

nota

Asegúrate de instalar la versión 4.2.0 o posterior para obtener compatibilidad completa con la placa XIAO RP2350.

3. Cargar un sketch

Antes de cargar un sketch, pon tu XIAO RP2350 en modo BOOT. Usa uno de los métodos siguientes:

Mantén pulsado Boot-> Conecta el cable-> Suelta Boot
  1. Abre el Arduino IDE y crea un nuevo sketch.
  2. Escribe tu código. Por ejemplo, usa el código de ejemplo Blink.
  3. Ve a Tools > Port y selecciona el puerto donde está conectado tu RP2350.

Verificación del rendimiento de bajo consumo

El diseño de la fuente de alimentación de XIAO RP2350 ofrece un rendimiento excelente en escenarios de bajo consumo y puede aplicarse ampliamente a diversas aplicaciones de baja potencia.

Conexión de la batería

El XIAO RP2350 puede alimentarse con una batería de litio de 3,7 V. Puedes consultar el siguiente diagrama para el cableado.

pir
precaución

Ten cuidado de no cortocircuitar los terminales positivo y negativo y quemar la batería y el equipo al soldar.

Grabar el firmware

En el circuito de muestreo de batería del XIAO RP2350, se adopta una solución de muestreo de voltaje basada en el SX1801CCR. Se forma un circuito divisor de voltaje mediante dos resistencias de 470 kΩ, lo que da como resultado una relación de división de voltaje de 2. El programa utiliza 3,3 V como voltaje de referencia y el voltaje real de la batería puede calcularse mediante la fórmula de restauración de voltaje.

El siguiente ejemplo utiliza un enfoque de reinicio por watchdog para simular el modo de suspensión profunda, ya que el IDE de Arduino no puede integrar fácilmente la biblioteca pico-extras necesaria para una suspensión profunda real.

Program
#include <Arduino.h>
#include "hardware/powman.h"
#include "hardware/adc.h"
#include "hardware/watchdog.h"

// ── Pin Definitions ──────────────────────────────────────────────
#define BAT_ADC_EN 19
#define BAT_ADC_READ 29
#define SLEEP_SEC 30

#define VOLTAGE_DIVIDER_RATIO 2.0f
#define VBAT_LOW_THRESHOLD 3.5f
#define SCRATCH_MAGIC 0xDEADBEEF

// ── Global voltage storage (can be output via other methods, e.g., LED alert) ──────────
static float g_vbat = 0.0f;
static bool g_lowBat = false;

// ── Disable ADC Peripheral ──────────────────────────────────────
static void disableADC() {
adc_run(false);
hw_clear_bits(&adc_hw->cs, ADC_CS_EN_BITS);
}

// ── Read Battery Voltage ─────────────────────────────────────────
static float readVbat() {
digitalWrite(BAT_ADC_EN, HIGH);
delayMicroseconds(500);

adc_init();
adc_gpio_init(BAT_ADC_READ);
adc_select_input(3);
analogReadResolution(12);
(void)analogRead(BAT_ADC_READ); // Discard the first reading

int32_t sum = 0;
for (int i = 0; i < 5; i++) {
sum += analogRead(BAT_ADC_READ);
delayMicroseconds(200);
}

digitalWrite(BAT_ADC_EN, LOW); // ★ Disable voltage divider immediately after sampling
disableADC();

return ((float)sum / 5.0f / 4095.0f * 3.3f) * VOLTAGE_DIVIDER_RATIO;
}

// ── Shut Down All Unnecessary Peripherals ─────────────────────────
static void shutdownPeripherals() {
// ADC
digitalWrite(BAT_ADC_EN, LOW);
disableADC();

// Pull down all unused pins to eliminate floating leakage
const uint8_t unused[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18};
for (uint8_t pin : unused) {
pinMode(pin, INPUT_PULLDOWN);
}

// Reduce frequency to 18MHz to significantly reduce dynamic power consumption
set_sys_clock_khz(18000, false);
}

// ── Low-Power Wait (Watchdog Reboot to Simulate Sleep) ───────────
static void sleepWithReboot(uint32_t seconds) {
// Start POWMAN Timer (LPOSC 1kHz)
if (!powman_timer_is_running()) powman_timer_start();
powman_timer_set_1khz_tick_source_lposc();

// Store wake-up target time in scratch registers
uint64_t wake_ms = powman_timer_get_ms() + (uint64_t)seconds * 1000ULL;
watchdog_hw->scratch[4] = SCRATCH_MAGIC;
watchdog_hw->scratch[5] = (uint32_t)(wake_ms & 0xFFFFFFFF);
watchdog_hw->scratch[6] = (uint32_t)(wake_ms >> 32);

shutdownPeripherals();

// Watchdog timeout reboot (max 8.3s), CPU waits in low-frequency WFE
rp2040.wdt_begin(8300);
while (true) {
__wfe();
}
}

// ─────────────────────────────────────────────────────────────────
void setup() {
// First action on power-up: pull ADC_EN low
pinMode(BAT_ADC_EN, OUTPUT);
digitalWrite(BAT_ADC_EN, LOW);
pinMode(BAT_ADC_READ, INPUT);

// ── Check if waking up from sleep reboot ───────────────────────
if (watchdog_hw->scratch[4] == SCRATCH_MAGIC) {
if (!powman_timer_is_running()) powman_timer_start();
powman_timer_set_1khz_tick_source_lposc();

uint64_t wake_ms = (uint64_t)watchdog_hw->scratch[5]
| ((uint64_t)watchdog_hw->scratch[6] << 32);
uint64_t now_ms = powman_timer_get_ms();

if (now_ms < wake_ms) {
// Not time to wake up yet, continue waiting
sleepWithReboot((uint32_t)((wake_ms - now_ms) / 1000 + 1));
// Will not return
}

// Time to wake up, clear flag
watchdog_hw->scratch[4] = 0;
}

// ── Restore normal frequency, execute application logic ───────
set_sys_clock_khz(125000, true);

// Sample voltage
g_vbat = readVbat();
g_lowBat = (g_vbat < VBAT_LOW_THRESHOLD);

// TODO: Process sampling results here
// Example: Turn on LED alert for low battery
// if (g_lowBat) { digitalWrite(LED_PIN, HIGH); delay(100); ... }

// Enter sleep mode 2 seconds after power-up
delay(2000);
}

void loop() {
sleepWithReboot(SLEEP_SEC);
// Will not return; restarts from setup() after wake-up
}

A continuación puedes cargar el programa.

Como alternativa, puedes utilizar nuestro firmware preescrito para la verificación y las pruebas de rendimiento.

Descarga el Firmware de prueba de bajo consumo de XIAO RP2350, y arrástralo al sistema de archivos.

pir

Resultado

Tras las pruebas y verificaciones instrumentales, la corriente media del XIAO RP2350 es de 53 μA cuando entra en modo de bajo consumo.

pir

tip
  1. La corriente media en modo de bajo consumo medida por diferentes instrumentos puede variar. Por favor, consulta los resultados reales de la prueba.
  2. Este resultado de prueba se obtiene después de grabar el firmware de prueba de bajo consumo.
  3. Para las pruebas de consumo de energía, el cableado de prueba debe conectarse a la interfaz BAT en la parte posterior.
  4. Dado que el IDE de Arduino tiene dificultades para integrar la biblioteca pico-extras (que contiene pico/sleep.h, necesaria para la suspensión profunda), se recomienda utilizar el SDK de Pico o el framework PlatformIO + arduino-pico para el desarrollo de ultra bajo consumo.

Recursos y materiales

Diseño de hardware

Diseño mecánico

Software y herramientas

Otros

Soporte y debate

Gracias por utilizar productos de Seeed. Ofrecemos múltiples canales para soporte y debate en la comunidad:

Loading Comments...