Seeed Studio XIAO rp2350: pinout, datasheet, schema, and specifications

Spread the love

Here is the high-resolution pinout

Here you can find Seeed Studio devices All XIAO Series - XIAO accessories - XIAO AI Vision Camera

The Seeed Studio XIAO RP2350 is a high-performance, stamp-sized development board that integrates the powerful Raspberry Pi RP2350 microcontroller into the classic 21 x 17.8 mm XIAO form factor. It stands out for its unique dual-architecture capability, allowing developers to switch between dual Arm Cortex-M33 cores and dual Hazard3 RISC-V cores via software. With robust security features (TrustZone, Secure Boot), an integrated battery management system, and expanded I/O (19 GPIOs), it is designed to bridge the gap between rapid prototyping and secure, professional edge computing applications.



Technical Specifications

FeatureSpecificationNotes
MCURaspberry Pi RP2350Dual-core, Hybrid Architecture
Cores2x Cortex-M33 (Arm) OR 2x Hazard3 (RISC-V)Selectable at boot, 150 MHz Clock
SRAM520 KB10 banks for concurrent access
Flash2 MB (External QSPI)XIP (Execute In Place) supported
Dimensions21 x 17.8 mmClassic XIAO form factor
Voltage3.3V (Logic) / 5V (USB VBUS)IO is NOT 5V tolerant (max 3.6V)
Battery MgmtIntegrated (Charge + Monitor)Charge ~370mA. Standby ~50µA 1
Board Logic3.3V

Comprehensive Pinout Analysis (Extrapolated from Core)

The following data is extracted directly from the Arduino Core definitions used by the compiler.

Front Header Pins (D0 – D10)

PinGPIOArduino NamePrimary FunctionAlternate / Bus Defaults
D026A0Analog Input 0
D127A1Analog Input 1
D228A2Analog Input 2
D35D3Digital I/OSPI0 CS (SS)
D46D4Digital I/OWire1 SDA (I2C1)
D57D5Digital I/OWire1 SCL (I2C1)
D60D6Digital I/OSerial1 TX (UART0)
D71D7Digital I/OSerial1 RX (UART0)
D82D8Digital I/OSPI0 SCK
D94D9Digital I/OSPI0 MISO
D103D10Digital I/OSPI0 MOSI

Bottom Solder Pads (D11 – D18)

These pins are critical for accessing the default I2C interface (Wire) and the second hardware SPI/Serial ports.

PinGPIOArduino NameFunctionCritical Note (From Header File)
D1121D11Serial2 RXUART1 RX
D1220D12Serial2 TXUART1 TX
D1317D13Wire SCLDefault I2C_SCL (I2C0)
D1416D14Wire SDADefault I2C_SDA (I2C0)
D1511D15SPI1 MOSI
D1612D16SPI1 MISO
D1710D17SPI1 SCK
D189D18SPI1 SS

Special Internal Pins

NameGPIODefinition in CoreNote
User LED25#define PIN_LED (25u)Yellow. Active Low (typically).
RGB LED22Not defined in CoreWS2812B Addressable LED (Requires Neopixel lib).
RGB PWR23Implied by hardwareMust be set HIGH to power on the RGB LED.
V_BAT29Implicit HardwareADC3 (Internal) for voltage monitoring.

Serial Communication

In the Arduino environment for the RP2350, “Serial” refers to three distinct interfaces. Understanding the difference is critical for debugging and connecting modules.

Serial (USB CDC)

  • Physical Location: The USB-C connector.
  • Type: Virtual Serial over USB (USB CDC).
  • Usage: Used for the Serial Monitor in the Arduino IDE, debug Serial.print() messages, and uploading code.
  • Note: It does not use any GPIO pins. It is purely a software-driven USB stack running on the RP2350.

Serial1 (Hardware UART0)

  • Physical Location: Pins D6 (TX) and D7 (RX) on the front header.
  • Type: Hardware UART (UART0 Peripheral).
  • Usage: The primary port for connecting external modules like GPS, Bluetooth, or ESP8266 AT bridges.
  • Performance: Fully hardware-driven with interrupts and FIFOs. It is independent of the USB connection.

Serial2 (Hardware UART1)

  • Physical Location: Pads D12 (TX) and D11 (RX) on the bottom of the board.
  • Type: Hardware UART (UART1 Peripheral).
  • Usage: A completely independent second hardware serial port. Ideal for “Bridge” projects (e.g., reading a GPS on Serial1 and sending data to a cellular modem on Serial2).
  • Access: Requires soldering wires to the small pads on the back or using pogo pins.

Critical Engineering Tips & “Gotchas”

IssueTechnical Detail (Based on Core Analysis)Solution
The “Wire” TrapThe Arduino core defines Wire (the default I2C) on pins D14/D13 (Back Pads). Most users expect I2C on the front header (D4/D5).• Use Wire1 for D4/D5 (Front).
• OR Remap: Wire.setSDA(6); Wire.setSCL(7); Wire.begin();
Expansion BoardThe Seeed Expansion Board connects I2C to D4/D5.If the RGB LED doesn’t light up, ensure you pinMode(23, OUTPUT); digitalWrite(23, HIGH);.
RGB PowerGPIO latch-up voltage (~2.1V) if the pin is an INPUT with PULL-DOWN.The RGB LED often shares a power-enable pin (GPIO 23) to save battery power.
Errata E9GPIO latch-up voltage (~2.1V) if pin is INPUT with PULL-DOWN.Do not use INPUT_PULLDOWN. Use external resistors or INPUT_PULLUP with inverted logic.
Battery ReadingThe battery voltage is divided by 2 before the ADC.Voltage Formula: V = (analogRead(29) * 3.3 / 4095) * 2.

Arduino IDE Configuration & Usage

To compile for this board using the definitions analyzed above:

  1. Install Board Manager:
    • File > Preferences > Additional Boards Manager URLs:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  1. Install Core:
    • Tools > Board > Boards Manager: Search “Pico” -> Install “Raspberry Pi Pico/RP2040/RP2350 by Earle F. Philhower”.
  2. Select Board:
    • Tools > Board > Raspberry Pi Pico/RP2040/RP2350 > Seeed XIAO RP2350.
  3. Select Architecture (Optional):
    • Tools > CPU Architecture > Cortex-M33 (Default) or RISC-V (Hazard3).
  4. Pin Definition Validation:
    • The settings in this report correspond to the pins_arduino.h file included in this core version.

How To

  1. Raspberry Pi Pico and rp2040 boards: pinout, specs, and Arduino IDE configuration
  2. Raspberry Pi Pico and rp2040 boards: integrated LittleFS filesystem
  3. Raspberry Pi Pico and rp2040 board: ethernet w5500 with plain (HTTP) and SSL (HTTPS) requests
  4. Raspberry Pi Pico and rp2040 boards: WiFiNINA with ESP32 WiFi Co-Processor
  5. Raspberry Pi Pico and rp2040 boards: how to use SD card
  6. Dallas ds18b20
  7. Connecting the EByte E70 to Raspberry Pi Pico (rp2040) devices and a simple sketch example

Seeed Studio XIAO RP2350: Pros & Cons

ProsCons
Dual-Architecture Power
Unique ability to switch between Dual ARM Cortex-M33 and Dual RISC-V (Hazard3) cores, both running at 150 MHz.
No Wireless Connectivity
Unlike the XIAO ESP32 or nRF52 series, this board has no Wi-Fi or Bluetooth capability onboard.
High Performance
Significant upgrade over the RP2040 with faster clock speeds, FPU (Floating Point Unit), and DSP instructions.
Hardware Silicon Bug (Errata E9)
Suffers from the RP2350-A2 “latching” bug where GPIOs get stuck at ~2.1V if used as Inputs with internal Pull-Downs enabled.
Enhanced Security
Features ARM TrustZone, Secure Boot, and Signed Boot capabilities, making it suitable for professional/secure IoT devices.
Complex Pinout (Back Pads)
Accessing the extra 8 GPIOs (including the second Serial/SPI port and default I2C) requires soldering to tiny pads on the bottom.
Integrated Battery Management
Includes an onboard battery charger and voltage monitoring circuit (read via GPIO 29), simplifying wearable projects.
I2C “Wire” Conflict
The default Arduino Wire (I2C) is mapped to the back pads. Users must manually remap pins to use I2C on the front header (D4/D5).
More I/O Pins
Breaks out 19 GPIOs total (vs 14 on the RP2040 version), providing more flexibility for complex projects.
3.3V Logic Only
While the chip is technically 5V tolerant, the board design and compact traces generally dictate strict 3.3V logic.
Powerful PIO
Features 3 PIO blocks (12 state machines), allowing for amazing custom protocols (HDMI, CAN, SDIO) without CPU load.
Limited Analog Inputs
Only 3 ADC pins are available on the main header (D0, D1, D2), which is fewer than some competitors.
XIAO Ecosystem
Fully compatible with the wide range of Seeed Studio XIAO expansion boards and Grove shields.
Tiny Reset/Boot Buttons
The onboard buttons are extremely small and difficult to press without a tool.

Simple RGB LED sketch

/*
  xiao_rp2350.ino
  NeoPixel single-LED color cycle demo.

  Brief: Cycles a single NeoPixel through red, green, blue, white and off.

  Author: Renzo Mischainti
  Reference: https://mischianti.org
*/

#include <Arduino.h>
#include <Adafruit_NeoPixel.h>

#define NEOPIXEL_POWER 23
#define PIN_NEOPIXEL 22
#define NUM_LEDS 1

// Initialize the NeoPixel object
Adafruit_NeoPixel pixels(NUM_LEDS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);

void setup() {
}

void loop() {
  // Turn RED
  // pixels.Color(Red, Green, Blue) -> Values from 0 to 255
  pixels.setPixelColor(0, pixels.Color(255, 0, 0));
  pixels.show();   // Push the data to the LED to update the color
  delay(1000);     // Wait for 1 second

  // Turn GREEN
  pixels.setPixelColor(0, pixels.Color(0, 255, 0));
  pixels.show();
  delay(1000);

  // Turn BLUE
  pixels.setPixelColor(0, pixels.Color(0, 0, 255));
  pixels.show();
  delay(1000);

  // Turn WHITE (All colors on)
  pixels.setPixelColor(0, pixels.Color(128, 128, 128));
  pixels.show();
  delay(1000);

  // Turn OFF
  pixels.clear();
  pixels.show();
  delay(500);
}

Datasheets

rp2350 datasheet

No online PDF viewer installed. Download!

Schema

No online PDF viewer installed. Download!

Thanks


Spread the love

Leave a Reply

Your email address will not be published. Required fields are marked *