Raspberry Pi — Pico

Raspberry Pi Pico — Introduction

The Raspberry Pi Pico is a low-cost, high-performance microcontroller board built around the RP2040 chip (Pico / Pico W) and the newer RP2350 chip (Pico 2 / Pico 2 W). Unlike the Raspberry Pi SBC, the Pico is a microcontroller — it runs bare-metal code, not Linux.


Pico vs. Pico 2

FeatureRaspberry Pi Pico (RP2040)Raspberry Pi Pico 2 (RP2350)
ChipRP2040RP2350
CPU Cores2× Cortex-M0+ at 133 MHz2× Cortex-M33 at 150 MHz (+ 2 RISC-V)
RAM264 KB SRAM520 KB SRAM
Flash2 MB (external)4 MB (external)
USBUSB 1.1 (device + host)USB 1.1 (device + host)
GPIO26 multi-function pins26 multi-function pins
PIO2× PIO state machines3× PIO state machines
SecurityNoneTrustZone, secure boot
Price~$4~$5

For Analog Data workshops, either board works. If you have a Pico W or Pico 2 W, you also get built-in Wi-Fi (CYW43439 chip).


Development Options

You have two main choices for developing on the Pico:

Option 1: MicroPython

  • Language: Python (subset)
  • Setup: Drag-and-drop firmware, use Thonny IDE or mpremote
  • Best for: Rapid prototyping, beginners, scripting
  • Guide: MicroPython on Pico →

Option 2: C/C++ SDK

  • Language: C or C++
  • Setup: CMake, arm-none-eabi-gcc, VS Code extension
  • Best for: Performance-critical apps, custom hardware drivers, production
  • Guide: C/C++ SDK Setup →

The RP2040 / RP2350 Architecture

What makes the Pico special:

PIO (Programmable I/O)

A unique feature — 8 tiny state machines that implement custom hardware protocols in software. PIO can implement WS2812 LED control, custom SPI/I2C/UART, even DVI video output — all without using the main CPU.

Dual-Core

Both cores (Cortex-M0+ on RP2040, Cortex-M33 on RP2350) can run code simultaneously. You can run your main application on Core 0 and a time-critical task (e.g., sensor reading) on Core 1.

USB in Firmware

The Pico can act as a USB device (e.g., appear as a keyboard, mouse, MIDI device, CDC serial port) or a USB host — all implemented in software using its USB hardware.


Pinout Reference

The Pico has 40 pins total:

text
               RP2040 / RP2350
         ┌─────────────────────┐
UART0 TX │ GP0           VBUS  │ USB Power (5V)
UART0 RX │ GP1           VSYS  │ Power In (1.8–5.5V)
         │ GND            GND  │
SPI0 SCK │ GP2           3V3EN │ 3.3V Enable
SPI0 TX  │ GP3            3V3  │ 3.3V Output
SPI0 RX  │ GP4           ADC_REF│
SPI0 CSn │ GP5           GP28  │ ADC2
         │ GND            GND  │
I2C0 SDA │ GP6           GP27  │ ADC1 / I2C1 SCL
I2C0 SCL │ GP7           GP26  │ ADC0 / I2C1 SDA
         │ GP8            RUN  │ Reset
         │ GP9            GP22 │
         │ GND            GND  │
         │ GP10           GP21 │
         │ GP11           GP20 │
         │ GP12           GP19 │ SPI0 TX
         │ GP13           GP18 │ SPI0 SCK
         │ GND            GND  │
         │ GP14           GP17 │ SPI0 CSn
         │ GP15           GP16 │ SPI0 RX
         └─────────────────────┘
              LED on GP25 (built-in)

Entering BOOTSEL Mode

To flash new firmware (either MicroPython or C/C++), you need to put the Pico into BOOTSEL mode:

  1. Disconnect the Pico from USB
  2. Hold the BOOTSEL button (white button on top of the board)
  3. Connect the USB cable while holding BOOTSEL
  4. Release BOOTSEL once connected

The Pico will appear as a USB mass storage device called RPI-RP2 (or RP2350 for Pico 2) on your computer.

You can now drag-and-drop a .uf2 firmware file onto this drive.


Next Steps

Previous
First Boot & Updates