From 20ffe6f139a587c98dcd45b4295846d28ee14890 Mon Sep 17 00:00:00 2001 From: Ned Konz Date: Fri, 26 Dec 2025 13:55:14 -0800 Subject: [PATCH] rp2/boards/WAVESHARE_RP2350B_CORE: Add Waveshare RP2350B Core board. Signed-off-by: Ned Konz --- .../boards/WAVESHARE_RP2350B_CORE/board.json | 23 +++++++ .../mpconfigboard.cmake | 10 ++++ .../WAVESHARE_RP2350B_CORE/mpconfigboard.h | 15 +++++ .../mpconfigvariant.cmake | 2 + .../mpconfigvariant_RISCV.cmake | 2 + .../boards/WAVESHARE_RP2350B_CORE/pins.csv | 1 + .../waveshare_rp2350b_core.h | 60 +++++++++++++++++++ 7 files changed, 113 insertions(+) create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/board.json create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.cmake create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.h create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant.cmake create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant_RISCV.cmake create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/pins.csv create mode 100644 ports/rp2/boards/WAVESHARE_RP2350B_CORE/waveshare_rp2350b_core.h diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/board.json b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/board.json new file mode 100644 index 0000000000..68c095cc46 --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/board.json @@ -0,0 +1,23 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Dual-core", + "External Flash", + "External RAM", + "USB-C" + ], + "images": [ + "waveshare_rp2350b_core.png" + ], + "mcu": "rp2350", + "product": "RP2350B Core", + "thumbnail": "", + "url": "https://www.waveshare.com/core2350b.htm", + "variants": { + "RISCV": "RISC V" + }, + "vendor": "Waveshare" +} diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.cmake b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.cmake new file mode 100644 index 0000000000..5d1d95aa09 --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.cmake @@ -0,0 +1,10 @@ +# CMake file for Waveshare RP2350B Core + +# The Core is powered by an RP2350B with 48 GPIOs +set(PICO_NUM_GPIOS 48) + +# The Waveshare boards don't have official pico-sdk support. +# So, add this board directory to the header search path and define PICO_BOARD +# which will instruct pico-sdk to look for waveshare_rp2350b_core.h +list(APPEND PICO_BOARD_HEADER_DIRS ${MICROPY_BOARD_DIR}) +set(PICO_BOARD "waveshare_rp2350b_core") diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.h b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.h new file mode 100644 index 0000000000..ffdfb9df99 --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigboard.h @@ -0,0 +1,15 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "Waveshare RP2350B Core" +#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) +#define MICROPY_HW_FLASH_STORAGE_BYTES (14 * 1024 * 1024) + +#define MICROPY_HW_PSRAM_CS_PIN (47) +#define MICROPY_HW_ENABLE_PSRAM (1) + +// Override machine_uart.c definitions. +// See waveshare_rp2350b.h and note that the PICO_DEFAULT_UART configuration +// is not currently referenced in machine_uart.c. +#define MICROPY_HW_UART0_TX (0) +#define MICROPY_HW_UART0_RX (1) +#define MICROPY_HW_UART0_CTS (-1) +#define MICROPY_HW_UART0_RTS (-1) diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant.cmake b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant.cmake new file mode 100644 index 0000000000..531c915244 --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant.cmake @@ -0,0 +1,2 @@ +# Set the ARM-based RP2350 platform +set(PICO_PLATFORM "rp2350") diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant_RISCV.cmake b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant_RISCV.cmake new file mode 100644 index 0000000000..9f62e459aa --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/mpconfigvariant_RISCV.cmake @@ -0,0 +1,2 @@ +# Set the RISC-V-based RP2350 platform +set(PICO_PLATFORM "rp2350-riscv") diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/pins.csv b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/pins.csv new file mode 100644 index 0000000000..bebda28db6 --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/pins.csv @@ -0,0 +1 @@ +LED,GPIO39 diff --git a/ports/rp2/boards/WAVESHARE_RP2350B_CORE/waveshare_rp2350b_core.h b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/waveshare_rp2350b_core.h new file mode 100644 index 0000000000..b38e31fcd9 --- /dev/null +++ b/ports/rp2/boards/WAVESHARE_RP2350B_CORE/waveshare_rp2350b_core.h @@ -0,0 +1,60 @@ +#ifndef _BOARDS_WAVESHARE_RP2350B_CORE_COMMON_H +#define _BOARDS_WAVESHARE_RP2350B_CORE_COMMON_H + +// --- LED --- +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 39 +#endif + +// Note: Avoid using Pin 47 for any default peripheral since it can be used for +// extra PSRAM/flash +// NOTE that the PICO_DEFAULT_UART configuration +// is not currently referenced in machine_uart.c. + +// --- UART --- +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +// --- I2C --- +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 8 +#endif +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 9 +#endif + +// --- SPI --- +#ifndef PICO_DEFAULT_SPI +#define PICO_DEFAULT_SPI 0 +#endif +#ifndef PICO_DEFAULT_SPI_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 18 +#endif +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 +#endif +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 16 +#endif +#ifndef PICO_DEFAULT_SPI_CSN_PIN +#define PICO_DEFAULT_SPI_CSN_PIN 17 +#endif + +// Flash configuration +#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1 + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#endif