|
1 | | -@defgroup boards_rpi_pico_2 Raspberry Pi Pico 2 |
| 1 | +@defgroup boards_rpi_pico_2_arm Raspberry Pi Pico 2 |
2 | 2 | @ingroup boards |
3 | 3 | @brief Support for the RP2350 based Raspberry Pi Pico board |
4 | 4 |
|
5 | | -@warning The support for the Raspberry Pi Pico 2 is still in a very early stage! |
6 | | -See [Known Issues](#rpi_pico_2_known_issues). |
7 | | - |
8 | | -## Overview |
9 | | - |
10 | | -The Raspberry Pi Pico 2 is a microcontroller board based on the RP2350 chip, |
11 | | -featuring dual-core Arm Cortex-M0+ processors and RISC-V Hazard secondary |
12 | | -architecture. It is designed for a wide range of applications, |
13 | | -from hobbyist projects to professional embedded systems |
14 | | -for a fairly affordable price. |
15 | | - |
16 | | - |
17 | | - |
18 | | -## Hardware |
19 | | - |
20 | | -| MCU | RP2350 | |
21 | | -|:-----------|:------------------------------------------------------------| |
22 | | -| Family | Dual Cortex-M33 or Hazard3 (RISC-V) | |
23 | | -| Vendor | Raspberry Pi | |
24 | | -| RAM | 520 kB on-chip SRAM (10 independent banks) | |
25 | | -| Flash | Up to 16 MB external QSPI flash (Pico 2 has 4 MB by default)| |
26 | | -| Frequency | up to 150 MHz (Set to 125 MHz in RIOT) | |
27 | | -| Security | Boot signing, key storage, SHA-256 accelerator | |
28 | | -| PIOs | 12 state machines | |
29 | | -| UARTs | 2 | |
30 | | -| SPIs | 2 | |
31 | | -| I2Cs | 2 | |
32 | | -| PWM | 24 channels | |
33 | | -| USB | USB 1.1 controller with host and device support | |
34 | | -| Power | On-chip switched-mode power supply with LDO sleep mode | |
35 | | -| OTP | 8 kB of one-time-programmable storage | |
36 | | -| Datasheet | [RP2350 Datasheet](https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf) | |
37 | | - |
38 | | -## User Interfaces |
39 | | - |
40 | | -| Interface | Description | |
41 | | -|:-----------|:-------------------------------------------------------------| |
42 | | -| LED0 | User LED (GPIO 0 at Pin 25) | |
43 | | -| SW0 | Button used in flash process, can be accessed using registers but difficult | |
44 | | - |
45 | | -## Pinout |
46 | | - |
47 | | - |
48 | | - |
49 | | -## Flashing the Board |
50 | | - |
51 | | -The Raspberry Pi Pico 2 has a built-in bootloader that allows flashing via USB. |
52 | | -However, you can also use OpenOCD for flashing the board. |
53 | | -If you are using picotool, you need to hold the bootselect button |
54 | | -(the only button on the board) while connecting the board to |
55 | | -your computer via USB. This will put the board into bootloader mode, |
56 | | -allowing you to flash it. |
57 | | - |
58 | | -### Flashing using OpenOCD |
59 | | - |
60 | | -If you have two Raspberry Pi Pico boards, |
61 | | -you can utilize one as a programmer to program the other board. |
62 | | - |
63 | | -Please refer to the |
64 | | -[Debugprobe documentation](https://www.raspberrypi.com/documentation/microcontrollers/debug-probe.html#getting-started) |
65 | | -for more details. |
66 | | - |
67 | | -Note that Raspberry Pi actually uses their own OpenOCD fork, which is available |
68 | | -in the [RP2040 OpenOCD repository](https://github.com/raspberrypi/openocd). |
69 | | -While technically you can use the standard OpenOCD, |
70 | | -it is recommended to use the Raspberry Pi fork for better compatibility with the |
71 | | -RP2350, as its still fairly "new" and under development, |
72 | | -which is why even their own Pico SDK Extension |
73 | | -uses the Raspberry Pi fork of OpenOCD, instead of the standard one. |
74 | | - |
75 | | -To do this, you need to connect the board to your computer |
76 | | -and use the following command: |
77 | | - |
78 | | -```bash |
79 | | -PROGRAMMER=openocd BOARD=rpi-pico-2-arm make flash |
80 | | -``` |
81 | | - |
82 | | -You can then debug your application using GDB with the following command: |
83 | | - |
84 | | -```bash |
85 | | -PROGRAMMER=openocd BOARD=rpi-pico-2-arm make debug |
86 | | -``` |
87 | | - |
88 | | -### Flashing using Picotool |
89 | | - |
90 | | -Simply connect the board to your computer via USB and use the following command: |
91 | | - |
92 | | -```bash |
93 | | -BOARD=rpi-pico-2-arm make flash |
94 | | -``` |
95 | | - |
96 | | -This is the default method for flashing the Raspberry Pi Pico 2. |
97 | | -However, it does not allow for debugging using GDB. |
98 | | - |
99 | | -@note When programming the board with the Picotool for the first time, |
100 | | -RIOT will download and install the Picotool locally in the RIOT folder. |
101 | | -This process will take some minutes to complete. |
102 | | - |
103 | | -## Known Issues {#rpi_pico_2_known_issues} |
104 | | - |
105 | | -Currently RP2350 support is rather minimal, |
106 | | -as such peripheral support is extremely limited. |
107 | | -The following peripherals are supported: |
108 | | - |
109 | | -- GPIO |
110 | | -- Non-configurable write-only UART (UART0 using Pin 0 and 1) |
111 | | - - The UART Baudrate is set to 115200. |
112 | | - - UART does not work via USB, you need to connect it directly to the GPIO pins. |
113 | | - |
114 | | -More peripherals will be added in the future. |
115 | | -It should also be noted that we currently only support the Cortex M33 cores, |
116 | | -not the RISC-V Hazard cores. |
| 5 | +See @ref boards_rpi_pico_2_riscv for further information. |
0 commit comments