RP2350 Hardware PCB Design in KiCAD | RP2350 Schematic

In this article, I’ll show you the Raspberry Pi Pico2 (RP2350) schematic & PCB design steps to make your own custom RP2350 PCB board. I’ll explain some of the design decisions I’ve made, how to prepare the files needed for manufacturing, and how to place the PCB SMT order at JLCPCB, who are kindly sponsoring this project.

This is a custom RP2350 development board designed for evaluating the Raspberry Pi Pico2 RP2350 MCU with an ESP32-C3 for WiFi/BLE connectivity. This project can serve as a baseline for anyone willing to create their own custom dev board based on the RP2350 microcontroller.

This Project is Sponsored By JLCPCB

Table of Contents

  1. RP2350 Hardware Design Overview
  2. Raspberry Pi Pico2 (RP2350) Schematic Design
  3. Placing PCBA Order @ JLCPCB
  4. Getting Started With Raspberry Pi Pico C/C++ SDK
  5. RP2350 LED Blinking GPIO Example (C SDK)
  6. RP2350 USB CDC Serial Printf Example (C SDK)
  7. RP2350 WS2812 Neopixel RGB Example (C SDK)
  8. Getting Started With RP2350/RP2040 (in Arduino)
  9. RP2350 GPIO + USB CDC Serial Print (in Arduino)
  10. RP2350 + ESP32-C3 WiFi WebServer Demo Example
  11. Wrap Up
  12. [YouTube Video] RP2350 Schematic + PCB Design Project

RP2350 Hardware Design Overview

This PCB project features an RP2350B microcontroller for evaluation and development purposes, and it also has an ESP32-C3 with a chip antenna onboard to provide WiFi/BLE connectivity over an SPI bus between the RP2350 & ESP32-C3 microcontrollers.

In this project article, we’ll address the RP2350 hardware design aspect of the project, and the ESP32-C3 part will be covered in an upcoming project article.

RP2350 Overview

The RP2350 is a quad-core microcontroller designed by Raspberry Pi, featuring Dual ARM Cortex-M33 processors or Dual RISC-V cores. It supports either ARM or RISC-V dual-core operation, so you won’t have all 4 cores running at the same time.

It includes a rich set of peripherals such as ADC, DMA, PWM, Timers, Serial Communication interfaces, and PIO (Programmable I/O), which enable versatile hardware control and interfacing.

The RP2350 strikes a great balance between performance, low power consumption, and affordability, making it an ideal choice for DIY projects, education, and professional applications. Below is a block diagram of the microcontroller’s top-level architecture.

RP2350 Hardware Architecture

RP2350 Variants

There are four variants in the RP2350 microcontroller family, which are: RP2350A, RP2350B, RP2354A, RP2354B.

Here is a brief comparison table for the major differences between those devices:

RP2350 Variants

RP2350 VS RP2040

Here’s a brief (RP2350 vs RP2040) comparison table highlighting their major differences:

FeatureRP2040RP2350
CPU CoresDual-core ARM Cortex-M0+Dual-core ARM Cortex-M33 (with FPU)
OR
Dual-core Hazard3 RISC-V (user-selectable)
Max Clock Speed133 MHz
(Can be overclocked)
150 MHz
(Can be overclocked)
SRAM264 KB520 KB (in 10 banks)
Flash (Internal)None (relies on external QSPI flash)None on RP2350A/B, but RP2354A/B variants include on-chip 2MB QSPI NOR flash
GPIO Pins3030 to 48 (depending on package variant)
PIO State Machines8 (2 blocks)12 (3 blocks)
USB SupportUSB 1.1 Device and HostUSB 1.1 Device and Host (controller and PHY included)
Security FeaturesNoneArm TrustZone, signed boot, 8KB antifuse OTP, SHA-256 acceleration, hardware TRNG, glitch detectors, global bus filtering
Floating PointSoftware-EmulatedHardware floating-point unit (FPU)
Power ManagementBasicImproved with on-chip switched-mode power supply (SMPS) and programmable LDO

RP2350 Hardware Design Guidelines & Datasheet

To design a custom RP2350-based PCB project, we’ll need to reference the documents below.

RP2350 Reference Manual

RP2350 Raspberry Pi Pico2 Datasheet

RP2350 Hardware Design Guidelines


Raspberry Pi Pico2 (RP2350) Schematic Design

This is the schematic design that I came up with for this Raspberry Pi Pico RP2350 development board project. Some parts are not mandatory and can be omitted for even more cost optimization if needed.

1. DC PWR In + LDO + USB

RP2350 Hardware Desing (Schematic + PCB) - Power Input

There’s a USB-C port that I’m using for power input (+5V) as well as USB communication that’s required for UF2 flash programming of the Raspberry Pi Pico2 (RP2350) chip.

The USB +5V input is regulated down to 3.3V using an LDO. The +3.3V is then used to power up the RP2350 microcontroller and the internal SMPS that generates the +1.1V digital supply voltage.

2. RP2350B MCU Circuitry + QSPI FLASH

RP2350 Hardware Desing (Schematic + PCB) - MCU+QSPI

The RP2350 microcontroller requires a +3.3V input voltage @ IOVdd pin, +1.1V from the SMPS that powers the DVDD, 100nF decoupling capacitors, and a 12MHz crystal oscillator.

The RP2350B variant doesn’t have an internal flash memory. Therefore, an external Quad-SPI (QSPI) flash chip is required. You can add a 2MB, 4MB, 8MB, or 16MB flash chip.

On my board, I’ve used the maximum flash size allowed by the RP2040’s XIP (eXcute-In-Place) interface, which is 16MB (128Mbit).

I’ve also added a RESET button to reset the microcontroller when needed. And we’ll need it every time we try to flash a new firmware to the chip. For UF2 programming, a BOOT button is also needed on the QSPI CS line.

3. SWD Debug Port

To debug the the RP2350 microcontroller, a serial wire debug interface can be routed to a pin header on your dev board. Typically, it’ll include: (+3.3v, GND, SWD, SWCLK).

4. IO Port + LEDs

Just pin out all the IO pins you need to one or two headers, depending on your desired board shape and layout.

For my board, I’ve added a power indicator LED + 1x user-programmable LED + 1x NeoPixel RGB LED (WS2812B).


Placing PCBA Order @ JLCPCB

Finally, we’re ready to generate the fabrication files and send them to JLCPCB for PCB fabrication and assembly. For this task, I use the KiCAD plugin named “Fabrication Toolkit”. With just one button click, you’ll have all manufacturing output files ready in a new folder that’s automatically created for you by the plugin toolkit.

KiCAD-JLCPCB-Fabrication-Output-Files-Toolkit

1. Upload Your Gerber File & Check PCB Fab. Options

The next step is to upload your PCB Gerber files and modify the PCB fabrication options as needed in your project. Just keep an eye on the price because some options are not considered as a standard fabrication process, which will end up costing you a bit more and take a bit more time to get fabricated.

Even if you’re 100% sure that your design & fabrication files are flawless, the online system & JLCPCB or any other fab house can still pick up incorrect components’ orientation or placement. Always double-check the PCB component placement after uploading your files.

2. Upload BOM & CPL Files

The next step is to upload your design’s BOM file and the components positions file (CPL) to JLCPCB and let it check the files and report the stock status and total number of components to be assembled, their cost, and so on.

CH32V003 PCB Project Order3

Check everything and make sure the components are selected correctly from the JLCPCB SMT library. And also double-check the component placements on the next page and correct any wrong rotations in the CPL file. There is a mismatch between the KiCAD output position file & JLCPCB’s system, so it does pick up wrong orientations for some ICs, diodes, etc. Always double-check everything before placing the order.

Note that if you’re not using the polarized inductor recommended by the RP2350’s datasheet for the buck converter and/or the Abracon 12MHz oscillator, you’ll not be able to proceed with your order and will get a message like the one shown below.

3. Pay To Place Your Order

The last step to place your order is to pay for the invoice, and you can apply any valid discount coupon at this step to reduce the cost.

4. Wait For Delivery & Prepare For Testing!

You should expect to receive your board within 4 days to 1 week, depending on where you live.

Here is how it turned out at the end.

RP2350 Hardware PCB Design - Raspberry Pi Pico2 RP2350 Schematic


Getting Started With Raspberry Pi Pico C/C++ SDK

To get started with Raspberry Pi Pico (RP2350/RP2040) MCU development in C/C++ SDK, you first need to install the required toolchain. The tutorial linked below is a very detailed guide that will help you get started with embedded C development for the RP2040 microcontroller.

Raspberry Pi Pico C C++ SDK Programming (And Pico W)

This tutorial is the ultimate guide for getting started with Raspberry Pi Pico using C/C++ SDK. You’ll learn how to install the Pico C/C++ SDK toolchain, create a project from scratch, and build/flash your Embedded-C/C++ projects to the Raspberry Pi Pico (RP2040-based) boards.

Alternatively, you can use the new Visual Studio Code Extension that automatically downloads/installs the toolchain on your machine. And it’ll also make it so much easier for you to create a new project from scratch or from the built-in library of demo examples.

You can download the extension at this link. Scroll down this article to find my YouTube video in which I’ll demonstrate how to use this extension to create and compile embedded C projects for your Raspberry Pi Pico (RP2350/RP2040) microcontrollers in a couple of minutes!


RP2350 LED Blinking GPIO Example (C SDK)

This is the first test example project in which we’ll blink the onboard LED attached to the GPIO25 pin.

We’ll just turn the LED ON/OFF for 100ms each.

RP2350 LED Blinking GPIO Example Code

The Application Code For This Example (main.c)

Compile & Flash the firmware to the board using the UF2 bootloader.

RP2350 LED Blinking Test Result

Raspberry Pi Pico Read Digital Input & Write Digital Output (C SDK)

This article will give more in-depth information about GPIO digital input output pins in Raspberry Pi Pico (RP2040) using C/C++ SDK. With a couple of code examples & simulations for digital pin read and write operations.


RP2350 USB CDC Serial Printf Example (C SDK)

In this test project, we’ll do serial print using USB CDC with the RP2350 microcontroller using the C SDK.

Note: Routing the printf() function to the USB CDC instead of UART is done in the CMakeLists.txt file.

RP2350 USB CDC Serial Print Example Code

The Application Code For This Example (main.c)

 

Compile & Flash the firmware to the board using the UF2 bootloader.

RP2350 USB CDC Serial Print Test Result

RP2350 USB CDC Serial Print in C SDK

Raspberry Pi Pico Serial Over USB - Serial Print Read Monitor Plotter Example C SDK

This article will give more in-depth information about USB serial print in Raspberry Pi Pico (RP2040) using C/C++ SDK. With a couple of code examples & simulations for sending serial messages from the RP2040 over USB to PC and displaying the data on a serial terminal and plotting numeric data on a serial plotter GUI.


RP2350 WS2812 Neopixel RGB Example (C SDK)

In this test project, we’ll do a simple RGB color effect with the onboard WS2812 Neopixel RGB LED connected to our RP2350 microcontroller.

For this test demo, I’ll use a built-in example within the pico C SDK examples directory for WS2812 control using a PIO state machine.

RP2350 WS2812 Neopixel RGB Example Code

The Application Code For This Example (main.c)

 

Compile & Flash the firmware to the board using the UF2 bootloader.

RP2350 WS2812 Neopixel RGB Test Result


Getting Started With RP2350/RP2040 (in Arduino)

To get started with Raspberry Pi Pico1/2 (RP2040/RP2350) MCU development in Arduino C++ inside the Arduino IDE, you first need to install the Raspberry Pi Pico core within your locally installed version of Arduino IDE. The tutorial linked below is a very detailed guide that will help you get started with Arduino code development for the RP2040 microcontroller.

Raspberry Pi Pico Arduino IDE Programming (And Pico W)

This tutorial is the ultimate guide for getting started with Raspberry Pi Pico (RP2040) using Arduino IDE. You’ll also learn how to simulate your Arduino code on the RP2040 using the Wokwi simulation environment.


RP2350 GPIO + USB CDC Serial Print (in Arduino)

In this test project, we’ll blink the onboard LED and also do serial printing using USB CDC with the RP2350 microcontroller using Arduino IDE.

RP2350 Arduino Example Code

RP2350 Arduino Example Test Result

The onboard LED is blinking, and we’re getting serial messages exactly as expected!

RP2350 USB CDC Serial Print in Arduino IDE


RP2350 + ESP32-C3 WiFi WebServer Demo Example

Before concluding this project, let’s take a look at a quick demo example for the ESP32-C3 acting as a WebServer that allows the user to access a webpage to select a desired color, then sends the data over SPI to the RP2350 that displays it to a Neopixel RGB LED.


Wrap Up

By the end of this project, you should have learned how to create your custom Raspberry Pi Pico2 RP2350 dev board or incorporate this microcontroller in your next project if it fits well. As well as how to bring up your custom RP2350-based hardware design using both C/C++ SDK and Arduino IDE.

We’ve not yet covered the ESP32-C3 part of this project, so stay tuned for that!

[YouTube Video] RP2350 Schematic + PCB Design Project

Share This Page With Your Network!
Join Our +25,000 Newsletter Subscribers!

Stay Updated With All New Content Releases. You Also Get Occasional FREE Coupon Codes For Courses & Other Stuff!

Photo of author
Author
Khaled Magdy
Embedded systems engineer with several years of experience in embedded software and hardware design. I work as an embedded SW engineer in the Automotive & e-Mobility industry. However, I still do Hardware design and SW development for DSP, Control Systems, Robotics, AI/ML, and other fields I'm passionate about.
I love reading, writing, creating projects, and teaching. A reader by day and a writer by night, it's my lifestyle. I believe that the combination of brilliant minds, bold ideas, and a complete disregard for what is possible, can and will change the world! I will be there when it happens, will you?

1 thought on “RP2350 Hardware PCB Design in KiCAD | RP2350 Schematic”

Leave a Comment