Skip to main content

RP2040

RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Ltd.

RP2040

By Phiarc - Own work, CC BY-SA 4.0, Link

The microcontroller can be programmed in assembly, C, C++, Swift, Free Pascal, Rust, Go, MicroPython, CircuitPython, Ada and TypeScript.

RP2040 Datasheet

Key features

  • 133 MHz dual ARM Cortex-M0+ cores (ARMv6-M)
  • 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. (NOTE: RP2350 family has 16 and 4).
  • 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. .