Waveshare Core2350B
Overview
The Waveshare Core2350B is a compact core board based on the Raspberry Pi RP2350B microcontroller. It brings out 48 GPIOs on 2.54 mm pitch headers for integration into carrier boards. USB is provided through a 6-pin FPC connector, which connects to a USB Type-C port through an optional adapter board.
The board is available in three variants that differ only in the populated PSRAM:
Core2350B0: no PSRAM
Core2350B1: 2 MB PSRAM
Core2350B2: 8 MB PSRAM
The RP2350B SoC has two Cortex-M33 cores and two Hazard3 (RISC-V) cores. Zephyr supports builds targeting either CPU architecture, but currently runs on one core only; running code on the second core is not supported.
Hardware
RP2350B microcontroller with dual Cortex-M33 or dual Hazard3 processors at up to 150 MHz
520 KB of SRAM and 16 MB of QSPI flash (W25Q128JVSIQ)
Optional 2 MB or 8 MB QSPI PSRAM, depending on the variant
12 MHz crystal oscillator
6-pin 0.5 mm pitch FPC connector carrying VBUS, USB D+/D-, BOOTSEL and RUN
ME6217C33M5G 3.3 V LDO regulator (800 mA), enable signal available on the header
64 pins on four 2x8 headers with 2.54 mm pitch
USB 1.1 with device and host support
Low-power sleep and dormant modes
Drag-and-drop programming using mass storage over USB
48 multi-function GPIO pins, 8 of which can be used as ADC inputs
2 SPI, 2 I2C, 2 UART, 8 12-bit ADC channels, 24 controllable PWM channels
Temperature sensor
3 Programmable I/O (PIO) blocks, 12 state machines total
SWD debug port on the header
User LED (red) on GPIO39
Supported Features
The core2350b board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo -
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
core2350b/rp2350b/hazard3_0 target
On-target memory for this board target: 520 KiB of RAM, 16 MiB of Flash.
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
Generic RISC-V CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
||
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
||
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
||
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
||
on-chip |
Raspberry Pi Pico clock controller node1 |
||
Counter |
on-chip |
||
Cryptographic accelerator |
on-chip |
Raspberry Pi Pico SHA-256 accelerator1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port2 |
||
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
Hazard3 interrupt controller1 |
|
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
on-board |
Group of PWM-controlled LEDs1 |
||
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico POWMAN (power manager)1 |
|
on-chip |
Raspberry Pi Pico PIO3 |
||
on-chip |
Raspberry Pi Pico SIO1 |
||
MTD |
on-chip |
Flash node1 |
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RNG |
on-chip |
Raspberry Pi Pico RNG/Entropy1 |
|
Sensors |
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
Serial controller |
on-chip |
||
SPI |
on-chip |
||
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
RISC-V Machine Timer1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
core2350b/rp2350b/m33_0 target
On-target memory for this board target: 520 KiB of RAM, 16 MiB of Flash.
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
ARM Cortex-M33 CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
||
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
||
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
||
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
||
on-chip |
Raspberry Pi Pico clock controller node1 |
||
Counter |
on-chip |
||
Cryptographic accelerator |
on-chip |
Raspberry Pi Pico SHA-256 accelerator1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port2 |
||
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
ARMv8-M NVIC (Nested Vectored Interrupt Controller)1 |
|
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
on-board |
Group of PWM-controlled LEDs1 |
||
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico POWMAN (power manager)1 |
|
on-chip |
Raspberry Pi Pico PIO3 |
||
on-chip |
Raspberry Pi Pico SIO1 |
||
MTD |
on-chip |
Flash node1 |
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RNG |
on-chip |
Raspberry Pi Pico RNG/Entropy1 |
|
Sensors |
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
Serial controller |
on-chip |
||
SPI |
on-chip |
||
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
ARMv8-M System Tick1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
Connections and IOs
The board has no buttons and no USB connector of its own. The BOOTSEL and RUN signals, the
USB data lines and VBUS are routed both to the FPC connector and to header P2. The USB Type-C
adapter board connected through the FPC cable provides the BOOT and RESET buttons.
Headers
P1: GPIO0 to GPIO14
P3: GPIO15 to GPIO29
P4: GPIO30 to GPIO44
P2: GPIO45 to GPIO47,
SWCLK,SWD,BOOTSEL,RUN,USBD_P,USBD_N,ADC_VREF,3V3_EN,VBUSand3V3
The board is powered from VBUS (5 V) through the FPC connector or header P2. Pulling
3V3_EN low disables the 3.3 V regulator.
Default Zephyr Peripheral Mapping
UART0_TX : GPIO0
UART0_RX : GPIO1
I2C0_SDA : GPIO4
I2C0_SCL : GPIO5
I2C1_SDA : GPIO6
I2C1_SCL : GPIO7
SPI0_RX : GPIO16
SPI0_CSN : GPIO17
SPI0_SCK : GPIO18
SPI0_TX : GPIO19
LED0 / PWM_11B : GPIO39
ADC_CH0 : GPIO40
ADC_CH1 : GPIO41
ADC_CH2 : GPIO42
ADC_CH3 : GPIO43
ADC_CH4 : GPIO44
ADC_CH5 : GPIO45
ADC_CH6 : GPIO46
The Zephyr console and shell use USB CDC ACM by default.
GPIO47 (ADC channel 7) is the PSRAM chip select and also reaches header P2 through a 0 ohm resistor (R11). On the Core2350B1 and Core2350B2 variants, do not use it as a general-purpose pin. PSRAM is not currently supported in Zephyr.
Programming and Debugging
The core2350b board supports the runners and associated west commands listed below.
| flash | debug | attach | debugserver | rtt | reset | |
|---|---|---|---|---|---|---|
| jlink | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| openocd | ✅ (default) | ✅ (default) | ✅ | ✅ | ✅ | |
| probe-rs | ✅ | ✅ | ✅ | ✅ | ||
| uf2 | ✅ |
The overall explanation regarding flashing and debugging is the same as for Raspberry Pi Pico. See Programming and Debugging in Raspberry Pi Pico documentation. N.b. OpenOCD support requires using Raspberry Pi’s forked version of OpenOCD. The SWD signals are available on header P2.
Flashing with UF2
To enter the UF2 bootloader with the USB Type-C adapter board connected, hold the BOOT button,
press and release RESET, then release BOOT. Without the adapter board, pull BOOTSEL to
ground while pulsing RUN low on header P2. The board then appears on the host as a mass
storage device.
Below is an example of building and flashing the Blinky application.
# From the root of the zephyr repository
west build -b core2350b/rp2350b/m33_0 samples/basic/blinky
west flash -r uf2
To target the Hazard3 (RISC-V) core instead, use core2350b/rp2350b/hazard3_0 as the board.