# RP2040

RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Ltd. In January 2021, it was released as part of the Raspberry Pi Pico board. Its successor is the RP2350 series.

## Overview

Announced on 21 January 2021, the RP2040 is the first microcontroller designed by Raspberry Pi Ltd. The microcontroller is low cost, with the Raspberry Pi Pico being introduced at US$4 and the RP2040 itself costing US$1. The microcontroller can be programmed in assembly, C, C++, Swift, Free Pascal, Rust, Go, MicroPython, CircuitPython, Ada, TypeScript and Zig. It is powerful enough to run TensorFlow Lite.
At announcement time, four other manufacturers (Adafruit, Pimoroni, Arduino, SparkFun) were at advanced stages of their product design, awaiting the widespread availability of chips to be put into production.
Hackaday notes the benefits of the RP2040 as being from Raspberry Pi, having a good feature set, and being released in low-cost packages.
Multiple stepping levels of the chip have been produced.

## Features

The RP2040 chip is 40 nm silicon in a 7 × 7 mm QFN-56EP surface-mount device (SMD) package manufactured by TSMC
* Key features:.
** Dual ARM Cortex-M0+ cores (ARMv6-M), Originally run at 133 MHz, but later certified at 200 MHz
*** Each core has an integer divider peripheral and two interpolators
** 264 KB SRAM in six independent banks (four 64 KB, two 4 KB)
** No internal flash or EEPROM memory (after reset, the boot-loader loads firmware from either external flash memory or USB into internal SRAM)
** QSPI bus controller supports up to 16 MB of external flash memory
** DMA controller, 12 channel, 2 IRQ
** AHB crossbar, fully-connected
** On-chip programmable low-dropout regulator (LDO) to generate core voltage
** Two on-chip PLLs to generate USB and core clocks
** 30 GPIO pins, of which four can optionally be used as analog inputs
* Peripherals:
** One USB 1.1 (LS & FS) controller and PHY, host and device support, 1.5 Mbps (Low Speed) and 12 Mbps (Full Speed)
** Two UART controllers
** Two SPI controllers
** One QSPI (quad SPI) controller (SSI), supports 1 / 2 / 4-bit SPI transfers, 1 chip select
** Two I²C controllers
** Eight PIO (programmable input–output) state machines
** 16 PWM channels
** 4-channel 12-bit 500-ksps SAR ADC, extra channel is connected to internal temperature sensor
For comparison with the RP2350, see RP2350 § Family comparison.

## Boards

A number of manufacturers have announced their own boards using the RP2040. A selection of the growing number is here:
| Board name | Manufacturer | Size (mm) | Header pins | Debug connection | Number of pads | USB connector | Other connectors | Flash size | GPIO pins | ADC pins | Buttons | Other features |
| Pico | Raspberry Pi Ltd | 51×21 | 40+3 | via headers | 6 | micro-USB | | 2 MB | 26 | 3 | BOOTSEL | |
| Pico W | Raspberry Pi Ltd | 51×21 | 40+3 | via headers | 6 | micro-USB | | 2 MB | 26 | 3 | BOOTSEL | Wi-Fi, Bluetooth |
| XIAO RP2040 | Seeed Studio | 20×17.5×3.5 | 14 | Reset Button/ Boot Button | | USB Type-C interface | | 2 MB | | | BOOTSEL + RESET | |
| Nano RP2040 Connect | Arduino | 45×18 | 30 | via pads | 5+4+2 | micro-USB | | 16 MB | | | 1 | Wi-Fi, Bluetooth, 9-axis IMU, microphone |
| Tiny 2040 | Pimoroni | 22.9×18.2×6 | 8+3 | via headers | | USB-C | | 8 MB | 12 | 4 | BOOTSEL + RESET | |
| Keybow 2040 | Pimoroni | 76x76x30 | 0 (USB only) | | | USB-C | | 2 MB | | | 16 keys | |
| PicoSystem | Pimoroni | 96.6×42.7×15.5 | 0 (self contained) | | | USB-C | | 16 MB | | | 4 + joypad | Color 240×240 LCD, onboard battery |
| Feather RP2040 | Adafruit | 51×23×7 | 28 | via pins | | USB-C | STEMMA QT, lipo battery | 8 MB | 21 | 4 | BOOTSEL + RESET | Battery charger |
| ItsyBitsy RP2040 | Adafruit | 36×18×4 | 33 | via headers | | micro-USB | | 4 MB | 23 | 4 | BOOTSEL + RESET | |
| Metro RP2040 | Adafruit | 71x53×13 | 32 | SWD + 3 pin JST SH compatible | | USB Type-C | DC jack for 6-12VDC / STEMMA QT / SWD / pico probe | 16 MB | 24 | 4 | BOOTSEL + RESET | NeoPixel LED, Micro SD |
| QT Py RP2040 | Adafruit | 22×18×6 | 14 | Reset Button/ Boot Button | | USB-C | STEMMA QT | 8 MB | 13 | 4 | BOOTSEL + RESET | 3.3vdc regulator, NeoPixel LED |
| Pro Micro – RP2040 | Sparkfun | 36×18 | 24 | | 4+2 | USB-C | QWIIC | 16 MB | 20 | 4 | BOOTSEL + RESET | |
| Thing Plus RP2040 | Sparkfun | 59×23 | 28 | JTAG pins | | USB-C | QWIIC, lipo battery | 16 MB | 18 | 4 | BOOTSEL + RESET | Battery charger |
| MicroMod RP2040 | Sparkfun | 22×22 | 0 | | | edge connector | edge connector | 16 MB | 29 | 3 | none | |
| Müsli USB Pmod | Lone Dynamics | 45×20.32 | 12 | SWD | | USB Type-A female | 12-pin male PMOD, SWD | 256 KB | 8 | 0 | BOOTSEL | USB host, 5V boost converter |
| Werkzeug USB Multi-Tool | Lone Dynamics | 50×50 | 32 | | | USB-C | 12-pin female PMOD, USB Type-A female | 1 MB | 24 | 4 | BOOTSEL | USB device/host, PMOD |
| RP2040 | WeAct Studio | 53x21.52 | 40+4 | via headers | | USB-C | | 2 MB, 4 MB, 8 MB, 16 MB | 26 | 4 | BOOTSEL + RESET | |
| RP2040-Zero | Waveshare Electronics | 23×18 | 23 | | | USB-C | 10-pad connector | 2 MB | 29 | 4 | BOOTSEL + RESET | RGB LED (WS2812) |
| Pico2040 | zeankun.dev | 51x18 | 40+3 (2mm and 2.54mm variants are available) | SWD | 4 | micro-USB | | 16 MB, 32 MB, 64 MB, 128 MB | 28 | 4 | BOOTSEL + RESET | |
| Bus Pirate 5 | Where Labs, LLC | 60x37 | 10+9 | SWD | | USB-C | | 16MB | | | | |
| W5100S-EVB-Pico | WIZnet Co., Ltd. | 75x21 | 40+3 | via headers | | Micro-USB | RJ45 | 2 MB | 26 | 3 | BOOTSEL + RESET | Ethernet |
| W5500-EVB-Pico | WIZnet Co., Ltd. | 75x21 | 40+3 | via headers | | Micro-USB | RJ45 | 2 MB | 26 | 3 | BOOTSEL + RESET | Ethernet |
| W6100-EVB-Pico | WIZnet Co., Ltd. | 75x21 | 40+3 | via headers | | Micro-USB | RJ45 | 2 MB | 26 | 3 | BOOTSEL + RESET | Ethernet |
| WizFi360-EVB-Pico | WIZnet Co., Ltd. | 75×21 | 40+3 | via headers | | Micro-USB | | 2 MB | 26 | 3 | BOOTSEL + RESET | Wi-Fi |
| 0xCB-Helios | 0xCB | 36×18 | 40+3 | via headers | | USB-C | | 16 MB | 29 | | BOOTSEL + RESET | default off red power LED, blue user LED, level shifter to drive 5V components. ESD protection chip onboard |
| Picopad | Pájeníčko s.r.o. | 129x53 | 12 | via headers | | micro-USB | microSD, external connector | 2 MB | 6 | | BOOTSEL + RESET | on-off, Wi-Fi, micro SD card, external connector, IPS screen, speaker, battery |
| MUREX ANYESC | MUREX Robotics | 78×35 | 3 | via headers | | USB-C | edge connector | 8 MB | 3 | 0 | BOOTSEL + RESET | commercial ESC connector, 3 user LEDs |
| RP2040-PICO30 | OLIMEX Ltd | 51×21 | 40+3 | via headers | | USB-C | Optional UEXT (pUEXT) | 2 MB | 30 | 4 | BOOTSEL + RESET | 3.3V 2A (3A peak) DCDC, All 30 GPIOs available to the user, Optional status LED |
| RP2040-PICO30-16 | OLIMEX Ltd | 51×21 | 40+3 | via headers | | USB-C | Optional UEXT (pUEXT) | 16 MB | 30 | 4 | BOOTSEL + RESET | 3.3V 2A (3A peak) DCDC, All 30 GPIOs available to the user, Optional status LED |
| PicoUSB | VoltMake | 45×12x4 | 0 (USB only) | | | Dual sided USB-A | | 2 MB | | | BOOTSEL + MODE | status LED |