Skip to content

XIAO RP2040 Learning Session Summary

Date: February 15, 2026
Topic: Microcontroller Fundamentals for Fab Academy Group Project


Session Overview

This document summarizes key concepts learned about the Seeed Studio XIAO RP2040 microcontroller during research for our Fab Academy group project. As a complete beginner to microcontrollers, I explored fundamental concepts, specifications, and practical considerations for implementation.


1. Microcontroller Architecture Basics

What is a Microcontroller?

A microcontroller is a compact integrated circuit designed to govern specific operations in embedded systems. Key components include:

  • CPU (Central Processing Unit): Executes instructions and performs operations
  • Memory:
  • Flash (non-volatile) - stores program code
  • RAM (volatile) - temporary data storage during execution
  • EEPROM - persistent data storage
  • Bus System: Connects components (data, address, control buses)
  • I/O Ports: Interface to external world (sensors, actuators)
  • Peripherals: Timers, ADC, communication interfaces (UART, SPI, I2C), PWM, interrupts
  • Clock System: Provides timing signals

Common Architectures: - Harvard: Separate memory for instructions and data (AVR, PIC) - Von Neumann: Shared memory space (some ARM cores) - RP2040 uses modified Harvard architecture


2. Understanding the RP2040 Chip

What is the RP2040?

The RP2040 is a microcontroller chip designed by Raspberry Pi. It's technically a complete microcontroller, but with one key difference from traditional designs: it requires external flash memory for program storage.

RP2040 Name Decoding

The model number encodes specifications:

R P 2 0 4 0 - RP = Raspberry Pi (manufacturer) - 2 = Number of cores (dual-core) - 0 = Type of core (ARM Cortex-M0+) - 4 = floor(log₂(RAM / 16KB)) where RAM = 264KB - Calculation: 264KB ÷ 16KB = 16.5 → log₂(16.5) = 4.04 → floor(4.04) = 4 - 0 = floor(log₂(nonvolatile / 16KB)) = 0 (no on-chip flash)

This systematic naming allows quick comparison between Raspberry Pi microcontroller variants.

RP2040 Specifications

  • CPU: Dual-core ARM Cortex-M0+ @ up to 133MHz
  • SRAM: 264KB on-chip
  • Flash: Requires external QSPI flash (not built-in)
  • GPIO: 30 pins total on the chip (QFN-56 package)
  • Unique Features:
  • PIO (Programmable I/O): 8 state machines for custom protocols
  • Dual-core: Can run two programs simultaneously
  • Native USB 1.1 support

3. XIAO RP2040 Development Board

Board Specifications

  • Microcontroller: RP2040 chip
  • Flash Memory: 2MB (external chip on board)
  • SRAM: 264KB
  • Dimensions: 20×17.5mm (very compact!)
  • GPIO Pins: 14 pins exposed on edge connectors
  • Power: 3.3V logic, 5V USB-C input
  • Special Features:
  • Castellated pads for PCB surface mounting
  • Built-in RGB LED (NeoPixel) on GPIO11/12
  • Power LED on GPIO25
  • BOOT and RESET buttons

Why Only 14 Pins (vs 30 on RP2040 Chip)?

The XIAO board doesn't expose all 30 GPIO pins from the RP2040 because: 1. Internal use: Some GPIOs control onboard features (RGB LED, flash memory) 2. Size constraints: Compact 20×17.5mm form factor 3. Design priorities: Seeed selected the most useful pins for common applications

Pin Configuration

Available GPIO Pins: - Digital I/O: 11 pins - Analog Input (ADC): 4 pins (D0-D3 / A0-A3) - 12-bit resolution (0-4095) - 0-3.3V range - PWM: All 11 GPIO pins - Communication Interfaces: - I2C: GPIO6 (SDA), GPIO7 (SCL) - SPI: GPIO2 (MOSI), GPIO3 (MISO), GPIO4 (SCK) - UART: GPIO0 (TX), GPIO1 (RX)

Power Pins: - 5V: USB power input - 3V3: 3.3V regulated output (up to 700mA) - GND: Ground


4. Key Concepts Learned

GPIO (General Purpose Input/Output)

GPIO pins are programmable connections that can be configured for different functions:

Modes: 1. Digital Output: Send HIGH (3.3V) or LOW (0V) signals 2. Digital Input: Read HIGH/LOW from buttons, switches 3. Analog Input: Read varying voltages (ADC pins only) 4. PWM Output: Simulate analog output via pulse width modulation 5. Special Functions: I2C, SPI, UART, PIO protocols

Important Notes: - RP2040 operates at 3.3V logic (not 5V like older Arduinos) - Each GPIO can source/sink ~12mA safely - Never connect high-power devices directly (use transistors/MOSFETs)

Pin Multiplexing

Key Discovery: The XIAO has 14 physical pins but offers 28+ functions!

How it works: - Each physical pin can perform multiple functions - Only one function per pin at a time - Example: Pin D0 (GPIO26) can be: - Digital input or output - Analog input (A0) - PWM output - Part of I2C/SPI/UART communication

Planning Implications: - Must avoid pin conflicts when designing circuits - If using SPI, those 4 pins are dedicated to communication - Document pin assignments clearly to prevent overlaps

Analog Input (ADC) vs PWM Output

This was a key clarification:

Feature Analog Input (ADC) PWM Output
Direction INPUT (read from sensors) OUTPUT (control devices)
Signal Type True varying voltage Rapid ON/OFF digital pulses
Function analogRead() analogWrite()
Resolution 12-bit (0-4095) 8-bit (0-255) typically
Pins on XIAO 4 pins (A0-A3) only All 11 GPIO pins
Voltage Range Measures 0-3.3V Switches between 0V/3.3V
Use Cases Reading sensors, potentiometers LED dimming, motor speed control

Important: Despite the name analogWrite(), PWM is NOT true analog output - it's digital pulses that simulate analog by varying duty cycle. The RP2040 does not have a DAC (Digital to Analog Converter).

PIO (Programmable I/O)

The RP2040's unique feature - 8 programmable state machines for custom I/O protocols: - 2 PIO blocks, 4 state machines each - Can run at up to 125 MHz - Perfect for custom protocols too fast for bit-banging - Common uses: WS2812 LEDs, custom displays, quadrature encoders


5. Programming the XIAO RP2040

  1. Add board manager URL: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  2. Install "Raspberry Pi Pico/RP2040" boards
  3. Select "Seeed XIAO RP2040" as board
  4. Hold BOOT button while connecting USB for first upload

Method 2: MicroPython

  1. Download RP2040 .uf2 file from micropython.org
  2. Hold BOOT button, connect USB
  3. Drag .uf2 to "RPI-RP2" drive
  4. Use Thonny IDE for coding

Method 3: VSCode + PlatformIO

Professional workflow for larger projects with version control


6. Practical Considerations for Fab Academy

Advantages of XIAO RP2040

  • ✅ Very compact size - fits in small enclosures
  • ✅ Powerful dual-core processor
  • ✅ Castellated pads - can surface mount to custom PCBs
  • ✅ Good GPIO count for size
  • ✅ Native USB support
  • ✅ Affordable (~$5-7)
  • ✅ PIO capability for advanced interfacing

Key Warnings

  • ⚠️ 3.3V logic only - not 5V tolerant
  • ⚠️ Limited current per pin (~12mA)
  • ⚠️ Only 4 analog inputs (vs more on some boards)
  • ⚠️ Must plan pin assignments to avoid conflicts
  • ⚠️ BOOT button required for initial programming

Pin Assignment Strategy

When planning circuits: 1. List all required inputs/outputs 2. Identify which need special features (ADC, I2C, etc.) 3. Assign pins avoiding conflicts 4. Document choices clearly 5. Create a pin map table for team reference

Example Pin Map Template: | Pin | GPIO | Function | Project Use | Notes | |-----|------|----------|-------------|-------| | D0 | GPIO26/A0 | Analog | Temperature sensor | ADC required | | D1 | GPIO27/A1 | Analog | Light sensor | ADC required | | D4 | GPIO6/SDA | I2C | OLED display | I2C locked | | D5 | GPIO7/SCL | I2C | OLED display | I2C locked | | D10 | GPIO3 | Digital | Button input | Available GPIO |


7. Resources Referenced

Datasheets

  • RP2040 Microcontroller Datasheet (Raspberry Pi)
  • XIAO RP2040 Specifications (Seeed Studio)

Pin Diagrams

  • RP2040 QFN-56 chip pinout (30 GPIO pins)
  • XIAO RP2040 board pinout (14 exposed pins)

Development Tools

  • Arduino IDE with RP2040 board support
  • Thonny (for MicroPython)
  • VSCode + PlatformIO

8. Next Steps for Project

  • Install and test Arduino IDE setup
  • Run basic blink sketch to verify board functionality
  • Test analog input with potentiometer
  • Test I2C communication if using sensors/displays
  • Create detailed pin assignment plan for group project
  • Document specific sensor/actuator connections
  • Begin prototype on breadboard

9. Key Takeaways

  1. Microcontroller vs Chip: RP2040 is the chip; XIAO RP2040 is a development board with the chip plus supporting circuitry

  2. Pin Multiplexing: 14 physical pins ≠ 14 functions. Each pin can do multiple things, but only one at a time

  3. 3.3V Logic: Critical safety consideration - always check voltage compatibility

  4. ADC ≠ PWM: Analog input reads voltages; PWM output simulates voltages through digital pulses

  5. Planning is Essential: Document pin assignments before building to avoid conflicts

  6. External Flash: Unlike traditional microcontrollers, RP2040 requires external flash (2MB included on XIAO board)

  7. Fab Academy Value: The compact size and castellated pads make XIAO ideal for custom PCB integration in final projects


Documentation Philosophy

This summary demonstrates: - Understanding of fundamental concepts, not just copy-paste specs - Recognition of practical implications (voltage levels, current limits, pin conflicts) - Clear explanations suitable for team members also new to microcontrollers - Foundation for making informed design decisions in our group project

Note: This is a living document. As we progress through the project, we'll add sections on actual implementation, troubleshooting discoveries, and lessons learned from hands-on experience.


Session conducted as part of Fab Academy 2026 group project preparation.