Microcontrollers connect the world of software to the world of hardware. They allow developers to write software that interacts with the physical world in the same deterministic, cycle-accurate manner as digital logic. They offer high performance at low cost, outselling their more powerful brethren by a factor of ten to one. They are the workhorses that power the digital transformation of our world.
What is RP2040?
RP2040 is the debut microcontroller from Raspberry Pi. It brings our signature values of high performance, low cost, and ease of use to the microcontroller space.
Flexible I/O connects RP2040 to the physical world by allowing it to speak to almost any external device. High-performance breezes through integer workloads. Low cost helps ease the barrier to entry.
This isn’t just a powerful chip: it’s designed to help you bring every last drop of that power to bear. With six independent banks of RAM and a fully connected switch at the heart of its bus fabric, you can easily arrange for the cores and DMA engines to run in parallel without contention.
RP2040 is a stateless device, with support for cached execute-in-place from external QSPI memory. This design decision allows you to choose the appropriate density of non-volatile storage for your application, and to benefit from the low pricing of commodity Flash parts.
RP2040 is manufactured on a modern 40nm process node, delivering high performance, low dynamic power consumption, and low leakage, with a variety of low-power modes to support extended-duration operation on battery power.
Why is the chip called RP2040?
- Number of processor cores (2)
- Loosely which type of processor (M0+)
- floor(log2(ram / 16k))
- floor(log2(nonvolatile / 16k)) or 0 if no onboard nonvolatile storage
Figure 1. An explanation for the name of the RP2040 chip
What are the key features of RP2040?
- Dual Cortex M0+ processor cores, up to 133 MHz
- 264 kB of embedded SRAM in 6 banks
- 30 multifunction GPIO
- 6 dedicated IO for SPI Flash (supporting XIP)
- Dedicated hardware for commonly used peripherals
- Programmable IO for extended peripheral support
- 4 channel ADC with internal temperature sensor, 0.5 MSa/s, 12-bit conversion
- USB 1.1 Host/Device
Applications of RP2040
Whatever your microcontroller application, from machine learning to motor control, from agriculture to audio, RP2040has the performance, feature set, and support to make your product fly.
With two fast cores, plenty of on-chip RAM, and a port of TensorFlow Lite, RP2040 is a great platform for machine learning applications.
An alternative to Arduino - You can use the RP2040 to run less complex projects when you don’t need the size and power of a full Raspberry Pi, but don’t want to develop in an Arduino platform.
Additional features of RP2040 Chip
RP2040 has dual M0+ processor cores, DMA, internal memory and peripheral blocks connected via AHB/APB bus fabric.
Code may be executed directly from external memory through a dedicated SPI, DSPI or QSPI interface.
A small cache improves performance for typical applications.
Debug is available via the SWD interface.
Internal SRAM can contain code or data. It is addressed as a single 264 kB region, but physically partitioned into 6 banks to allow simultaneous parallel access from different masters.
DMA bus masters are available to offload repetitive data transfer tasks from the processors.
GPIO pins can be driven directly, or from a variety of dedicated logic functions.
Dedicated hardware for fixed functions such as SPI, I2C, UART.
Flexible configurable PIO controllers can be used to provide a wide variety of IO functions.
A USB controller with embedded PHY can be used to provide FS/LS Host or Device connectivity under software control.
Four ADC inputs that are shared with GPIO pins.
Two PLLs to provide a fixed 48MHz clock for USB or ADC, and a flexible system clock up to 133MHz.
It also has an internal Voltage Regulator to supply the core voltage
Explore Electronic Components
RP2040 Pinout:
Figure 2. RP2040 Pinout for QFN-56 7x7mm
Name |
Description |
GPIOx |
General-purpose digital input and output. RP2040 can connect one of a number of internal peripherals to each GPIO, or control GPIOs directly from software |
GPIOx/ADCy |
General-purpose digital input and output, with analogue-to-digital converter function. The RP2040 ADC has an analogue multiplexer which can select any one of these pins, and sample the voltage |
QSPIx |
Interface to a SPI, Dual-SPI or Quad-SPI flash device, with execute-in-place support. These pins can also be used as software-controlled GPIOs, if they are not required for flash access |
USB_DM and USB_DP |
USB controller, supporting Full Speed device and Full/Low Speed host. A 27Ω series termination resistor is required on each pin, but bus pullups and pulldowns are provided internally. |
XIN and XOUT |
Connect a crystal to RP2040’s crystal oscillator. XIN can also be used as a single-ended CMOS clock input, with XOUT disconnected. The USB bootloader requires a 12 MHz crystal or 12 MHz clock input. |
RUN |
Global asynchronous reset pin. Reset when driven low, run when driven high. If no external reset is required, this pin can be tied directly to IOVDD. |
SWCLK and SWDIO |
Access to the internal Serial Wire Debug multi-drop bus. Provides debug access to both processors, and can be used to download code. |
TESTEN |
Factory test mode pin. Tie to GND. |
GND |
Single external ground connection, bonded to a number of internal ground pads on the RP2040 die. |
IOVDD |
Power supply for digital GPIOs, nominal voltage 1.8 V to 3.3 V |
USB_VDD |
Power supply for internal USB Full Speed PHY, nominal voltage 3.3 V |
ADC_AVDD |
Power supply for analogue-to-digital converter, nominal voltage 3.3 V |
VREG_VIN |
Power input for the internal core voltage regulator, nominal voltage 1.8 V to 3.3 V |
VREG_VOUT |
Power output for the internal core voltage regulator, nominal voltage 1.1 V, 100 mA max current |
DVDD |
Digital core power supply, nominal voltage 1.1 V. Can be connected to VREG_VOUT, or to some other board-level power supply. |