Raspberry Pi Pico pinout

A small, low-cost board with the Raspberry Pi RP2040 chip. 3.3 V logic (not 5 V tolerant), breadboard friendly, and flashed by dragging a file onto it.

Raspberry Pi Pico pinoutRP2040GP0UART0_TXGP1UART0_RXGNDGNDGP2UART0_CTSGP3UART0_RTSGP4I2C_SDAGP5I2C_SCLGNDGNDGP6UART1_CTSGP7UART1_RTSGP8UART1_TXGP9UART1_RXGNDGNDGP10UART1_CTSGP11UART1_RTSGP12UART0_TXGP13UART0_RXGNDGNDGP14UART0_CTSGP15UART0_RTSGP16SPI_MISOGP17SPI_CSGNDGNDGP18SPI_SCKGP19SPI_MOSIGP20UART1_TXGP21UART1_RXGNDGNDGP22UART1_CTSRUNRESETGP26ADC0GP27ADC1AGNDGNDGP28ADC2ADC_VREFADC_VREF3V3(OUT)3V3_OUT3V3_EN3V3_ENGNDGNDVSYSVSYSVBUSVBUSSWCLKSWD_CLKGNDGNDSWDIOSWD_IO
Top view, USB connector on the left. Colors: red power, grey ground, green GPIO, yellow analog, orange USB serial, blue I2C.

At a glance

Chip
RP2040
Processor
Dual-core Arm Cortex-M0+ at 133 MHz, 264 KB SRAM, 2 MB flash
Logic level
3.3 V. Not 5 V tolerant unless marked below.
Flashing tool
picotool (UF2)
Arduino board (FQBN)
rp2040:rp2040:rpipico
Live pin view in BoardPilot
Yes (diagnostic agent available)

Pins to avoid or use with care

Debug port: SWCLK, SWDIO

SWD/JTAG. Using them can stop a debugger from reaching the chip.

Good pins for LEDs, buttons and signals

GP15, GP14, GP13, GP12, GP11, GP10, GP22, GP21, GP20, GP6, GP7, GP2, GP3

Default pins in Arduino

I2C
SDA = GP4, SCL = GP5. Only these pins work with the Wire library defaults. Only certain pin pairs can be I2C on this chip, and SDA and SCL cannot be swapped in software. Wire uses GP4 (SDA) and GP5 (SCL); Wire.setSDA()/Wire.setSCL() before Wire.begin() can move I2C0 to GP0/GP1, GP8/GP9, GP12/GP13, GP16/GP17 or GP20/GP21. Wire1 defaults to GP26/GP27.
SPI
MOSI = GP19, MISO = GP16, SCK = GP18, CS = GP17.
Analog inputs
GP26, GP27, GP28 (0–3.3 V)

How to flash it

If the board is not found, hold the BOOTSEL button while plugging in the USB cable.

All 43 pins

PinGPIOChip pinFunctionsNotes
GP00GPIO, UART0_TX, SPI0_MISO, I2C0_SDA, PWM0_A, Serial1_TX
GP11GPIO, UART0_RX, SPI0_CS, I2C0_SCL, PWM0_B, Serial1_RX
GND—GND
GP22GPIO, UART0_CTS, SPI0_SCK, I2C1_SDA, PWM1_A
GP33GPIO, UART0_RTS, SPI0_MOSI, I2C1_SCL, PWM1_B
GP44GPIO, I2C_SDA (default), UART1_TX, SPI0_MISO, I2C0_SDA, PWM2_A
GP55GPIO, I2C_SCL (default), UART1_RX, SPI0_CS, I2C0_SCL, PWM2_B
GND—GND
GP66GPIO, UART1_CTS, SPI0_SCK, I2C1_SDA, PWM3_A
GP77GPIO, UART1_RTS, SPI0_MOSI, I2C1_SCL, PWM3_B
GP88GPIO, UART1_TX, SPI1_MISO, I2C0_SDA, PWM4_A, Serial2_TX
GP99GPIO, UART1_RX, SPI1_CS, I2C0_SCL, PWM4_B, Serial2_RX
GND—GND
GP1010GPIO, UART1_CTS, SPI1_SCK, I2C1_SDA, PWM5_A
GP1111GPIO, UART1_RTS, SPI1_MOSI, I2C1_SCL, PWM5_B
GP1212GPIO, UART0_TX, SPI1_MISO, I2C0_SDA, PWM6_A
GP1313GPIO, UART0_RX, SPI1_CS, I2C0_SCL, PWM6_B
GND—GND
GP1414GPIO, UART0_CTS, SPI1_SCK, I2C1_SDA, PWM7_A
GP1515GPIO, UART0_RTS, SPI1_MOSI, I2C1_SCL, PWM7_B
GP1616GPIO, SPI_MISO (default), UART0_TX, SPI0_MISO, I2C0_SDA, PWM0_A
GP1717GPIO, SPI_CS (default), UART0_RX, SPI0_CS, I2C0_SCL, PWM0_B
GND—GND
GP1818GPIO, SPI_SCK (default), UART0_CTS, SPI0_SCK, I2C1_SDA, PWM1_A
GP1919GPIO, SPI_MOSI (default), UART0_RTS, SPI0_MOSI, I2C1_SCL, PWM1_B
GP2020GPIO, UART1_TX, SPI0_MISO, I2C0_SDA, PWM2_A
GP2121GPIO, UART1_RX, SPI0_CS, I2C0_SCL, PWM2_B
GND—GND
GP2222GPIO, UART1_CTS, SPI0_SCK, I2C1_SDA, PWM3_A
RUN—RESETReset pin. Connect it to GND for a moment to restart the board. It has an internal pull-up.
GP2626GPIO, ADC0, UART1_CTS, SPI1_SCK, I2C1_SDA, PWM5_A, Wire1_SDAAnalog input ADC0 (0 to 3.3 V). Never put more than 3.3 V on this pin.
GP2727GPIO, ADC1, UART1_RTS, SPI1_MOSI, I2C1_SCL, PWM5_B, Wire1_SCLAnalog input ADC1 (0 to 3.3 V). Never put more than 3.3 V on this pin.
AGND—GND, ADC_GNDAnalog ground for GP26 to GP28. Use it as the ground for analog sensors.
GP2828GPIO, ADC2, UART0_TX, SPI1_MISO, I2C0_SDA, PWM6_AAnalog input ADC2 (0 to 3.3 V). Never put more than 3.3 V on this pin.
ADC_VREF—ADC_VREFReference voltage for the analog inputs (filtered 3.3 V). Do not power parts from it.
3V3(OUT)—3V3_OUT3.3 V output for sensors and modules. Keep the load under 300 mA.
3V3_EN—3V3_ENTurns the 3.3 V supply on or off. Leave it unconnected; connecting it to GND switches the board off.
GND—GND
VSYS—VSYSMain power input (1.8 to 5.5 V). From USB it is about 4.7 V (5 V minus a diode drop).
VBUS—VBUS5 V straight from the USB cable. It is 0 V when USB is not plugged in.
SWCLK—SWD_CLKDebug clock for a debug probe (SWD). Not a GPIO.
GND—GNDGround pin of the 3-pin debug header.
SWDIO—SWD_IODebug data for a debug probe (SWD). Not a GPIO.

Check your wiring with BoardPilot

BoardPilot shows this board in 3D, flags risky pins as you wire, and flashes it safely with a backup first.

Download BoardPilot

Sources

← All boards