Skip to content

Commit 9a070fe

Browse files
SFE-Brudnerddpgeorge
authored andcommitted
rp2/boards/SPARKFUN_IOTREDBOARD_RP2350: Add support for IoT RedBoard.
Signed-off-by: Alex Brudner <[email protected]> Signed-off-by: Malcolm McKellips <[email protected]>
1 parent e75ffc3 commit 9a070fe

File tree

8 files changed

+369
-0
lines changed

8 files changed

+369
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"deploy": [
3+
"../deploy.md"
4+
],
5+
"docs": "",
6+
"features": [
7+
"BLE",
8+
"Dual-core",
9+
"External Flash",
10+
"USB-C",
11+
"WiFi",
12+
"External RAM",
13+
"microSD",
14+
"RGB LED",
15+
"JST-SH",
16+
"Battery Charging"
17+
],
18+
"images": [
19+
"27708-IoT-RedBoard-RP2350-Feature.jpg"
20+
],
21+
"mcu": "rp2350",
22+
"product": "SparkFun IoT RedBoard RP2350",
23+
"thumbnail": "",
24+
"url": "https://www.sparkfun.com/sparkfun-iot-redboard-rp2350.html",
25+
"vendor": "SparkFun"
26+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
include("$(PORT_DIR)/boards/manifest.py")
2+
3+
require("bundle-networking")
4+
5+
require("aioble")
6+
7+
require("sdcard")
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# cmake file for SparkFun IoT RedBoard RP2350
2+
3+
# TODO: DELETE THIS LINE WHEN SUBMODULED PICO-SDK INCLUDES THIS BOARD
4+
set(PICO_BOARD_HEADER_DIRS ${MICROPY_PORT_DIR}/boards/${MICROPY_BOARD})
5+
6+
set(PICO_BOARD "sparkfun_iotredboard_rp2350")
7+
set(PICO_PLATFORM "rp2350")
8+
9+
set(PICO_NUM_GPIOS 48)
10+
11+
set(MICROPY_PY_LWIP ON)
12+
set(MICROPY_PY_NETWORK_CYW43 ON)
13+
14+
# Bluetooth
15+
set(MICROPY_PY_BLUETOOTH ON)
16+
set(MICROPY_BLUETOOTH_BTSTACK ON)
17+
set(MICROPY_PY_BLUETOOTH_CYW43 ON)
18+
19+
# Board specific version of the frozen manifest
20+
set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py)
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Board and hardware specific configuration
2+
#define MICROPY_HW_BOARD_NAME "SparkFun IoT RedBoard RP2350"
3+
#define MICROPY_HW_FLASH_STORAGE_BYTES (PICO_FLASH_SIZE_BYTES - 1536 * 1024)
4+
5+
// Enable networking.
6+
#define MICROPY_PY_NETWORK 1
7+
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "IoTRedBoardRP2350"
8+
9+
#define CYW43_USE_SPI (1)
10+
#define CYW43_LWIP (1)
11+
#define CYW43_GPIO (1)
12+
#define CYW43_SPI_PIO (1)
13+
14+
// USB VID/PID
15+
#define MICROPY_HW_USB_VID (0x1B4F)
16+
#define MICROPY_HW_USB_PID (0x0047)
17+
18+
// UART0
19+
#define MICROPY_HW_UART0_TX (0)
20+
#define MICROPY_HW_UART0_RX (1)
21+
#define MICROPY_HW_UART0_CTS (30)
22+
#define MICROPY_HW_UART0_RTS (31)
23+
24+
// UART1
25+
#define MICROPY_HW_UART1_TX (40)
26+
#define MICROPY_HW_UART1_RX (41)
27+
#define MICROPY_HW_UART1_CTS (42)
28+
#define MICROPY_HW_UART1_RTS (43)
29+
30+
// I2C0
31+
#define MICROPY_HW_I2C0_SCL (5)
32+
#define MICROPY_HW_I2C0_SDA (4)
33+
34+
// I2C1
35+
#define MICROPY_HW_I2C1_SCL (31)
36+
#define MICROPY_HW_I2C1_SDA (30)
37+
38+
// SPI0
39+
#define MICROPY_HW_SPI0_SCK (22)
40+
#define MICROPY_HW_SPI0_MOSI (23)
41+
#define MICROPY_HW_SPI0_MISO (20)
42+
43+
// SD Card/SPI1
44+
#define MICROPY_HW_SPI1_SCK (10)
45+
#define MICROPY_HW_SPI1_MOSI (11)
46+
#define MICROPY_HW_SPI1_MISO (8)
47+
48+
// PSRAM
49+
#define MICROPY_HW_PSRAM_CS_PIN (47)
50+
#define MICROPY_HW_ENABLE_PSRAM (1)
51+
52+
// #include "enable_cyw43.h"
53+
54+
// For debugging mbedtls - also set
55+
// Debug level (0-4) 1=warning, 2=info, 3=debug, 4=verbose
56+
// #define MODUSSL_MBEDTLS_DEBUG_LEVEL 1
57+
58+
#define MICROPY_HW_PIN_EXT_COUNT CYW43_WL_GPIO_COUNT
59+
60+
int mp_hal_is_pin_reserved(int n);
61+
#define MICROPY_HW_PIN_RESERVED(i) mp_hal_is_pin_reserved(i)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
set(PICO_PLATFORM "rp2350")
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
set(PICO_PLATFORM "rp2350-riscv")
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
/*
2+
* Copyright (c) 2024 Raspberry Pi (Trading) Ltd.
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
// -----------------------------------------------------
8+
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
9+
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
10+
// -----------------------------------------------------
11+
// Board definition for the SparkFun IoT RedBoard - RP2350
12+
//
13+
// This header may be included by other board headers as "boards/sparkfun_iotredboard_rp2350.h"
14+
15+
// pico_cmake_set PICO_PLATFORM=rp2350
16+
// pico_cmake_set PICO_CYW43_SUPPORTED = 1
17+
18+
#ifndef _BOARDS_SPARKFUN_IOTREDBOARD_RP2350_H
19+
#define _BOARDS_SPARKFUN_IOTREDBOARD_RP2350_H
20+
21+
// For board detection
22+
#define SPARKFUN_IOTREDBOARD_RP2350
23+
24+
// --- RP2350 VARIANT ---
25+
#define PICO_RP2350A 0 // 1 for RP2350A, 0 for RP2350B
26+
27+
// --- BOARD SPECIFIC ---
28+
#define SPARKFUN_IOTREDBOARD_RP2350_USER_SW_PIN 39
29+
#define SPARKFUN_IOTREDBOARD_RP2350_PSRAM_CS_PIN 47
30+
31+
32+
// --- UART ---
33+
#ifndef PICO_DEFAULT_UART
34+
#define PICO_DEFAULT_UART 0
35+
#endif
36+
#ifndef PICO_DEFAULT_UART_TX_PIN
37+
#define PICO_DEFAULT_UART_TX_PIN 0
38+
#endif
39+
#ifndef PICO_DEFAULT_UART_RX_PIN
40+
#define PICO_DEFAULT_UART_RX_PIN 1
41+
#endif
42+
43+
// --- LED ---
44+
#ifndef PICO_DEFAULT_LED_PIN
45+
#define PICO_DEFAULT_LED_PIN 25
46+
#endif
47+
48+
#ifndef PICO_DEFAULT_WS2812_PIN
49+
#define PICO_DEFAULT_WS2812_PIN 3
50+
#endif
51+
52+
// --- I2C --- Qwiic connector is on these pins
53+
#ifndef PICO_DEFAULT_I2C
54+
#define PICO_DEFAULT_I2C 0
55+
#endif
56+
#ifndef PICO_DEFAULT_I2C_SDA_PIN
57+
#define PICO_DEFAULT_I2C_SDA_PIN 4
58+
#endif
59+
#ifndef PICO_DEFAULT_I2C_SCL_PIN
60+
#define PICO_DEFAULT_I2C_SCL_PIN 5
61+
#endif
62+
63+
// --- SPI ---
64+
#ifndef PICO_DEFAULT_SPI
65+
#define PICO_DEFAULT_SPI 0
66+
#endif
67+
#ifndef PICO_DEFAULT_SPI_SCK_PIN
68+
#define PICO_DEFAULT_SPI_SCK_PIN 22
69+
#endif
70+
#ifndef PICO_DEFAULT_SPI_TX_PIN
71+
#define PICO_DEFAULT_SPI_TX_PIN 23
72+
#endif
73+
#ifndef PICO_DEFAULT_SPI_RX_PIN
74+
#define PICO_DEFAULT_SPI_RX_PIN 20
75+
#endif
76+
#ifndef PICO_DEFAULT_SPI_CSN_PIN
77+
#define PICO_DEFAULT_SPI_CSN_PIN 21
78+
#endif
79+
80+
// --- FLASH ---
81+
82+
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
83+
84+
#ifndef PICO_FLASH_SPI_CLKDIV
85+
#define PICO_FLASH_SPI_CLKDIV 2
86+
#endif
87+
88+
// pico_cmake_set_default PICO_FLASH_SIZE_BYTES = (16 * 1024 * 1024)
89+
#ifndef PICO_FLASH_SIZE_BYTES
90+
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
91+
#endif
92+
93+
// The IoT RedBoard has an SD Card.
94+
#ifndef PICO_SD_CLK_PIN
95+
#define PICO_SD_CLK_PIN 10
96+
#endif
97+
#ifndef PICO_SD_CMD_PIN
98+
#define PICO_SD_CMD_PIN 11
99+
#endif
100+
#ifndef PICO_SD_DAT0_PIN
101+
#define PICO_SD_DAT0_PIN 8
102+
#endif
103+
#ifndef PICO_SD_DAT3_PIN
104+
#define PICO_SD_DAT3_PIN 9 // DAT3 of the SD card is the chip select pin
105+
#endif
106+
#ifndef PICO_SD_DAT_PIN_COUNT
107+
#define PICO_SD_DAT_PIN_COUNT 1
108+
#endif
109+
110+
// The GPIO Pin used to monitor VSYS. Typically you would use this with ADC.
111+
// There is an example in adc/read_vsys in pico-examples.
112+
#ifndef PICO_VSYS_PIN
113+
#define PICO_VSYS_PIN 46
114+
#endif
115+
116+
// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1
117+
#ifndef PICO_RP2350_A2_SUPPORTED
118+
#define PICO_RP2350_A2_SUPPORTED 1
119+
#endif
120+
121+
// Bootloader activity LED in double reset mode.
122+
#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED
123+
#define PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED PICO_DEFAULT_LED_PIN
124+
#endif
125+
126+
// Bootloader activity LED in USB reset mode.
127+
#ifndef PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED
128+
#define PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED PICO_DEFAULT_LED_PIN
129+
#endif
130+
131+
// --- CYW43 ---
132+
133+
#ifndef CYW43_WL_GPIO_COUNT
134+
#define CYW43_WL_GPIO_COUNT 3
135+
#endif
136+
137+
#ifndef CYW43_WL_GPIO_LED_PIN
138+
#define CYW43_WL_GPIO_LED_PIN 0
139+
#endif
140+
141+
// If CYW43_WL_GPIO_VBUS_PIN is defined then a CYW43 GPIO has to be used to read VBUS.
142+
// This can be passed to cyw43_arch_gpio_get to determine if the device is battery powered.
143+
// PICO_VBUS_PIN and CYW43_WL_GPIO_VBUS_PIN should not both be defined.
144+
#ifndef CYW43_WL_GPIO_VBUS_PIN
145+
#define CYW43_WL_GPIO_VBUS_PIN 2
146+
#endif
147+
148+
// cyw43 SPI pins can't be changed at runtime
149+
#ifndef CYW43_PIN_WL_DYNAMIC
150+
#define CYW43_PIN_WL_DYNAMIC 0
151+
#endif
152+
153+
// gpio pin to power up the cyw43 chip
154+
#ifndef CYW43_DEFAULT_PIN_WL_REG_ON
155+
#define CYW43_DEFAULT_PIN_WL_REG_ON 24u
156+
#endif
157+
158+
// gpio pin for spi data out to the cyw43 chip
159+
#ifndef CYW43_DEFAULT_PIN_WL_DATA_OUT
160+
#define CYW43_DEFAULT_PIN_WL_DATA_OUT 38u
161+
#endif
162+
163+
// gpio pin for spi data in from the cyw43 chip
164+
#ifndef CYW43_DEFAULT_PIN_WL_DATA_IN
165+
#define CYW43_DEFAULT_PIN_WL_DATA_IN 38u
166+
#endif
167+
168+
// gpio (irq) pin for the irq line from the cyw43 chip
169+
#ifndef CYW43_DEFAULT_PIN_WL_HOST_WAKE
170+
#define CYW43_DEFAULT_PIN_WL_HOST_WAKE 38u
171+
#endif
172+
173+
// gpio pin for the spi clock line to the cyw43 chip
174+
#ifndef CYW43_DEFAULT_PIN_WL_CLOCK
175+
#define CYW43_DEFAULT_PIN_WL_CLOCK 37u
176+
#endif
177+
178+
// gpio pin for the spi chip select to the cyw43 chip
179+
#ifndef CYW43_DEFAULT_PIN_WL_CS
180+
#define CYW43_DEFAULT_PIN_WL_CS 36u
181+
#endif
182+
183+
#endif // _BOARDS_SPARKFUN_IOTREDBOARD_RP2350_H

0 commit comments

Comments
 (0)