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 <dryw.wade@sparkfun.com>
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy