Small Form Factor RP2040 Boards

# Small Form Factor RP2040 Boards
###### tags: `Raspberry Pi` `RaspberryPi` `Raspberry` `Pi` `Pico` `RaspberryPiPico` `RP2040` `MicroPython` `CircuitPython` `Arduino` `C/C++` `Pimoroni` `Tiny2040` `Tiny 2040` `Seeed` `Seeed Studio` `XIAO` `XIAO RP2040` `Waveshare` `RP2040-Zero`

## Introduction
Given the great potential of the **RP2040** chip announced on the 21st of January 2021 as the first microcontroller designed by **Raspberry Pi Ltd**, more and more boards from different manufacturers have been populating the shelves of enthusiast makers.

## About this article
This article will be covering the general characteristics of the RP2040 chip, and introduce three popular small form factor boards that I have been considering for some of my projects to come.

* **[Pimoroni Tiny 2040](#Pimoroni-Tiny-2040)**
* **[Seeed Studio XIAO RP2040](#Seeed-Studio-XIAO-RP2040)**
* **[Waveshare RP2040-Zero](#Waveshare-RP2040-Zero)**

![Front](https://i.imgur.com/gxVcUcd.png)

![Back](https://i.imgur.com/Y39RpeB.png)


---
# The RP2040 Microcontroller
At the very core of the aforementioned boards there is the RP2040 chip.
![](https://www.raspberrypi.com/documentation/microcontrollers/images/rp2040.jpg)

Here follows a list of its major characteristics:

| Component | Description |
| -------- | -------- |
| CPU:     | Dual ARM Cortex-M0+ @ 133 MHz |
| Memory:  | 264kB on-chip SRAM in six independent banks |
| Storage: | Support for up to 16MB of off-chip Flash memory via dedicated QSPI bus |
| Architecture: | DMA controller |
|          | Fully connected AHB crossbar |
|          | Interpolator and integer divider peripherals |
|          | On-chip programmable LDO to generate core voltage |
|          | 2 × on-chip PLLs to generate USB and core clocks |
| Interfacing: | 30 × GPIO pins, 4 of which can be used as analogue inputs |
| Peripherals: | 2 × UARTs |
|          | 2 × SPI controllers |
|          | 2 × I2C controllers |
|          | 16 × PWM channels |
|          | 1 × USB 1.1 controller and PHY, with host and device support |
|          | 8 × PIO state machines |
| Package: | 7 × 7 mm QFN-56 package |

Other notable properties include:
* Supported input power 1.8–5.5V DC
* Operating temperature -40°C to +85°C
* Drag-and-drop programming using mass storage over USB
* Low-power sleep and dormant modes
* Accurate on-chip clock
* Temperature sensor
* Accelerated integer and floating-point libraries on-chip

### RP2040 Pinout
![](https://i.imgur.com/Y8JRuFW.png)

### Resources
https://www.raspberrypi.com/products/rp2040/specifications/
https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html
https://datasheets.raspberrypi.com/rp2040/rp2040-product-brief.pdf
https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf

[^Top](#Small-Form-Factor-RP2040-Boards)


---
# Boards
Since all of the following boards use the same RP2040 microcontroller chip, only the relevant features that have been updated by the respective manufacturers in comparison with the original Raspberry Pi Pico will be listed.

※ Describing the Raspberry Pi Pico is beyond the scope of this article.


## Pimoroni Tiny 2040
### Overview
![](https://cdn.shopify.com/s/files/1/0174/1800/files/tiny-2040-pinout-diagram_4dd9e9ab-6f6f-4b63-82d4-16793d109f17.png?v=1614260173)

### Features
| Component | Description |
| -------- | -------- |
| Board form factor: | 16 + 3 pins |
| Storage: | 2MB or 8MB of QSPI flash supporting XiP |
| Interfacing: | 12 × GPIO pins | 
|          | 4 × 12-bit ADC channels |
|          | 12 × PWM |
| Peripherals: | 2 × I2C |
|          | 2 × UART |
|          | 1 × SPI |
|          | SWC/SWD pins |
| Power, programming, data transfer: | USB Type-C interface |
|          | Castellated pads allows direct soldering onto a PCB |
| LED: | 1 × user controllable RGB LED |
| Buttons: | 1 × BOOT button (doubles up as user input button) |
|          | 1 × RESET button |
| Software compatibility: | Micropython ・ CircuitPython ・ C/C++ ・ Arduino |
| Dimensions: | 21.3 x 18 mm |
|          | approx 22.9 x 18.2 x 6 mm (including the USB-C port) |

### What makes it stand out
* 8MB of QSPI flash supporting XiP variant available
* User input button (doubles up as DFU select on boot)

### Resources
Product page: https://shop.pimoroni.com/products/tiny-2040?variant=39560012234835

[^Top](#Small-Form-Factor-RP2040-Boards)


## Seeed Studio XIAO RP2040
### Overview
![](https://files.seeedstudio.com/wiki/XIAO-RP2040/img/xinpin.jpg)

### Features
| Component | Description |
| -------- | -------- |
| Board form factor: | 14 pins |
| Storage: | 2MB of on-board Flash memory |
| Interfacing: | 11 × GPIO pins | 
|          | 4 × 12-bit ADC channels |
|          | 11 × PWM |
| Peripherals: | 1 × I2C |
|          | 1 × UART |
|          | 1 × SPI |
|          | 1 × SWD Bonding pad |
| Power & Downloading interface: | USB Type-C interface |
|          | Castellated pads allows direct soldering onto a PCB |
| LEDs: | 1 × user LED |
|          | 1 × user WS2812 RGB LED |
|          | 1 × power LED |
|          | 2 × LEDs for serial port downloading |
| Buttons: | 1 × BOOT button |
|          | 1 × RESET button |
| Power Pads: | For the battery power supply |
| Software compatibility: | Micropython ・ CircuitPython ・ C/C++ ・ Arduino |
| Cover: | Cover for protecting the circuit |
| Dimensions: | 20 x 17.5 x 3.5 mm |

### What makes it stand out
* No components on the back for seamless SMD integration via castellated pads
* Small size of 20 x 17.5 x 3.5 mm for wearable devices and small projects
* 2 × user controllable RGB LEDs

### Resources
Product page: https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html
Wiki: https://wiki.seeedstudio.com/XIAO-RP2040/

[^Top](#Small-Form-Factor-RP2040-Boards)


## Waveshare RP2040-Zero
### Overview
![](https://i.imgur.com/VIUO82d.png)

### Features
| Component | Description |
| -------- | -------- |
| Board form factor: | 18 + 5 pins + 10 solder points |
| Storage: | 2MB of on-board NOR-Flash memory |
| Interfacing: | 29 × GPIO pins (9 of which via solder points) | 
|          | 4 × 12-bit ADC channels |
|          | 16 × PWM |
| Peripherals: | 2 × I2C |
|          | 2 × UART |
|          | 2 × SPI |
|          | 8 × PIO state machines |
| Power, programming, data transfer: | USB Type-C interface |
|          | Castellated pads allows direct soldering onto a PCB |
| LED: | 1 × user controllable WS2812 RGB LED |
| Buttons: | 1 × BOOT button (doubles up as input button) |
|          | 1 × RESET button |
| Software compatibility: | Micropython ・ CircuitPython ・ C/C++ ・ Arduino |
| Dimensions: | 23.5 x 18 mm |

### What makes it stand out
* 29 × multi-function GPIO pins
* Full peripherals range support

### Resources
Product page: https://www.waveshare.com/product/raspberry-pi/boards-kits/raspberry-pi-pico-cat/rp2040-zero.htm
Wiki: https://www.waveshare.com/wiki/RP2040-Zero

[^Top](#Small-Form-Factor-RP2040-Boards)


---
# Comparison
## Board Form Factor
* All of the three boards are contained in a small package that can be easily fit on wearable or space constrained devices, with the **smallest** of them being the **Seeed XIAO RP2040** and the largest being the Waveshare RP2040-Zero.

## Storage
* Other than the standard 2MB on-board flash memory, the **Pimoroni Tiny 2040** is also available for purchase in the **8MB** variant.

## GPIO and Peripherals Interfaces
* An impressive amount of GPIO pinout has been squeezed onto the **Waveshare RP2040-Zero** for a total of **29 GPIO** and **full peripheral support**, costing only a marginal increase in form factor size.
* The Pimoroni Tiny 2040 loses only one of the two SPI peripheral interfaces, although the number or GPIO pins is more than halved down to 12.
* The board with least amount of available GPIO pins is, understandably, the Seeed XIAO RP2040 with only 11 GPIO pins available, keeping only one interface for each type of supported peripheral.
* Despite the above differences, **each board** provides access to all of the **4 ADC** channels available on the RP2040 chip.

## LED
* RGB LEDs for visual signalling are available on each board, with the **Seeed XIAO RP2040** actually sporting **two user controllable RGB LEDs**.

## Reset Button
* **Each board** also comes equipped with a reset button. In this case there is no obvious winner.

## SMD Integration
* SMD integration via castellated pads is a breeze with the **Seeed XIAO RP2040** as there are **completely no components on the bottom** of the board.

[^Top](#Small-Form-Factor-RP2040-Boards)


---
# Conclusion
Each board excels on one or more different aspects.
To wrap it up:
* **Pimoroni Tiny 2040:**
    * Largest storage (in the 8MB variant)
* **Seeed Studio XIAO RP2040:**
    * Smallest form factor
    * 2 × user LEDs
    * SMD friendly
* **Waveshare RP2040-Zero:**
    * Most available GPIOs (29)
    * Full range of peripheral interfaces

[^Top](#Small-Form-Factor-RP2040-Boards)


---
# Notes

※ The XIAO RP2040 board has been generously donated by Seeed Studio as part of their currently ongoing Free Shipping campaign in 221 countries and counting.

[^Top](#Small-Form-Factor-RP2040-Boards)