Sales@CyberCityCircuits.com

Minimum RP2040 Design Made Simple

I've made several designs with the RP2040 from Raspberry Pi. Using the OEM's design references and other references online, I have designed, what I consider the minimum quality design for RP2040, for when you don't need extras, just the controller.

In this walk through I will give links to some suggested parts, but many things can be substituted as needed. This is just what I would use. The datasheets for the parts will be available on their Digikey listing.

Digikey Listing for the RP2040 MCU

The simpliest RP2040 design consists of six main sections:

  1. RP2040 Micro-Controller
  2. USB-C Connector
  3. QSPI Flash
  4. Clock or Resonator
  5. 3.3V LDO
  6. Reset and Mode Buttons
Minimum RP2040 Schematic Reference

RP2040 Micro-Controller

The RP2040 has some unique design requirements.

  • Decoupling Capacitors: It really needs a few more decoupling capacitors than you think. It can be very susceptible to environmental noise and lock up without them.
  • 3.3V Power Only: The RP2040 can only use 3.3V max on all pins, including the IO pins. You may need some additional logic shifting bits depending on your application.
  • Internal 1.1V Power: The RP2040 has a couple sections that require 1.1V. Luckily it has a builtin 1.1V source. Pin 45 needs to connect to pin 50 and and 23. You need to add decoupling capacitors to this connection as well.
  • Reset Pull-up:The Reset Pin needs to have a 10kΩ pull-up resistor to the 3.3V bus.
Example for the RP2040 Schematic

USB-C Connector for Easy 5V Power

The USB-C Connection needs to be done a specific way that is kinda unique to the RP2040, with resistors on the data lines.

  • Barrier Diode: Putting a Schottky barrier diode on the power bus can be important. If you design decide's it wants to back feed power back through the USB port, it could damage what is powering it (ie your customer's computer). To prevent this, I always add a diode on my USB-C connectors.
  • CC Pull-Down Resistors: Smart power supplies can produce various voltages. You can essentially hot wire a smart power supply to produce 5V with two 5.1kΩ pull-down resistors on the CC lines to ground.
  • Data Line Resistors: The RP2040 design guidelines urge the use of 27Ω resistors on the data lines. They may not be 100% necessary, but if the guidelines stringly suggest something like this, I will tend to use them as a caution.
  • Shield vs Ground: I do not normally tie my shield to ground on devices. This is typically done at the host device, that is the power source and doing it on the remote device may induce a ground loop and that's no good. If it is a specifically noisy environment, you can put a filter on it to ground.
Example Schematic for the USB-C Connector - USB 2.0

Quad SPI (QSPI) Flash

The RP2040 uses QSPI flash, which was my first design using such a thing. Here is what I consider when designing with it.

  • Datalines: The flash uses four data lines, a SPI clock, and a chip select.
  • USB Boot Mode: The RP2040 is put into 'Boot Mode,' but pulling the chip select pin to ground, while it is normally pulled up. If you reset the RP2040, with it pulled to ground it puts the RP2040 in a different mode of operation.
Example Schematic for the RP2040 QSPI Flash

RP2040 Clock or Resonator

Clock requirements are kind of difficult to describe, so just follow this example and it will work. This does differ from the recommended design from Raspberry PI.

  • Four Pin Resonator: I use this 2520 12MHz Resonator, that has two ground connections on it.
  • Decoupling Capacitors: This resonator needs two 12pF decoupling capacitors on the signal lines.
Example Schematic for the RP2040 Clock

3.3V Low Drop-Out (LDO)

I use this Torex LDO. It cost less than many others and I have used it a lot. It works fine.

  • Decoupling Capacitors: The input line should have a 1.0uF capacitors on it. Assuming you're using a well-regulated 5V power supply. I use a 10uF on the 3.3V line.
Example Schmatic for the 3.3V LDO and the RP2040

Mode and Reset Buttons

  • Reset Button: This button pulls the MCU's reset pin to ground, in order to 'hard reset' the controller.
  • Boot Mode Button: The mode button is used to put the QSPI flash's chip select pin to ground, while you reset the the RP2040, in order to start it in a different mode.
Example for the Mode and Reset Buttons for the RP2040.