
[ Core board ]RP2040 minimum system
PRO[ Core board ]RP2040 minimum system
License
:GPL 3.0
Description
1. General Overview
The Raspberry Pi Pico is a low-cost, high-performance microcontroller development board based on the RP2040, which can be developed in Python or C/C++, which is convenient for quick development and learning.
Pin distribution
Onboard resources
- Main control chip: RP2040, QFN-56 SMD package;
- Memory chip: SPI Flash;
- Power interface: TYPE C;
- Function buttons: BOOT and reset buttons;
- LED display: power indication and status indicator;
- Debugging interface: TYPE C and SWD interface;
- External pins: programmable I/O for easy connection expansion;
Features & Benefits:
- The appearance of the board is small and exquisite, with a size of 53.34mmand 22.86mm (2100mil 900mil);
- Compatible with mainstream Raspberry Pi Pico, the distance between the two rows of pins is 17.78mm, which can be applied to hole boards;
- Support the use of MicoPython and C/C++ language development, convenient for quick start learning;
- Provide TYPE C serial port and SWD interface, which is convenient for development and debugging;
- On-board RESET and BOOTSEL buttons;
- Support UF2's USB mass storage boot mode for drag-and-drop programming;
- Low price, ultra-low power consumption, abundant external function pins, high cost performance;
- Use high-quality PCB and genuine components to ensure product quality;
2. Chip introduction
RP2040 chip introduction
- Dual-core Cortex M0+, up to 133MHz
- Built-in 264kB 6-sector SRAM
- 30 multi-function GPIO pins
- 6 SPI Flash dedicated pins (XIP supported)
- Hardware dedicated to common peripherals
- Programmable I/O supports external devices
- 4-channel ADC with built-in temperature sensor, sampling frequency 500ksps, 12-bit resolution
- USB 1.1 host and device support
RP2040 System Overview
RP2040 pin description
- GPIOx: General-purpose digital inputs and outputs, the RP2040 can connect multiple internal peripherals to each GPIO, or control the GPIO directly from the software.
- GPIOx/ADCy: General purpose digital input and output with analog-to-digital conversion. The RP2040 ADC has an analog multiplexer that selects any of these pins and samples the voltage.
- QSPIx: Connected to SPI, Dual-SPI or Quad-SPI Flash devices, code can be executed directly. It can also be used as a GPIO.
- USB_DP and USB_DM: USB controller that supports full-speed devices and full/low-speed hosts, each pin needs a 27Ω resistor in series, and the internal bus provides pull-up and down.
- XIN and XOUT: Connect a crystal to the RP2040's crystal oscillator. XIN can also be used as a single-ended CMOS clock input, while XOUT is off. clock input while disconnecting XOUT. The USB bootloader requires a 12MHz crystal or a 12MHz clock input.
- RUN: Global asynchronous reset pin. Reset when driven low and run when driven high. If an external reset is not required, the pin can be bound directly to the IOVDD.
- SWCLK and SWDIO: Provides debug access to both processors and debug access to the processor, which can be used to download code.
- TESTEN: Factory test mode pin. Bind to GND.
- GND: A single external ground connection that is connected to the RP2040 internal ground pad.
- IOVDD: Power supply for digital GPIOs with nominal voltages from 1.8V to 3.3V.
- USB_VDD: Power supply for internal USB full-speed PHY with a nominal voltage of 3.3V.
- ADC_AVDD: Power supply for analog-to-digital converter with a nominal voltage of 3.3V.
- VREG_VIN: Power input to the internal core voltage regulator with a nominal voltage of 1.8V to 3.3V.
- VREG_VOUT: The power output of the internal core voltage regulator with a nominal voltage of 1.1V and a maximum current of 100mA.
- DVDD: Digital core power supply with a nominal voltage of 1.1V. Can be connected to VREG_VOUT, or some other board-level power supply.
RP2040 bus structure
The RP2040 has dual Cortex-M0+ cores, DMA, internal memory, and peripherals connected via an AHB/APB bus structure.
RP2040 product introduction
- Brand: Raspberry Pi
- Manufacturer Model: RP2040
- SKU:C2040
- Encapsulation:LQFN-56(7×7)
- Data Sheet:📂 Download file
- Gross weight: 0.18 grams (g)
- Packing: Taping
- Netizen design reference:📎 YuzukiCore Pico RP2040 core board
Introduction to Flash chips
Flash memory, also known as flash memory, is a type of non-volatile memory, which can keep the on-chip data information from being lost even after the power supply is turned off, can be erased and reprogrammed repeatedly, and is low-cost, high-density, reliable and durable, and easy to use.
Flash is mainly divided into NOR Flash and NAND Flash, NOR Flash is divided into serial (SPI) and parallel (parallel), the serial structure is relatively simple, the cost is low, can meet the general system requirements for speed and data reading and writing, generally used to store the BootLoader boot program; NAND Flash has a large capacity and complex practical application, and is mainly used to store users' real programs.
In order to be able to store the program code that the RP2040 starts up and runs, we need to use a flash memory. RP2040 supports up to 16MB of Flash memory, here choose W25Q128JVSIQ model, Quad-SPI NOR Flash, the communication mode is SPI, 128Mbit (16MB) storage size, if you don't need so much storage space, you can use Flash with smaller storage space to replace it, reduce costs.
W25Q128JVSIQ pin description
W25Q128JVSIQ product introduction
Brand:WINBOND
Manufacturer model: W25Q128JVSIQ
SKU:C97521
Encapsulation:SOIC-8-208mil
Data Sheet:📂 Download file
Gross weight: 0.465 grams (g)
Packing: tube
Netizen design reference:📎 Flash memory - W25Q128 scheme verification board
3. Engineering design
Power circuits
The RP2040 requires two voltage supplies: 3.3V (for I/O) and 1.1V (for the chip's digital core voltage), and the RP2040 has a 3.3V to 1.1V LDO inside, so there is no need to worry about the 1.1V power supply.
The power supply uses the TYPE-C interface input VBUS (5V), the VBUS and VSYS are connected through a diode, and then the output is fixed at 3.3V through the external LDO (ME6211), and 2.2uF and 100nF capacitor filtering are added to the input/output of the LDO. Because the RP2040 has a USB data transfer function, the DP/DN is connected to the RP2040.
RP2040 main control circuit
The pins of the RP2040 must be all pins, and the USB_DP and USB_DM pins must be connected in series with a 27Ω resistor and then connected to the TYPE C, not directly.
A 2.2uF decoupling capacitor is placed near the input (VREG_IN) and output (VREG_OUT) pins of the RP2040's internal LDO (3.3V→1.1V) to provide a stable 1.1V supply.
Add a 100nF decoupling capacitor to the pin to be powered on the RP2040. Filters out power supply noise and provides a stable power supply.
When drawing the PCB, the decoupling capacitor should be placed as close to the chip pins as possible, and the power flow direction should be paid attention to for trace drawing.
The TEN factory test mode pin is connected to the GND binding.
ADC sampling circuit
The GPIO26-29 pins with ADC function on the RP2040 have internal reverse diodes between the IOVDD (3V3) terminals with 12-bit resolution.
The reference voltage of the ADC is 3.3V by default, C7 acts as a filter, and R5 and R6 divide the voltage to obtain 1/3 of the VSYS, which is connected to Q1 (DMG1012T-7) and can be monitored by GPIO29_ADC3.
Flash circuitry
The W25Q128JVSIQ pin is connected to the QSPIx pin of the RP2040, and the flash memory requires the RP2040 chip to select the input voltage to be at the same voltage as its own 3.3V power supply pin, otherwise, it will not work properly. Therefore, 2.2uF and 100nF filter capacitors are placed near the W25Q128JVSIQ supply pin (VCC) to provide a stable 3.3V for W25Q128JVSIQ use.
When drawing the PCB, the connection distance should be shortened as much as possible, the crosstalk of the peripheral circuits should be reduced, and the integrity of the signal should be ensured.
Key circuitry
- The reset button is connected to the RUN pin of the RP2040, an external pull-up resistor makes the RUN stable to a high level by default, press the RESET button, the RUN is pulled low, the board resets and restarts, and a 100nF capacitor is connected at both ends of the button to speed up the reset response time.
- The boot mode switch is connected to the QSPI_SS pin of the RP2040 in series with a 1kΩ connection, and the series resistor prevents booting from BootLoader mode instead of running Flash when BootLoader mode is pressed and then pressed to reset. When the RP2040 is powered on, the QSPI_SS pin will automatically default to pull-up, and the RP2040 will check the value of this I/O during the boot process, QSPI_SS it to logical 0, and the RP2040 will enter the BootLoader mode.
- When the BOOTSEL button is not pressed, reset or power on, boot from Flash, and enter normal mode.
- When the BOOTSEL button is pressed, reset or power on, it will be displayed as an RPI-RP2 disk, enter BootLoader mode, and drag and drop the UF2 firmware for programming and development.
If the state of the QSPI_SS pin cannot be guaranteed for a short period of time after powering on, the addition of a pull-up resistor will always be satisfied. W25Q128JVSIQ this Flash external pull-up resistor is unnecessary, it is marked as NO-FIT and is negligible when soldered.
Crystal oscillator circuit
The crystal oscillator is a 12MHz crystal oscillator in a SMD3225-4P package, and an internal oscillator input can be used when strict timing requirements are not required. The 15pF capacitance on both sides of the crystal oscillator is used to ensure that the oscillation frequency is more stable, and the 1kΩ resistor in series in XOUT is used for current limiting, which can prevent the crystal oscillator from being overdriven and causing life reduction or damage.
LED indication circuitry
The power indicator (red) lights up when powered on, which proves that the minimum system power supply part is working normally;
Status indicator (blue) for GPIO25 pin testing of RP2040, which can be turned on and off by programming;
Pin circuitry
The pins are led out by two 1×20-pin 2.54mm headers for easy expansion project connection.
When drawing the PCB, it should be noted that the distance between the two rows of pins is 17.78mm, which is compatible with the mainstream Raspberry Pi Pico board on the market.
Debug interfaces
The USB serial debugging interface (USB1) is the most concise way for the Raspberry Pi Pico to reprogram/flash programs, and is usually used to debug.
SWD download and debugging interface (H1), capacitor is used as a filter, making the download and programming performance more stable.
SCH_RP2040 minimal system
PCB layout recommendations
- TYPE-C is placed in the center of the left side of the board;
- The spacing between the pins is 17.87mm, which is placed on both sides of the board edge;
- The main control chip is placed in the middle of the board to facilitate the routing of the external pin header with the expansion pins;
- The crystal oscillator is placed close to the MCU to reduce interference;
- The SWD debugging pin header interface is placed on the right side of the board;
- The filter capacitor is placed next to the pin to be filtered;
PCB Routing Recommendations
- The power line width is set to 15mil, and the signal line width is set to 8mil;
- The top-layer wiring is the mainstay, and the unreachable line can be placed via to switch to the bottom layer for connection;
- In the process of wiring, priority is given to straight lines, and the places that need to be turned are mainly obtuse angles or arcs of 135°, horizontal and vertical, and the design is maintained in good shape;
- The crystal oscillator wiring should be as short as possible, and the bottom should not be traced to reduce noise interference;
- In the process of wiring, the GND fan hole should be appropriately placed to occupy the space to avoid the incomplete GND after copper pouring;
Silk screen printing copper pouring recommendation
- Marker indicates board information (RP2040 minimum system);
- Add silkscreen marking buttons, external pins and debugging interface functions;
- After drawing and adjusting the PCB, add a teardrop effect to make the board more beautiful and stable;
- Add JLCJLCJLCJLC under the component to specify the custom editing position, and the board is beautiful;
4. Programming development
Development environment
Raspberry Pi can be developed using MicroPython and C/C++ languages, Thonny IDE is recommended for MicroPython development, and Arduino IDE is recommended for C/C++ development. Simple and friendly, easy to get started and get started.
Flash the firmware
- Download firmware UF2 into MicroPython website https://micropython.org/download/rp2-pico/;
- Press and hold the BOOTSEL button, insert the Pico into the USB serial port of the computer, the computer will pop up an RPI-RP2 disk, the INDEX.HTM files under this folder, click it will jump to open the official website of the Raspberry Pi Pico, INFO_UF2. The TXT file records the current information of the board.
- Drag the downloaded UF2 file into the RPI-RP2 folder. At this time, the open RPI-RP2 window will automatically close, the Raspberry Pi Pico will automatically restart, and at the same time, you can see a virtual port through USB in the device manager, and the firmware flashing is completed.
Thonny
Arduino
5. Physical verification
Bill of Materials
Device soldering
Order of reference
-
First, the RP2040 chip (U1) needs to be soldered, and the QFN package needs to be soldered first, or the solder paste should be used on the heating table/heat gun;
-
Re-soldering TYPE-C, diode (D1), button, Flash (U2);
-
Then solder resistor capacitors, LEDs and crystal oscillators;
-
Finally, you can choose whether you need to weld the pin headers according to your needs.
Precautions -
When welding, you can select the welding auxiliary tool in the EDA toolbar of JLC, which is convenient for real-time interaction;
-
Priority soldering of RP2040 chips to avoid other devices affecting soldering;
-
When welding the pin header, it can be used to resist a blank plate or a hole plate to prevent welding skew and affect the use.
Top-level assembly drawing
Underlying assembly drawing
Finished product display
Physical verification
Zadig
Zadig can help users load general drivers, solve the problem that the device cannot connect to the computer, and ensure that the peripherals can access the computer normally. Click Options→List All Devices, and make sure that you do not select the system driver (RP2040 driver USB ID: 2E8A) when you select Modify.
BootLoader mode
- RP2 Boot(interface 0) → USB Serial(CDC)
- RP2 Boot(interface 1) → WinUSB
normal mode
- Raspberry Pi Pico(interface 0) → USB Serial(CDC)
Frequently asked questions
- USB connection transfer doesn't work, no RPI-RP2 disk manager or string slogan pops up.
- Check if you haven't held down the BOOTSEL button, or if you have released it in the middle;
- TYPE C must be a data cable (charging cable does not have data transmission function), and the DP/DN of Type-C is not connected properly (virtual welding);
- The crystal does not vibrate (virtual welding or damage).
- Device Manager Doesn't Recognize/Unknown USB Device After Burning Initial UF2 Firmware (Device Descriptor Request Failed)
- Drag and flash into the flash_nuke.uf2 to clear the firmware, erase the original content in the Flash, and then flash the initial UF2 firmware again;
- If the RP2040 chip is soldered or damaged, the pins must be soldered before soldering or heating when soldering the QFN package.
- Using Zadig causes Pico not to enumerate as a storage data drive in bootloader mode.
- Find all RP2 boot drivers in Device Manager;
- Right-click and select "Uninstall Device", check "Remove driver software for this device" (if asked);
- Click Uninstall and be sure to uninstall all RP2 related boots.
Designed by 立创EDA课程案例推荐 (from OSHWHub)
Link:https://oshwhub.com/course-examples/he-xin-ban-rp2040-zui-xiao-xi-tong

Comment