rp2/boards/SPARKFUN_IOTREDBOARD_RP2350: Add support for IoT RedBoard.

Signed-off-by: Alex Brudner <alex.brudner@sparkfun.com>
Signed-off-by: Malcolm McKellips <malcolm.mckellips@sparkfun.com>
This commit is contained in:
Alex Brudner
2025-03-03 17:09:56 -07:00
committed by Damien George
parent e75ffc3bcc
commit 9a070fee34
8 changed files with 369 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
{
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [
"BLE",
"Dual-core",
"External Flash",
"USB-C",
"WiFi",
"External RAM",
"microSD",
"RGB LED",
"JST-SH",
"Battery Charging"
],
"images": [
"27708-IoT-RedBoard-RP2350-Feature.jpg"
],
"mcu": "rp2350",
"product": "SparkFun IoT RedBoard RP2350",
"thumbnail": "",
"url": "https://www.sparkfun.com/sparkfun-iot-redboard-rp2350.html",
"vendor": "SparkFun"
}

View File

@@ -0,0 +1,7 @@
include("$(PORT_DIR)/boards/manifest.py")
require("bundle-networking")
require("aioble")
require("sdcard")

View File

@@ -0,0 +1,20 @@
# cmake file for SparkFun IoT RedBoard 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 "sparkfun_iotredboard_rp2350")
set(PICO_PLATFORM "rp2350")
set(PICO_NUM_GPIOS 48)
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)

View File

@@ -0,0 +1,61 @@
// Board and hardware specific configuration
#define MICROPY_HW_BOARD_NAME "SparkFun IoT RedBoard RP2350"
#define MICROPY_HW_FLASH_STORAGE_BYTES (PICO_FLASH_SIZE_BYTES - 1536 * 1024)
// Enable networking.
#define MICROPY_PY_NETWORK 1
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "IoTRedBoardRP2350"
#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 (0x1B4F)
#define MICROPY_HW_USB_PID (0x0047)
// UART0
#define MICROPY_HW_UART0_TX (0)
#define MICROPY_HW_UART0_RX (1)
#define MICROPY_HW_UART0_CTS (30)
#define MICROPY_HW_UART0_RTS (31)
// UART1
#define MICROPY_HW_UART1_TX (40)
#define MICROPY_HW_UART1_RX (41)
#define MICROPY_HW_UART1_CTS (42)
#define MICROPY_HW_UART1_RTS (43)
// I2C0
#define MICROPY_HW_I2C0_SCL (5)
#define MICROPY_HW_I2C0_SDA (4)
// I2C1
#define MICROPY_HW_I2C1_SCL (31)
#define MICROPY_HW_I2C1_SDA (30)
// SPI0
#define MICROPY_HW_SPI0_SCK (22)
#define MICROPY_HW_SPI0_MOSI (23)
#define MICROPY_HW_SPI0_MISO (20)
// SD Card/SPI1
#define MICROPY_HW_SPI1_SCK (10)
#define MICROPY_HW_SPI1_MOSI (11)
#define MICROPY_HW_SPI1_MISO (8)
// PSRAM
#define MICROPY_HW_PSRAM_CS_PIN (47)
#define MICROPY_HW_ENABLE_PSRAM (1)
// #include "enable_cyw43.h"
// 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)

View File

@@ -0,0 +1 @@
set(PICO_PLATFORM "rp2350")

View File

@@ -0,0 +1 @@
set(PICO_PLATFORM "rp2350-riscv")

View File

@@ -0,0 +1,70 @@
GP0,GPIO0
GP1,GPIO1
GP2,GPIO2
GP3,GPIO3
GP4,GPIO4
GP5,GPIO5
GP6,GPIO6
GP7,GPIO7
GP8,GPIO8
GP9,GPIO9
GP10,GPIO10
GP11,GPIO11
GP12,GPIO12
GP13,GPIO13
GP14,GPIO14
GP15,GPIO15
GP16,GPIO16
GP17,GPIO17
GP18,GPIO18
GP19,GPIO19
GP20,GPIO20
GP21,GPIO21
GP22,GPIO22
GP23,GPIO23
GP25,GPIO25
GP26,GPIO26
GP27,GPIO27
GP28,GPIO28
GP29,GPIO29
GP30,GPIO30
GP31,GPIO31
GP32,GPIO32
GP33,GPIO33
GP34,GPIO34
GP35,GPIO35
GP39,GPIO39
GP40,GPIO40
GP41,GPIO41
GP42,GPIO42
GP43,GPIO43
GP44,GPIO44
GP45,GPIO45
WL_GPIO0,EXT_GPIO0
WL_GPIO1,EXT_GPIO1
WL_GPIO2,EXT_GPIO2
WL_LED,EXT_GPIO0
SD_DET,GPIO2
RGB_LED,GPIO3
NEOPIXEL,GPIO3
B_ALRT,GPIO6
PERIPH_POWER,GPIO7
HSTX0,GPIO12
HSTX1,GPIO13
HSTX2,GPIO14
HSTX3,GPIO15
HSTX4,GPIO16
HSTX5,GPIO17
HSTX6,GPIO18
HSTX7,GPIO19
LED,GPIO25
STAT,GPIO25
SRC_5V,GPIO26
BATT_PWR,GPIO27
USER_SW,GPIO39
A0,GPIO40
A1,GPIO41
A2,GPIO42
A3,GPIO43
A4,GPIO44
A5,GPIO45
1 GP0 GPIO0
2 GP1 GPIO1
3 GP2 GPIO2
4 GP3 GPIO3
5 GP4 GPIO4
6 GP5 GPIO5
7 GP6 GPIO6
8 GP7 GPIO7
9 GP8 GPIO8
10 GP9 GPIO9
11 GP10 GPIO10
12 GP11 GPIO11
13 GP12 GPIO12
14 GP13 GPIO13
15 GP14 GPIO14
16 GP15 GPIO15
17 GP16 GPIO16
18 GP17 GPIO17
19 GP18 GPIO18
20 GP19 GPIO19
21 GP20 GPIO20
22 GP21 GPIO21
23 GP22 GPIO22
24 GP23 GPIO23
25 GP25 GPIO25
26 GP26 GPIO26
27 GP27 GPIO27
28 GP28 GPIO28
29 GP29 GPIO29
30 GP30 GPIO30
31 GP31 GPIO31
32 GP32 GPIO32
33 GP33 GPIO33
34 GP34 GPIO34
35 GP35 GPIO35
36 GP39 GPIO39
37 GP40 GPIO40
38 GP41 GPIO41
39 GP42 GPIO42
40 GP43 GPIO43
41 GP44 GPIO44
42 GP45 GPIO45
43 WL_GPIO0 EXT_GPIO0
44 WL_GPIO1 EXT_GPIO1
45 WL_GPIO2 EXT_GPIO2
46 WL_LED EXT_GPIO0
47 SD_DET GPIO2
48 RGB_LED GPIO3
49 NEOPIXEL GPIO3
50 B_ALRT GPIO6
51 PERIPH_POWER GPIO7
52 HSTX0 GPIO12
53 HSTX1 GPIO13
54 HSTX2 GPIO14
55 HSTX3 GPIO15
56 HSTX4 GPIO16
57 HSTX5 GPIO17
58 HSTX6 GPIO18
59 HSTX7 GPIO19
60 LED GPIO25
61 STAT GPIO25
62 SRC_5V GPIO26
63 BATT_PWR GPIO27
64 USER_SW GPIO39
65 A0 GPIO40
66 A1 GPIO41
67 A2 GPIO42
68 A3 GPIO43
69 A4 GPIO44
70 A5 GPIO45

View File

@@ -0,0 +1,183 @@
/*
* 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 SparkFun IoT RedBoard - RP2350
//
// This header may be included by other board headers as "boards/sparkfun_iotredboard_rp2350.h"
// pico_cmake_set PICO_PLATFORM=rp2350
// pico_cmake_set PICO_CYW43_SUPPORTED = 1
#ifndef _BOARDS_SPARKFUN_IOTREDBOARD_RP2350_H
#define _BOARDS_SPARKFUN_IOTREDBOARD_RP2350_H
// For board detection
#define SPARKFUN_IOTREDBOARD_RP2350
// --- RP2350 VARIANT ---
#define PICO_RP2350A 0 // 1 for RP2350A, 0 for RP2350B
// --- BOARD SPECIFIC ---
#define SPARKFUN_IOTREDBOARD_RP2350_USER_SW_PIN 39
#define SPARKFUN_IOTREDBOARD_RP2350_PSRAM_CS_PIN 47
// --- 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
// --- LED ---
#ifndef PICO_DEFAULT_LED_PIN
#define PICO_DEFAULT_LED_PIN 25
#endif
#ifndef PICO_DEFAULT_WS2812_PIN
#define PICO_DEFAULT_WS2812_PIN 3
#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 4
#endif
#ifndef PICO_DEFAULT_I2C_SCL_PIN
#define PICO_DEFAULT_I2C_SCL_PIN 5
#endif
// --- SPI ---
#ifndef PICO_DEFAULT_SPI
#define PICO_DEFAULT_SPI 0
#endif
#ifndef PICO_DEFAULT_SPI_SCK_PIN
#define PICO_DEFAULT_SPI_SCK_PIN 22
#endif
#ifndef PICO_DEFAULT_SPI_TX_PIN
#define PICO_DEFAULT_SPI_TX_PIN 23
#endif
#ifndef PICO_DEFAULT_SPI_RX_PIN
#define PICO_DEFAULT_SPI_RX_PIN 20
#endif
#ifndef PICO_DEFAULT_SPI_CSN_PIN
#define PICO_DEFAULT_SPI_CSN_PIN 21
#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 10
#endif
#ifndef PICO_SD_CMD_PIN
#define PICO_SD_CMD_PIN 11
#endif
#ifndef PICO_SD_DAT0_PIN
#define PICO_SD_DAT0_PIN 8
#endif
#ifndef PICO_SD_DAT3_PIN
#define PICO_SD_DAT3_PIN 9 // 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
// The GPIO Pin used to monitor VSYS. Typically you would use this with ADC.
// There is an example in adc/read_vsys in pico-examples.
#ifndef PICO_VSYS_PIN
#define PICO_VSYS_PIN 46
#endif
// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1
#ifndef PICO_RP2350_A2_SUPPORTED
#define PICO_RP2350_A2_SUPPORTED 1
#endif
// Bootloader activity LED in double reset mode.
#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED
#define PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED PICO_DEFAULT_LED_PIN
#endif
// Bootloader activity LED in USB reset mode.
#ifndef PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED
#define PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED PICO_DEFAULT_LED_PIN
#endif
// --- CYW43 ---
#ifndef CYW43_WL_GPIO_COUNT
#define CYW43_WL_GPIO_COUNT 3
#endif
#ifndef CYW43_WL_GPIO_LED_PIN
#define CYW43_WL_GPIO_LED_PIN 0
#endif
// If CYW43_WL_GPIO_VBUS_PIN is defined then a CYW43 GPIO has to be used to read VBUS.
// This can be passed to cyw43_arch_gpio_get to determine if the device is battery powered.
// PICO_VBUS_PIN and CYW43_WL_GPIO_VBUS_PIN should not both be defined.
#ifndef CYW43_WL_GPIO_VBUS_PIN
#define CYW43_WL_GPIO_VBUS_PIN 2
#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 24u
#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 38u
#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 38u
#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 38u
#endif
// gpio pin for the spi clock line to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_CLOCK
#define CYW43_DEFAULT_PIN_WL_CLOCK 37u
#endif
// gpio pin for the spi chip select to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_CS
#define CYW43_DEFAULT_PIN_WL_CS 36u
#endif
#endif // _BOARDS_SPARKFUN_IOTREDBOARD_RP2350_H