-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add Raspberry Pi 500's RP2040 board support Fixes #2640 #2641
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
- W25X10CL flash configuration for DSPI mode - USB standalone operation support - Complete GPIO pin documentation with keyboard matrix mapping - Debug UART configuration on GP16 - Hardware-specific boot and power management settings Tested with TinyUSB MIDI example - successful enumeration and operation.
As I attempted to hint at in the linked issue, the Raspberry Pi 500 keyboard uses RP2040, not RP2350. Also, IMHO it would be better if this header file just declared everything explicitly, rather than doing #include "boards/pico2.h" And the filename should perhaps clarify that this is only the keyboard part of the Pi 500, not the entire thing 😆 |
- Rename to raspberry_pi_pi500_rp2040.h for clarity - Correct chip type from RP2350 to RP2040 - Remove pico2.h inheritance, use self-contained definitions - Add comprehensive GPIO pin mapping documentation - Include critical power management warning - Configure W25X10CL flash support for RP2040
#ifndef PICO_DEFAULT_UART_RX_PIN | ||
#define PICO_DEFAULT_UART_RX_PIN 1 // Standard RX pin | ||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to your comments below, GP1 is used as a matrix row, so you shouldn't define it here.
Sorry I didn't get the hint. |
@jhordies Do you have any interest in continuing to push this forwards? |
- Fix mistake done in pico.h PICO_RP2040_B0_SUPPORTED 0 => 1 - Disable B0 support in pi500_rp2040 - Fix flash size 1M-Bit not 1Mb - Add Matrix pin definition
Thanks! I'll take a look at this next week. |
Thanks, I tried to make a minimal version integrating your comments |
This PR adds board support for the Raspberry Pi 500's embedded RP2040 microcontroller, enabling custom firmware development while maintaining compatibility with the original keyboard functionality.
Changes:
Add raspberry_pi_pi500.h board definition
Configure W25X10CL flash support
Document complete GPIO pin mapping for 8×18 keyboard matrix
Define system function pins (power control, LEDs, debug UART)
Enable USB operation independent of main Pi power state
Hardware Specifications:
Chip: RP2040 (same as Pico)
Flash: W25X10CL 1MB (DSPI mode)
USB: Connected to Pi 500 USB hub
Matrix: 8 rows × 18 columns keyboard matrix
System GPIO: GP16 (UART), GP17 (LED), GP19 (power), GP20 (power key), GP25 (Caps LED)
Available GPIO: None (all pins reserved)
Testing:
✅ Successful firmware compilation with
✅ USB device enumeration and communication
✅ System function compatibility (power, LEDs)
✅ Compatible with original keyboard firmware restoration
Use Cases:
This enables Pi 500 users to develop custom USB applications like MIDI controllers, HID devices, and keyboard firmware modifications while preserving hardware compatibility. Note that unlike standard Pico boards, no GPIO pins are available for general use.
Files Changed:
src/boards/include/boards/raspberry_pi_pi500_rp2040.h (new)
Usage:
-DBOARD=raspberry_pi_pi500_rp2040