Beetle RP2350
Overview
The DFRobot Beetle RP2350 [1] board is based on the RP2350A microcontroller from Raspberry Pi Ltd. The board has two 8-pin headers and a USB type C connector.
Hardware
Microcontroller Raspberry Pi RP2350A, with a max frequency of 150 MHz
Dual ARM Cortex M33 cores, and dual RISC-V Hazard3 cores.
520 kByte SRAM
2 Mbyte QSPI flash
9 GPIO pins
2 ADC pins
I2C
UART
SPI
USB type C connector
Lithium battery charger
Reset and boot buttons
User LED
Default Zephyr Peripheral Mapping
Description |
Pin |
Comments |
|---|---|---|
User LED |
GPIO25 |
Alias led0 |
GPIO header:
Label |
Pin |
Default pin mux |
|---|---|---|
0 |
GPIO0 |
UART0 TX |
1 |
GPIO1 |
UART0 RX |
4 |
GPIO4 |
I2C0 SDA |
5 |
GPIO5 |
I2C0 SCL |
8 |
GPIO8 |
|
9 |
GPIO9 |
|
16 |
GPIO16 |
SPI0 MISO |
18 |
GPIO18 |
SPI0 SCK |
19 |
GPIO19 |
SPI0 MOSI |
26 |
GPIO26 |
ADC0 |
27 |
GPIO27 |
ADC1 |
Supported Features
The beetle_rp2350 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.
beetle_rp2350/rp2350a/hazard3 target
Type |
Location |
Description |
Compatible |
|---|---|---|---|
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 |
|||
I2C |
on-chip |
||
Interrupt controller |
on-chip |
Hazard3 interrupt controller1 |
|
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico PIO3 |
|
MTD |
on-chip |
Flash node1 |
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
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 |
beetle_rp2350/rp2350a/m33 target
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 |
|||
I2C |
on-chip |
||
Interrupt controller |
on-chip |
ARMv8-M NVIC (Nested Vectored Interrupt Controller)1 |
|
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico PIO3 |
|
MTD |
on-chip |
Flash node1 |
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
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 |
Programming and Debugging
The beetle_rp2350 board supports the runners and associated west commands listed below.
| flash | debug | debugserver | rtt | attach | |
|---|---|---|---|---|---|
| jlink | ✅ | ✅ | ✅ | ✅ | ✅ |
| openocd | ✅ | ✅ (default) | ✅ | ✅ | ✅ |
| probe-rs | ✅ | ✅ | ✅ | ✅ | |
| uf2 | ✅ (default) |
By default programming is done via the USB connector. Press and hold the BOOT button, and then
press the RST button, and the device will appear as a USB mass storage unit.
Building your application will result in a build/zephyr/zephyr.uf2 file.
Drag and drop the file to the USB mass storage unit, and the board will be reprogrammed.
It is also possible to program and debug the board via the SWDIO and SWCLK pins in the DEBUG
connector. You must solder a 3-pin or 4-pin header to the back of the board in order to use
this feature. A separate programming hardware tool is required, and for example
the openocd software is used. You might need to use Raspberry Pi’s forked
version of OpenOCD. Typically the OPENOCD and OPENOCD_DEFAULT_PATH values should be
set when building, and the --runner openocd argument should be used when flashing.
For more details on programming RP2040-based and RP2350-based boards,
see Programming and Debugging.
Flashing the M33 core
To run the Blinky sample:
# From the root of the zephyr repository
west build -b beetle_rp2350/rp2350a/m33 samples/basic/blinky/
west flash
Try also the Hello World and Analog-to-Digital Converter (ADC) with devicetree samples.
Use the shell to control the GPIO pins:
# From the root of the zephyr repository
west build -b beetle_rp2350/rp2350a/m33 samples/sensor/sensor_shell -- -DCONFIG_GPIO=y -DCONFIG_GPIO_SHELL=y
west flash
To set one of the GPIO pins high, use these commands in the shell:
gpio conf gpio0 8 o
gpio set gpio0 8 1
Flashing the Hazard3 core
The RP2350A microcontroller has two ARM M33 cores and two RISC-V Hazard3 cores.
To flash one of the Hazard3 cores, use the board argument beetle_rp2350/rp2350a/hazard3.
The sample Blinky has been verified for this core.
Use the USB mass storage programming method described above.