Skip to content

Commit ac30dcb

Browse files
sfe-SparkFrodpgeorge
authored andcommitted
rp2/boards/SPARKFUN_XRP_CONTROLLER: Add SparkFun XRP Controller.
Signed-off-by: Dryw Wade <[email protected]>
1 parent 8dcf929 commit ac30dcb

File tree

6 files changed

+320
-0
lines changed

6 files changed

+320
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"deploy": [
3+
"../deploy.md"
4+
],
5+
"docs": "",
6+
"features": [
7+
"BLE",
8+
"Dual-core",
9+
"External Flash",
10+
"External RAM",
11+
"IMU",
12+
"JST-SH",
13+
"RGB LED",
14+
"USB-C",
15+
"WiFi"
16+
],
17+
"images": [
18+
"26619-XRP-Controller-Board-Feature.jpg"
19+
],
20+
"mcu": "rp2350",
21+
"product": "XRP Controller",
22+
"thumbnail": "",
23+
"url": "https://www.sparkfun.com/sparkfun-experiential-robotics-platform-xrp-controller.html",
24+
"vendor": "Sparkfun"
25+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
include("$(PORT_DIR)/boards/manifest.py")
2+
3+
require("bundle-networking")
4+
5+
# Bluetooth
6+
require("aioble")
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# cmake file for SparkFun XRP Controller
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_xrp_controller")
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: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Board and hardware specific configuration
2+
#define MICROPY_HW_BOARD_NAME "SparkFun XRP Controller"
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 "XRP"
8+
9+
// CYW43 driver configuration.
10+
#define CYW43_USE_SPI (1)
11+
#define CYW43_LWIP (1)
12+
#define CYW43_GPIO (1)
13+
#define CYW43_SPI_PIO (1)
14+
15+
// For debugging mbedtls - also set
16+
// Debug level (0-4) 1=warning, 2=info, 3=debug, 4=verbose
17+
// #define MODUSSL_MBEDTLS_DEBUG_LEVEL 1
18+
19+
#define MICROPY_HW_PIN_EXT_COUNT CYW43_WL_GPIO_COUNT
20+
21+
int mp_hal_is_pin_reserved(int n);
22+
#define MICROPY_HW_PIN_RESERVED(i) mp_hal_is_pin_reserved(i)
23+
24+
#define MICROPY_HW_USB_VID (0x1B4F)
25+
#define MICROPY_HW_USB_PID (0x0046)
26+
27+
#define MICROPY_HW_I2C0_SDA (4)
28+
#define MICROPY_HW_I2C0_SCL (5)
29+
30+
#define MICROPY_HW_I2C1_SDA (38)
31+
#define MICROPY_HW_I2C1_SCL (39)
32+
33+
#define MICROPY_HW_SPI0_SCK (18)
34+
#define MICROPY_HW_SPI0_MOSI (19)
35+
#define MICROPY_HW_SPI0_MISO (16)
36+
37+
#define MICROPY_HW_SPI1_SCK (14)
38+
#define MICROPY_HW_SPI1_MOSI (15)
39+
#define MICROPY_HW_SPI1_MISO (12)
40+
41+
#define MICROPY_HW_UART0_TX (12)
42+
#define MICROPY_HW_UART0_RX (13)
43+
#define MICROPY_HW_UART0_CTS (14)
44+
#define MICROPY_HW_UART0_RTS (15)
45+
46+
#define MICROPY_HW_UART1_TX (8)
47+
#define MICROPY_HW_UART1_RX (9)
48+
#define MICROPY_HW_UART1_CTS (10)
49+
#define MICROPY_HW_UART1_RTS (11)
50+
51+
#define MICROPY_HW_PSRAM_CS_PIN (47)
52+
#define MICROPY_HW_ENABLE_PSRAM (1)
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# XRP default pin names
2+
MOTOR_L_IN_1,GPIO34
3+
MOTOR_L_IN_2,GPIO35
4+
MOTOR_R_IN_1,GPIO32
5+
MOTOR_R_IN_2,GPIO33
6+
MOTOR_3_IN_1,GPIO20
7+
MOTOR_3_IN_2,GPIO21
8+
MOTOR_4_IN_1,GPIO10
9+
MOTOR_4_IN_2,GPIO11
10+
MOTOR_L_ENCODER_A,GPIO30
11+
MOTOR_L_ENCODER_B,GPIO31
12+
MOTOR_R_ENCODER_A,GPIO24
13+
MOTOR_R_ENCODER_B,GPIO25
14+
MOTOR_3_ENCODER_A,GPIO22
15+
MOTOR_3_ENCODER_B,GPIO23
16+
MOTOR_4_ENCODER_A,GPIO2
17+
MOTOR_4_ENCODER_B,GPIO3
18+
MOTOR_L_CURRENT,GPIO40
19+
MOTOR_R_CURRENT,GPIO43
20+
MOTOR_3_CURRENT,GPIO41
21+
MOTOR_4_CURRENT,GPIO42
22+
SERVO_1,GPIO6
23+
SERVO_2,GPIO9
24+
SERVO_3,GPIO7
25+
SERVO_4,GPIO8
26+
I2C_SDA_0,GPIO4
27+
I2C_SCL_0,GPIO5
28+
I2C_SDA_1,GPIO38
29+
I2C_SCL_1,GPIO39
30+
DISTANCE_TRIGGER,GPIO0
31+
DISTANCE_ECHO,GPIO1
32+
LINE_L,GPIO44
33+
LINE_R,GPIO45
34+
BOARD_VIN_MEASURE,GPIO46
35+
BOARD_USER_BUTTON,GPIO36
36+
BOARD_NEOPIXEL,GPIO37
37+
BOARD_LED,EXT_GPIO0
38+
39+
# XRP alternate pin names
40+
ML_IN_1,GPIO34
41+
ML_IN_2,GPIO35
42+
MR_IN_1,GPIO32
43+
MR_IN_2,GPIO33
44+
M3_IN_1,GPIO20
45+
M3_IN_2,GPIO21
46+
M4_IN_1,GPIO10
47+
M4_IN_2,GPIO11
48+
ML_ENC_A,GPIO30
49+
ML_ENC_B,GPIO31
50+
MR_ENC_A,GPIO24
51+
MR_ENC_B,GPIO25
52+
M3_ENC_A,GPIO22
53+
M3_ENC_B,GPIO23
54+
M4_ENC_A,GPIO2
55+
M4_ENC_B,GPIO3
56+
ML_CUR,GPIO40
57+
MR_CUR,GPIO43
58+
M3_CUR,GPIO41
59+
M4_CUR,GPIO42
60+
S1,GPIO6
61+
S2,GPIO9
62+
S3,GPIO7
63+
S4,GPIO8
64+
SDA_0,GPIO4
65+
SCL_0,GPIO5
66+
SDA_1,GPIO38
67+
SCL_1,GPIO39
68+
RANGE_TRIGGER,GPIO0
69+
RANGE_ECHO,GPIO1
70+
REFLECTANCE_L,GPIO44
71+
REFLECTANCE_R,GPIO45
72+
BRD_VIN,GPIO46
73+
BRD_USR_BTN,GPIO36
74+
BRD_RGB_LED,GPIO37
75+
BRD_LED,EXT_GPIO0
76+
77+
# LED default names
78+
LED,EXT_GPIO0
79+
NEOPIXEL,GPIO37
80+
81+
# Radio GPIO pins
82+
WL_GPIO0,EXT_GPIO0
83+
WL_GPIO1,EXT_GPIO1
84+
WL_GPIO2,EXT_GPIO2
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
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 XRP Controller
12+
//
13+
// This header may be included by other board headers as "boards/sparkfun_xrp_controller.h"
14+
15+
// pico_cmake_set PICO_PLATFORM=rp2350
16+
// pico_cmake_set PICO_CYW43_SUPPORTED = 1
17+
18+
#ifndef _BOARDS_SPARKFUN_XRP_CONTROLLER_H
19+
#define _BOARDS_SPARKFUN_XRP_CONTROLLER_H
20+
21+
// For board detection
22+
#define SPARKFUN_XRP_CONTROLLER
23+
24+
// --- RP2350 VARIANT ---
25+
#define PICO_RP2350A 0
26+
27+
// --- UART ---
28+
#ifndef PICO_DEFAULT_UART
29+
#define PICO_DEFAULT_UART 0
30+
#endif
31+
#ifndef PICO_DEFAULT_UART_TX_PIN
32+
#define PICO_DEFAULT_UART_TX_PIN 12
33+
#endif
34+
#ifndef PICO_DEFAULT_UART_RX_PIN
35+
#define PICO_DEFAULT_UART_RX_PIN 13
36+
#endif
37+
38+
// --- LED ---
39+
// no PICO_DEFAULT_LED_PIN - LED is on Wireless chip
40+
#ifndef PICO_DEFAULT_WS2812_PIN
41+
#define PICO_DEFAULT_WS2812_PIN 37
42+
#endif
43+
44+
// --- I2C --- Qwiic connector is on these pins
45+
#ifndef PICO_DEFAULT_I2C
46+
#define PICO_DEFAULT_I2C 0
47+
#endif
48+
#ifndef PICO_DEFAULT_I2C_SDA_PIN
49+
#define PICO_DEFAULT_I2C_SDA_PIN 4
50+
#endif
51+
#ifndef PICO_DEFAULT_I2C_SCL_PIN
52+
#define PICO_DEFAULT_I2C_SCL_PIN 5
53+
#endif
54+
55+
// --- SPI ---
56+
#ifndef PICO_DEFAULT_SPI
57+
#define PICO_DEFAULT_SPI 0
58+
#endif
59+
#ifndef PICO_DEFAULT_SPI_SCK_PIN
60+
#define PICO_DEFAULT_SPI_SCK_PIN 18
61+
#endif
62+
#ifndef PICO_DEFAULT_SPI_TX_PIN
63+
#define PICO_DEFAULT_SPI_TX_PIN 19
64+
#endif
65+
#ifndef PICO_DEFAULT_SPI_RX_PIN
66+
#define PICO_DEFAULT_SPI_RX_PIN 16
67+
#endif
68+
#ifndef PICO_DEFAULT_SPI_CSN_PIN
69+
#define PICO_DEFAULT_SPI_CSN_PIN 17
70+
#endif
71+
72+
// --- FLASH ---
73+
74+
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
75+
76+
#ifndef PICO_FLASH_SPI_CLKDIV
77+
#define PICO_FLASH_SPI_CLKDIV 2
78+
#endif
79+
80+
// pico_cmake_set_default PICO_FLASH_SIZE_BYTES = (16 * 1024 * 1024)
81+
#ifndef PICO_FLASH_SIZE_BYTES
82+
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
83+
#endif
84+
85+
#ifndef CYW43_WL_GPIO_COUNT
86+
#define CYW43_WL_GPIO_COUNT 3
87+
#endif
88+
89+
#ifndef CYW43_WL_GPIO_LED_PIN
90+
#define CYW43_WL_GPIO_LED_PIN 0
91+
#endif
92+
93+
// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1
94+
#ifndef PICO_RP2350_A2_SUPPORTED
95+
#define PICO_RP2350_A2_SUPPORTED 1
96+
#endif
97+
98+
// cyw43 SPI pins can't be changed at runtime
99+
#ifndef CYW43_PIN_WL_DYNAMIC
100+
#define CYW43_PIN_WL_DYNAMIC 0
101+
#endif
102+
103+
// gpio pin to power up the cyw43 chip
104+
#ifndef CYW43_DEFAULT_PIN_WL_REG_ON
105+
#define CYW43_DEFAULT_PIN_WL_REG_ON 26u
106+
#endif
107+
108+
// gpio pin for spi data out to the cyw43 chip
109+
#ifndef CYW43_DEFAULT_PIN_WL_DATA_OUT
110+
#define CYW43_DEFAULT_PIN_WL_DATA_OUT 29u
111+
#endif
112+
113+
// gpio pin for spi data in from the cyw43 chip
114+
#ifndef CYW43_DEFAULT_PIN_WL_DATA_IN
115+
#define CYW43_DEFAULT_PIN_WL_DATA_IN 29u
116+
#endif
117+
118+
// gpio (irq) pin for the irq line from the cyw43 chip
119+
#ifndef CYW43_DEFAULT_PIN_WL_HOST_WAKE
120+
#define CYW43_DEFAULT_PIN_WL_HOST_WAKE 29u
121+
#endif
122+
123+
// gpio pin for the spi clock line to the cyw43 chip
124+
#ifndef CYW43_DEFAULT_PIN_WL_CLOCK
125+
#define CYW43_DEFAULT_PIN_WL_CLOCK 28u
126+
#endif
127+
128+
// gpio pin for the spi chip select to the cyw43 chip
129+
#ifndef CYW43_DEFAULT_PIN_WL_CS
130+
#define CYW43_DEFAULT_PIN_WL_CS 27u
131+
#endif
132+
133+
#endif

0 commit comments

Comments
 (0)