Note: This is the Raspberry Pi RP2040 Dual-core ARM Cortex-M0+ Microcontroller IC.
Note: Please choose the preferred packaging from the options:
|RP2040 in 13-inch Tape/Reel - 3400 pcs||RP2040 in 7-inch Tape/Reel - 500 pcs||RP2040 - Single Unit Cut Tape|
The 1st MCU Chip from Raspberry Pi - RP2040
Raspberry Pi's 1st MCU, designed and produced from the ground up by Raspberry Pi Engineers. It is being launched on the Raspberry Pi Pico in January 2021. And now, it's available for everyone to make their own product!
Well, this explained it all:
In layman terms: Raspberry Pi Dual Core ARM Cortex-M0+, on-chip 264KByte RAM, with no on-chip Flash
What is Raspberry Pi RP2040?
Well, RP2040 is a dual-core ARM Cortex-M0+ microcontroller silicon with a flexible clock up to 133MHz. A microcontroller is a brain for development boards such as Arduino UNO, yet RP2040 offers way more powerful features! A microcontroller is the main IC that allows you to program for physical computing projects where it controls anything from small electronic components, LEDs, motors; reading information from sensors, or communicate with other microcontrollers.
We probably have lots of microcontrollers in our house already. For example, a washing machine is controlled by a microcontroller; most likely our watch is too; there is also one in a microwave. And one of the closest examples to a digital maker might be the 3D printer. The controller board has a microcontroller on it. Of course, all these microcontrollers already have their programs for the applications.
Dual-Core ARM Cortex M0+
It comes with not one, but two cores (dual-core) of a 32-bit ARM Cortex M0+ processor. A flexible clocking system, with configurable up to a maximum speed of 133MHz! This tiny MCU comes with a whopping 264 Kbyte of SRAM, built-in. And offers an option for designers to match external Quad-SPI Flash of up to 16 MByte, and eXecute in Place (XIP). Large RAM and Flash size enable you to utilize high-level programming languages like MicroPython for this microcontroller.
USB 1.1 PHY (Host and Device Ready)
RP2040 contains a USB 2.0 controller that can operate as either:
- A Full-Speed device (12 Mbit/s)
- A host that can communicate with both Low Speed (1.5 Mbit/s) and Full-Speed devices. This includes multiple downstream devices connected to a USB hub.
RP2040 comes with an integrated USB 1.1 PHY which interfaces the USB 2.0 controller with the DP and DM pins of the chip. With this, the RP2040 has provided ease of interface to computers. This has been widely used on Raspberry Pi Pico, just download the UF2 file, drag and drop in the drive (Mass Storage), and you can program the RP2040 with MicroPython or CircuitPython, no additional programmer is needed. Neat!
Peripheral Rich MCU
Block Diagram of RP2040
With 30 GPIO (4 reserves for QSPI with External Flash), there are plenty of peripherals for many different applications. Among these 26 GPIOs, there are:
- 5 x 12-bit ADC with 500ksps (kilo sample per second)
- 4 x ADC extended to GPIO
- 1 x ADC tied to an internal temperature sensor
- 2 x UART
- 2 x SPI
- 2 x I2C
- 16 x PWM pin
- Internally, it also comes with 1 x Timer with 4 alarms and 1 x Real Time Counter
- 2 x High-Speed Programmable IO (PIO) blocks that are flexible and user-programmable. It can emulate interfaces such as the SD card interface or VGA.
MicroPython, CircuitPython, C, and C++, and C alike in Arduino IDE
As many platforms are now working to build the ecosystem around the Raspberry Pi RP2040, more programming language is onboard to support it. Initially, MicroPython, C, and C++. Now CircuitPython from Adafruit is also being developed to support RP2040. Not to forget Arduino IDE also supports the program of RP2040 with the launch of Arduino Nano RP2040 Connect.
As Python is the official programming language of Raspberry Pi OS, MicroPython is chosen to be one of the programming languages for Raspberry Pi RP2040. MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimized to run on microcontrollers and in constrained environments.
Programming loading of MicroPython and CircuitPython into Raspberry Pi RP2040 is effortless, as it is being shown with Raspberry Pi Pico. Just connect the RP2040 to any computer (including Raspberry Pi SBC) via USB, then drag and drop the file onto it. Yes! It is that easy! And the UF2 files for MicroPython or CircuitPython are ready for everyone to download and use.
High-Speed Programmable Input/Output
One of the features that make RP2040 different from most other microcontroller IC is the Programmable Input/Output block. There are two PIO blocks and they are unique for RP2040, special!
Check out this video about PIO from the Raspberry Pi team:
Just imagine you want to develop a library or driver for a certain protocol that is not standard, for example, to drive WS2812B or SK6812 (a.ka: NeoPixel). It requires accurate timing to send RGB information. Conventionally, many have to drill down to assembly language and bit-bang the IO with accurate instruction set timing to do that! Now, you can utilize the PIO to do that from a high-level programming language.
PIO allows you to create additional hardware interfaces or even new types of interfaces. If you’ve ever looked at the peripherals on a microcontroller and thought “I need four UARTs and I only have two,” or “I’d like to output DVI video,” or even “I need to communicate with this accursed serial device I found, but there is no hardware support anywhere,” then you will have fun with PIO.
Here is another detailed explanation about Programmable I/O from stacksmashing:
Features and Specs:
- 1st Microcontroller Silicon designed by Raspberry Pi (Raspberry Pi Silicon)
- Proven with Raspberry Pi Pico
- Dual-Core, 32-bit ARM Cortex M0+ Processor
- Flexible clock, configurable max to 133MHz
- On-chip 264KB of SRAM
- Support up to 16MB of external Flash (QSPI)
- 12 Channels of DMA (Direct Memory Access)
- 3-pin ARM Serial Wire Debug (SWD) port
- Accelerated floating-point libraries on-chip
- Comprehensive SDK, software examples, and documentation
- QFN-56 package:
What Will You Need to Get Started?
Get yourself the development board based on Raspberry Pi RP2040 will help you unleash the power of it:
- Maker Pi RP2040 - Simplifying Robotics with Raspberry Pi® RP2040
- Maker Pi Pico with Pre-soldered Pico
- Raspberry Pi Pico with Pre-soldered Headers
- Raspberry Pi Pico Basic Kit - with Pico
- 1 x Raspberry Pi RP2040 IC in 13" Reel/Tape for SMT Machine - 3400 pcs
- 1 x Raspberry Pi RP2040 IC in 7" Reel/Tape for SMT Machine - 500 pcs
- 1 x Raspberry Pi RP2040 Cut Tape - Single Unit (sealed in ESD pack)
- RP2040 Datasheet (pdf), A microcontroller by Raspberry Pi
- Getting Started with Raspberry Pi Pico (URL)
- Getting Started with Raspberry Pi Pico (pdf), C/C++ Development with the Pico and other RP2040-based microcontroller boards
- Raspberry Pi Pico Datasheet (pdf), An RP2040-based microcontroller board
- Pico Python SDK (pdf), A MicroPython Environment for the RP2040 Microcontroller
- Pico C/C++ SDK (pdf), Libraries and Tools for C/C++ Development on the RP2040 Microcontroller
- Raspberry Pi RP2040 vs STM32F1 vs SAMD21G18 vs ESP32-S2
- A New Challenger in MCU Platform – Raspberry Pi Pico, an article about Raspberry Pi Pico and RP2040
- Raspberry Pi Pico Vs Arduino UNO R3, an article to compare the spec of RPi Pico and Arduino UNO R3