rp2/boards/SOLDERED_NULA_MAX_RP2350: Add Soldered NULA Max board def.
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c5_c6, v5.5.2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2, v5.3) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2, v5.5.2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_p4, v5.5.2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3, v5.3) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3, v5.5.2) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_hardfp) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_softfp) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
qemu port / build_and_test_rv64 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / repr_b (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v142, dev, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v142, standard, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v143, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v142, dev, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v142, standard, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v143, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled

The adds a board definition for the Soldered NULA Max RP2350 which has the
following features:
- RP2350 chip
- RP Radio Module 2
- MicroSD card reader
- 16MB of flash

The board contains initialization code for all said modules and settings.

Signed-off-by: Josip Šimun Kuči <josipsimunkuci@gmail.com>
This commit is contained in:
Josip Šimun Kuči
2026-05-21 14:17:22 +02:00
committed by Damien George
parent 51777eb152
commit dd23554591
8 changed files with 309 additions and 0 deletions
@@ -0,0 +1,25 @@
{
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"USB-C",
"WiFi",
"microSD",
"RGB LED",
"JST-SH",
"Battery Charging"
],
"images": [
"soldered-nula-rp2350.jpg"
],
"mcu": "rp2350",
"product": "NULA RP2350",
"thumbnail": "",
"url": "https://soldered.com/product/nula-max-rp2350/",
"vendor": "Soldered Electronics"
}
@@ -0,0 +1,7 @@
include("$(PORT_DIR)/boards/manifest.py")
require("bundle-networking")
require("aioble")
require("sdcard")
@@ -0,0 +1,24 @@
# cmake file for Soldered NULA Max RP2350
# TODO: DELETE THIS LINE WHEN SUBMODULED PICO-SDK INCLUDES THIS BOARD
set(PICO_BOARD_HEADER_DIRS ${MICROPY_PORT_DIR}/boards/${MICROPY_BOARD})
set(PICO_BOARD "soldered_nula_max_rp2350")
set(PICO_PLATFORM "rp2350")
set(PICO_NUM_GPIOS 48)
if(NOT DEFINED MICROPY_HW_FLASH_STORAGE_BYTES)
set(MICROPY_HW_FLASH_STORAGE_BYTES 14680064) # 14 * 1024 * 1024
endif()
set(MICROPY_PY_LWIP ON)
set(MICROPY_PY_NETWORK_CYW43 ON)
# Bluetooth
set(MICROPY_PY_BLUETOOTH ON)
set(MICROPY_BLUETOOTH_BTSTACK ON)
set(MICROPY_PY_BLUETOOTH_CYW43 ON)
# Board specific version of the frozen manifest
set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py)
@@ -0,0 +1,45 @@
// Board and hardware specific configuration
#define MICROPY_HW_BOARD_NAME "Soldered NULA Max RP2350"
// Enable networking.
#define MICROPY_PY_NETWORK 1
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "NULA_RP2350"
#define CYW43_USE_SPI (1)
#define CYW43_LWIP (1)
#define CYW43_GPIO (1)
#define CYW43_SPI_PIO (1)
// USB VID/PID
#define MICROPY_HW_USB_VID (0x2E8A)
#define MICROPY_HW_USB_PID (0x10EC)
// UART0
#define MICROPY_HW_UART0_TX (32)
#define MICROPY_HW_UART0_RX (33)
#define MICROPY_HW_UART0_CTS (30)
#define MICROPY_HW_UART0_RTS (31)
// I2C0
#define MICROPY_HW_I2C0_SCL (9)
#define MICROPY_HW_I2C0_SDA (8)
// SD Card/SPI0
#define MICROPY_HW_SPI0_SCK (2)
#define MICROPY_HW_SPI0_MOSI (3)
#define MICROPY_HW_SPI0_MISO (0)
// SPI1
#define MICROPY_HW_SPI1_SCK (42)
#define MICROPY_HW_SPI1_MOSI (43)
#define MICROPY_HW_SPI1_MISO (44)
// For debugging mbedtls - also set
// Debug level (0-4) 1=warning, 2=info, 3=debug, 4=verbose
// #define MODUSSL_MBEDTLS_DEBUG_LEVEL 1
#define MICROPY_HW_PIN_EXT_COUNT CYW43_WL_GPIO_COUNT
int mp_hal_is_pin_reserved(int n);
#define MICROPY_HW_PIN_RESERVED(i) mp_hal_is_pin_reserved(i)
@@ -0,0 +1 @@
set(PICO_PLATFORM "rp2350")
@@ -0,0 +1 @@
set(PICO_PLATFORM "rp2350-riscv")
@@ -0,0 +1,55 @@
IO0,GPIO0
IO1,GPIO1
IO2,GPIO2
IO3,GPIO3
IO4,GPIO4
IO5,GPIO5
IO6,GPIO6
IO7,GPIO7
IO8,GPIO8
IO9,GPIO9
IO10,GPIO10
IO11,GPIO11
IO12,GPIO12
IO13,GPIO13
IO14,GPIO14
IO15,GPIO15
IO16,GPIO16
IO17,GPIO17
IO18,GPIO18
IO19,GPIO19
IO20,GPIO20
IO21,GPIO21
IO22,GPIO22
IO23,GPIO23
IO25,GPIO25
IO26,GPIO26
IO27,GPIO27
IO28,GPIO28
IO29,GPIO29
IO30,GPIO30
IO31,GPIO31
IO32,GPIO32
IO33,GPIO33
IO34,GPIO34
IO35,GPIO35
IO39,GPIO39
IO40,GPIO40
IO41,GPIO41
IO42,GPIO42
IO43,GPIO43
IO44,GPIO44
IO45,GPIO45
IO46,GPIO46
IO47,GPIO47
SD_ENABLE,GPIO4
NEOPIXEL,GPIO26
USER_SW,GPIO27
A0,GPIO40
A1,GPIO41
A2,GPIO42
A3,GPIO43
A4,GPIO44
A5,GPIO45
A6,GPIO46
A7,GPIO47
1 IO0 GPIO0
2 IO1 GPIO1
3 IO2 GPIO2
4 IO3 GPIO3
5 IO4 GPIO4
6 IO5 GPIO5
7 IO6 GPIO6
8 IO7 GPIO7
9 IO8 GPIO8
10 IO9 GPIO9
11 IO10 GPIO10
12 IO11 GPIO11
13 IO12 GPIO12
14 IO13 GPIO13
15 IO14 GPIO14
16 IO15 GPIO15
17 IO16 GPIO16
18 IO17 GPIO17
19 IO18 GPIO18
20 IO19 GPIO19
21 IO20 GPIO20
22 IO21 GPIO21
23 IO22 GPIO22
24 IO23 GPIO23
25 IO25 GPIO25
26 IO26 GPIO26
27 IO27 GPIO27
28 IO28 GPIO28
29 IO29 GPIO29
30 IO30 GPIO30
31 IO31 GPIO31
32 IO32 GPIO32
33 IO33 GPIO33
34 IO34 GPIO34
35 IO35 GPIO35
36 IO39 GPIO39
37 IO40 GPIO40
38 IO41 GPIO41
39 IO42 GPIO42
40 IO43 GPIO43
41 IO44 GPIO44
42 IO45 GPIO45
43 IO46 GPIO46
44 IO47 GPIO47
45 SD_ENABLE GPIO4
46 NEOPIXEL GPIO26
47 USER_SW GPIO27
48 A0 GPIO40
49 A1 GPIO41
50 A2 GPIO42
51 A3 GPIO43
52 A4 GPIO44
53 A5 GPIO45
54 A6 GPIO46
55 A7 GPIO47
@@ -0,0 +1,151 @@
/*
* Copyright (c) 2024 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// -----------------------------------------------------
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
// -----------------------------------------------------
// Board definition for the Soldered NULA Max RP2350
//
// This header may be included by other board headers as "boards/soldered_nula_max_rp2350.h"
// pico_cmake_set PICO_PLATFORM=rp2350
// pico_cmake_set PICO_CYW43_SUPPORTED = 1
#ifndef _BOARDS_SOLDERED_NULA_MAX_RP2350_H
#define _BOARDS_SOLDERED_NULA_MAX_RP2350_H
// For board detection
#define SOLDERED_NULA_MAX_RP2350
// --- RP2350 VARIANT ---
#define PICO_RP2350A 0 // 1 for RP2350A, 0 for RP2350B
// --- BOARD SPECIFIC ---
#define SOLDERED_NULA_MAX_RP2350_USER_SW_PIN 27
// --- UART ---
#ifndef PICO_DEFAULT_UART
#define PICO_DEFAULT_UART 0
#endif
#ifndef PICO_DEFAULT_UART_TX_PIN
#define PICO_DEFAULT_UART_TX_PIN 32
#endif
#ifndef PICO_DEFAULT_UART_RX_PIN
#define PICO_DEFAULT_UART_RX_PIN 33
#endif
// --- LED ---
#ifndef PICO_DEFAULT_WS2812_PIN
#define PICO_DEFAULT_WS2812_PIN 26
#endif
// --- I2C --- Qwiic connector is on these pins
#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 1
#endif
#ifndef PICO_DEFAULT_SPI_SCK_PIN
#define PICO_DEFAULT_SPI_SCK_PIN 42
#endif
#ifndef PICO_DEFAULT_SPI_TX_PIN
#define PICO_DEFAULT_SPI_TX_PIN 43
#endif
#ifndef PICO_DEFAULT_SPI_RX_PIN
#define PICO_DEFAULT_SPI_RX_PIN 44
#endif
#ifndef PICO_DEFAULT_SPI_CSN_PIN
#define PICO_DEFAULT_SPI_CSN_PIN 41
#endif
// --- FLASH ---
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
#ifndef PICO_FLASH_SPI_CLKDIV
#define PICO_FLASH_SPI_CLKDIV 2
#endif
// pico_cmake_set_default PICO_FLASH_SIZE_BYTES = (16 * 1024 * 1024)
#ifndef PICO_FLASH_SIZE_BYTES
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
#endif
// The IoT RedBoard has an SD Card.
#ifndef PICO_SD_CLK_PIN
#define PICO_SD_CLK_PIN 2
#endif
#ifndef PICO_SD_CMD_PIN
#define PICO_SD_CMD_PIN 0
#endif
#ifndef PICO_SD_DAT0_PIN
#define PICO_SD_DAT0_PIN 3
#endif
#ifndef PICO_SD_DAT3_PIN
#define PICO_SD_DAT3_PIN 1 // DAT3 of the SD card is the chip select pin
#endif
#ifndef PICO_SD_DAT_PIN_COUNT
#define PICO_SD_DAT_PIN_COUNT 1
#endif
// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1
#ifndef PICO_RP2350_A2_SUPPORTED
#define PICO_RP2350_A2_SUPPORTED 1
#endif
// --- CYW43 ---
#ifndef CYW43_WL_GPIO_COUNT
#define CYW43_WL_GPIO_COUNT 3
#endif
// cyw43 SPI pins can't be changed at runtime
#ifndef CYW43_PIN_WL_DYNAMIC
#define CYW43_PIN_WL_DYNAMIC 0
#endif
// gpio pin to power up the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_REG_ON
#define CYW43_DEFAULT_PIN_WL_REG_ON 23u
#endif
// gpio pin for spi data out to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_DATA_OUT
#define CYW43_DEFAULT_PIN_WL_DATA_OUT 24u
#endif
// gpio pin for spi data in from the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_DATA_IN
#define CYW43_DEFAULT_PIN_WL_DATA_IN 24u
#endif
// gpio (irq) pin for the irq line from the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_HOST_WAKE
#define CYW43_DEFAULT_PIN_WL_HOST_WAKE 24u
#endif
// gpio pin for the spi clock line to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_CLOCK
#define CYW43_DEFAULT_PIN_WL_CLOCK 29u
#endif
// gpio pin for the spi chip select to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_CS
#define CYW43_DEFAULT_PIN_WL_CS 25u
#endif
#endif // _BOARDS_SOLDERED_NULA_RP2350_MAX_H