Opens in a new tab

Raspberry Pi Pico Pinout

Raspberry Pi Pico is a small, inexpensive development board with the RP2040 microcontroller – the first chip Raspberry Pi designed in-house. It has two cores, plenty of peripherals and, above all, PIO, which lets you build interfaces the chip doesn’t otherwise have. You program it over USB by dragging and dropping a UF2 file, no programmer needed.

Specifications

  • RP2040: 2× Arm Cortex-M0+ up to 133 MHz
  • 264 kB SRAM, 2 MB flash on the board
  • 26 GPIO with 3.3 V logic, 3 of them with a 12-bit ADC
  • 2× UART, 2× SPI, 2× I2C, 16 PWM channels, 8 PIO state machines
  • USB 1.1 (host and device), micro USB connector
  • 1.8–5.5 V power via VSYS, onboard LED on GP25
  • 21 × 51 mm, castellated pads on the edge – the board can be soldered directly onto a PCB

Besides the basic version, there is the Pico H with soldered headers and a debug connector, the Pico W with Wi-Fi and Bluetooth, and the successor Pico 2 with the RP2350 chip.

You can program it in MicroPython, CircuitPython, C/C++ (Pico SDK) or the Arduino IDE.

Pinout and pin table

Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.

Pin names:
Raspberry Pi Pico – pinoutRaspberry Pi Pico – pinoutchiptron.eu · CC BY 4.0Raspberry Pi is a trademark of Raspberry Pi Ltd.RP2040micro USBLEDBOOTSELRaspberry Pi Pico▼ DEBUGSWCLKGNDSWDIOLED: GP25 1 GP0 UART0 TX I2C0 SDA SPI0 RX 2 GP1 UART0 RX I2C0 SCL SPI0 CSn 3 GND 4 GP2 I2C1 SDA SPI0 SCK 5 GP3 I2C1 SCL SPI0 TX 6 GP4 UART1 TX I2C0 SDA SPI0 RX 7 GP5 UART1 RX I2C0 SCL SPI0 CSn 8 GND 9 GP6 I2C1 SDA SPI0 SCK 10 GP7 I2C1 SCL SPI0 TX 11 GP8 UART1 TX I2C0 SDA SPI1 RX 12 GP9 UART1 RX I2C0 SCL SPI1 CSn 13 GND 14 GP10 I2C1 SDA SPI1 SCK 15 GP11 I2C1 SCL SPI1 TX 16 GP12 UART0 TX I2C0 SDA SPI1 RX 17 GP13 UART0 RX I2C0 SCL SPI1 CSn 18 GND 19 GP14 I2C1 SDA SPI1 SCK 20 GP15 I2C1 SCL SPI1 TX 40 VBUS → 5 V from USB (only when USB is connected) 39 VSYS ← Power input 1.8–5.5 V 38 GND 37 3V3_EN ← Connect to GND to turn off the 3.3 V supply 36 3V3(OUT) → 3.3 V output, max. load ~300 mA 35 ADC_VREF ↔ ADC reference (can also be external) 34 GP28 UART0 TX I2C0 SDA SPI1 RX ADC2 33 AGND Analog ground for the ADC (GP26–28) 32 GP27 I2C1 SCL SPI1 TX ADC1 31 GP26 I2C1 SDA SPI1 SCK ADC0 30 RUN ← Reset – connecting to GND restarts the chip 29 GP22 I2C1 SDA SPI0 SCK 28 GND 27 GP21 UART1 RX I2C0 SCL SPI0 CSn 26 GP20 UART1 TX I2C0 SDA SPI0 RX 25 GP19 I2C1 SCL SPI0 TX 24 GP18 I2C1 SDA SPI0 SCK 23 GND 22 GP17 UART0 RX I2C0 SCL SPI0 CSn 21 GP16 UART0 TX I2C0 SDA SPI0 RX GPIO UART I2C SPI ADC (analog) Power Ground (GND) Control / reset
Download:PNGSVG
Pin table – Raspberry Pi Pico
PinNameDirectionUARTI2CSPIPWMADCNote
1GP0input/outputUART0 TXI2C0 SDASPI0 RXPWM0 A
2GP1input/outputUART0 RXI2C0 SCLSPI0 CSnPWM0 B
3GND–
4GP2input/outputUART0 CTSI2C1 SDASPI0 SCKPWM1 A
5GP3input/outputUART0 RTSI2C1 SCLSPI0 TXPWM1 B
6GP4input/outputUART1 TXI2C0 SDASPI0 RXPWM2 A
7GP5input/outputUART1 RXI2C0 SCLSPI0 CSnPWM2 B
8GND–
9GP6input/outputUART1 CTSI2C1 SDASPI0 SCKPWM3 A
10GP7input/outputUART1 RTSI2C1 SCLSPI0 TXPWM3 B
11GP8input/outputUART1 TXI2C0 SDASPI1 RXPWM4 A
12GP9input/outputUART1 RXI2C0 SCLSPI1 CSnPWM4 B
13GND–
14GP10input/outputUART1 CTSI2C1 SDASPI1 SCKPWM5 A
15GP11input/outputUART1 RTSI2C1 SCLSPI1 TXPWM5 B
16GP12input/outputUART0 TXI2C0 SDASPI1 RXPWM6 A
17GP13input/outputUART0 RXI2C0 SCLSPI1 CSnPWM6 B
18GND–
19GP14input/outputUART0 CTSI2C1 SDASPI1 SCKPWM7 A
20GP15input/outputUART0 RTSI2C1 SCLSPI1 TXPWM7 B
21GP16input/outputUART0 TXI2C0 SDASPI0 RXPWM0 A
22GP17input/outputUART0 RXI2C0 SCLSPI0 CSnPWM0 B
23GND–
24GP18input/outputUART0 CTSI2C1 SDASPI0 SCKPWM1 A
25GP19input/outputUART0 RTSI2C1 SCLSPI0 TXPWM1 B
26GP20input/outputUART1 TXI2C0 SDASPI0 RXPWM2 A
27GP21input/outputUART1 RXI2C0 SCLSPI0 CSnPWM2 B
28GND–
29GP22input/outputUART1 CTSI2C1 SDASPI0 SCKPWM3 A
30RUNinputReset – connecting to GND restarts the chip
31GP26input/outputUART1 CTSI2C1 SDASPI1 SCKPWM5 AADC0
32GP27input/outputUART1 RTSI2C1 SCLSPI1 TXPWM5 BADC1
33AGND–Analog ground for the ADC (GP26–28)
34GP28input/outputUART0 TXI2C0 SDASPI1 RXPWM6 AADC2
35ADC_VREFinput/outputADC reference (can also be external)
363V3(OUT)output3.3 V output, max. load ~300 mA
373V3_ENinputConnect to GND to turn off the 3.3 V supply
38GND–
39VSYSinputPower input 1.8–5.5 V
40VBUSoutput5 V from USB (only when USB is connected)
SWDSWCLKinputDebugging (SWD) – clock
SWDGND–
SWDSWDIOinput/outputDebugging (SWD) – data

Pins used on the board

These chip pins are used by parts on the board and are not broken out:

PinFunction on the board
GP23Power converter mode control (SMPS PS)
GP24VBUS detection (is USB connected?)
GP25Onboard LED
GP29ADC3 – measures VSYS/3

What to watch out for

  • GPIO are not 5V tolerant. Use a level shifter for 5V signals.
  • ADC is only on GP26–28 (ADC0–2), range 0–3.3 V. ADC3 internally measures VSYS/3.
  • UART, I2C and SPI can be routed to several different pins – the table shows all options.
  • Don’t draw more than about 300 mA from the 3V3(OUT) pin.
  • The onboard LED is on GP25. On the Pico W it is elsewhere – on a GPIO of the Wi-Fi chip.

Raspberry Pi Pico projects on chiptron.eu/

The Pico has appeared in a number of projects on chiptron.eu/:

  • Picogame – a 2D game engine for CircuitPython on RP2040 and RP2350
  • Scoppy – turn a Pico and a phone into a portable oscilloscope and logic analyzer
  • 100 IoT projects in 100 days – ready-made MicroPython projects, many of them for the Pico

More pinouts

See all pinouts on the Pinouts page.

Related Articles