Introduction to RP2350
|Along with Pico 2 board, Raspberry pi released dual core microcontroller family based on ARM Cortex M33 core & Hazard3 RISC-V cores. Similar to RP2040, RP2350 is a also a dual core controller. The core type can be selected using software or by writing to onchip OTP memory. Pico 2 is powered by RP2350A controller.
Available Packages
- RP2350A – 30 GPIO, 4 Analog inputs, 7×7 QFN 60 Pin
- RP2354A – 30 GPIO, 4 Analog inputs, 7×7 QFN 60 Pin, 2 MB Flash
- RP2350B – 48 GPIO, 8 Analog inputs, 10×10 QFB 80 Pin
- RP2354B – 48 GPIO, 8 Analog inputs, 10×10 QFB 80 Pin, 2 MB Flash
Important features
- Dual Cortex M33 (with floating point hardware) or Hazard3 RISC-V cores at 150 MHz
- 520 KB on chip SRAM, 8 KB OTP memory, Several security features
- Can support 16 MB external QSPI flash and PSRAM (Pico 2 comes with 4MB external flash)
- USB host and device support (USB 1.1 controller)
- 2 PLLs, 2 UARTs, 2 SPI Controllers, 2 I2C Controllers, 1 HSTX interface
- 12 PIO state machines and 24 PWM Channels
- SWD interface for debugging
Cortex-M33 and Hazard3
RP2350 is dual core system, it has two processor sockets called core 0 and core 1. Each socket can be occupied by a Cortex-M33 or Hazard3 processor. Cortex-M33 implemented Armv8-M + extensions and Hazard3 implemented RV32IMAC + extensions. SDK can build binaries for both architectures and RISC-V cores can’t be used with secure boot as secure boot is not implemented for RISC-V. Binaries built by SDK has information to detect the target architectures, and RP2350 will automatically select the correct cores based on this information from the binary.
About Floating point unit
RP2350 is almost 6 times faster than RP2040 for floating point additions and multiplication because of the floating point unit (FPU) in RP2350. see this post to see the floating point performance.
Floating point unit support is provided using Cortex M33 Coprocessor ports. RP2350 has standard ARM single precision FPU and double precision coprocessor (DCP). C data types float and double automatically take advantage of these coprocessors. RISC-V Cores can’t access these coprocessors.
DCP is not full fledged double precision floating point unit, this is done to save on die area and also without compromising on the speed. double precision multiplication,division and square root operations involves data interchange between DCP and CPU. Faster versions of division (ddiv_fast) and square root operator (dsqrt_fast) results may have rounding errors but they are faster than their regular counterparts.