Raspberry Pi Pico (RP2040)
Raspberry Pi Pico: RP2040 (2× Cortex-M0+, 125 MHz) with real firmware from an Arduino sketch (Arduino-Pico core) or ELF/HEX: digitalWrite/Read, analogRead (GP26–28), Serial / Serial1 (GP0 TX, GP1 RX), millis/delay, attachInterrupt, analogWrite (PWM), Wire (I²C), SPI, PIO (Servo, tone, NeoPixel), both cores (setup1/loop1, rp2040.fifo). The onboard LED is on GP25 (LED_BUILTIN). Supply via USB (internal 3.3 V) or externally on 3V3.
Key data
- Category
- Arduino
- Simulation model
- Microcontroller with real firmware
- Manufacturer part number
- Raspberry Pi Pico (SC0915)
- Reference prefix
- A
- Pins
- 31
- Land pattern
- RaspberryPi_Pico_Common_THT
Notes
The firmware runs on an emulated CPU core, instruction by instruction. Peripherals that the model implements (GPIO, timers, UART, SPI, I²C, ADC and others, see the description) act on the pins of the circuit, so the analog parts around the chip see the same voltages and timing as on a real board.
- Right-click the part and choose "Open in code editor" to write and compile its code; "Serial monitor" shows its UART output.
- In the inspector you can load a demo firmware or your own ELF / Intel HEX / BIN file instead.
- GPIO pins are real circuit pins: an LED on an output needs a series resistor, an input needs a defined level (pull-up or pull-down).
- The debugger in the code view stops at breakpoints and shows registers, variables and the call stack.
Simulation model
An emulated CPU core runs the firmware binary instruction by instruction. The GPIO pins are pins of the analog circuit: outputs drive through a driver resistance, inputs read the voltage with thresholds.
- Device
- rp2040
- CPU core
- ARM Cortex-M0+ dual-core
- Emulator
- ARM Cortex-M emulator
- Firmware
- Arduino sketch compiled in the code view (Arduino-Pico core), or your own ELF / Intel HEX / BIN file
- Flash / RAM for firmware
- 2 MB / 256 KB
- Supply pins
- 3V3 / GND
- Mapped GPIO pins
- 28
Pins 31
simulatedreal chip onlyPin functions from the emulator and the datasheet.
| Pin | Name | Functions | Use |
|---|---|---|---|
| VSYS | VSYSSupply pin | Main supply 1.8–5.5 V into the on-board buck-boost regulator (USB 5 V arrives here through a diode) | |
| 3V3 | 3V3Supply pin | 3.3 V output of the on-board regulator (up to about 300 mA); 3.3 V input with supply = extern | |
| GND | GNDGround pin | Ground | |
| GP0 | GP0/TXI/O pin | SPI0_RXUART0_TXI2C0_SDAPWM0_A | Serial1 TX (UART0) in Arduino-Pico |
| GP1 | GP1/RXI/O pin | SPI0_CSnUART0_RXI2C0_SCLPWM0_B | Serial1 RX (UART0) in Arduino-Pico |
| GP2 | GP2I/O pin | SPI0_SCKUART0_CTSI2C1_SDAPWM1_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP3 | GP3I/O pin | SPI0_TXUART0_RTSI2C1_SCLPWM1_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP4 | GP4/SDAI/O pin | SPI0_RXUART1_TXI2C0_SDAPWM2_A | Wire SDA (I2C0) in Arduino-Pico: pull-up 4.7 kΩ to 3V3 |
| GP5 | GP5/SCLI/O pin | SPI0_CSnUART1_RXI2C0_SCLPWM2_B | Wire SCL (I2C0) in Arduino-Pico: pull-up 4.7 kΩ to 3V3 |
| GP6 | GP6I/O pin | SPI0_SCKUART1_CTSI2C1_SDAPWM3_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP7 | GP7I/O pin | SPI0_TXUART1_RTSI2C1_SCLPWM3_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP8 | GP8I/O pin | SPI1_RXUART1_TXI2C0_SDAPWM4_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP9 | GP9I/O pin | SPI1_CSnUART1_RXI2C0_SCLPWM4_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP10 | GP10I/O pin | SPI1_SCKUART1_CTSI2C1_SDAPWM5_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP11 | GP11I/O pin | SPI1_TXUART1_RTSI2C1_SCLPWM5_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP12 | GP12I/O pin | SPI1_RXUART0_TXI2C0_SDAPWM6_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP13 | GP13I/O pin | SPI1_CSnUART0_RXI2C0_SCLPWM6_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP14 | GP14I/O pin | SPI1_SCKUART0_CTSI2C1_SDAPWM7_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP15 | GP15I/O pin | SPI1_TXUART0_RTSI2C1_SCLPWM7_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP16 | GP16/MISOI/O pin | SPI0_RXUART0_TXI2C0_SDAPWM0_A | SPI MISO (SPI0) in Arduino-Pico |
| GP17 | GP17I/O pin | SPI0_CSnUART0_RXI2C0_SCLPWM0_B | SPI chip select (SPI0) in Arduino-Pico |
| GP18 | GP18/SCKI/O pin | SPI0_SCKUART0_CTSI2C1_SDAPWM1_A | SPI SCK (SPI0) in Arduino-Pico |
| GP19 | GP19/MOSII/O pin | SPI0_TXUART0_RTSI2C1_SCLPWM1_B | SPI MOSI (SPI0) in Arduino-Pico |
| GP20 | GP20I/O pin | SPI0_RXUART1_TXI2C0_SDAPWM2_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP21 | GP21I/O pin | SPI0_CSnUART1_RXI2C0_SCLPWM2_B | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP22 | GP22I/O pin | SPI0_SCKUART1_CTSI2C1_SDAPWM3_A | GPIO; SPI, UART, I²C or PWM by function select (see the functions) |
| GP26 | GP26/A0I/O pin | SPI1_SCKUART1_CTSI2C1_SDAPWM5_AADC0 | Analog input A0 (ADC0), 0 … 3.3 V |
| GP27 | GP27/A1I/O pin | SPI1_TXUART1_RTSI2C1_SCLPWM5_BADC1 | Analog input A1 (ADC1), 0 … 3.3 V |
| GP28 | GP28/A2I/O pin | SPI1_RXUART0_TXI2C0_SDAPWM6_AADC2 | Analog input A2 (ADC2), 0 … 3.3 V |
| GP25 | GP25/LEDI/O pin | SPI1_CSnUART1_RXI2C0_SCLPWM4_B | On-board LED (LED_BUILTIN) |
| RUN | RUNInput pin | RUN | Reset, active low: button to GND restarts the board |
Parameters 1
supplyusb: the Pico's regulator holds 3V3 (as on a USB cable); extern: connect 3.3 V to 3V3 yourself
PCB
RaspberryPi_Pico_Common_THT| Package | Land pattern | Status | Source |
|---|---|---|---|
| Modul THT | RaspberryPi_Pico_Common_THT | Verified land pattern | KiCad 10.0.7: symbol RaspberryPi_Pico, footprint Module:RaspberryPi_Pico_Common_THT; Pico soldered in as a module (perfboard 2.54 mm pitch) |
| Modul SMD | RaspberryPi_Pico_SMD | Verified land pattern | KiCad 10.0.7: symbol RaspberryPi_Pico, footprint Module:RaspberryPi_Pico_SMD; Pico soldered via the castellated pads |