diff options
| author | Dryw Wade <dryw.wade@sparkfun.com> | 2025-03-10 17:34:47 -0600 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2025-03-13 15:00:42 +1100 |
| commit | ac30dcb20cbe3cab73133623adc3a0dfff77dd20 (patch) | |
| tree | 4df7e1c272b39ee9222ff8a0aacca1a6a658de48 | |
| parent | 8dcf9290f85c98695866e6656bf9a2653c490828 (diff) | |
rp2/boards/SPARKFUN_XRP_CONTROLLER: Add SparkFun XRP Controller.
Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
6 files changed, 320 insertions, 0 deletions
diff --git a/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/board.json b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/board.json new file mode 100644 index 000000000..92486564b --- /dev/null +++ b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/board.json @@ -0,0 +1,25 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "BLE", + "Dual-core", + "External Flash", + "External RAM", + "IMU", + "JST-SH", + "RGB LED", + "USB-C", + "WiFi" + ], + "images": [ + "26619-XRP-Controller-Board-Feature.jpg" + ], + "mcu": "rp2350", + "product": "XRP Controller", + "thumbnail": "", + "url": "https://www.sparkfun.com/sparkfun-experiential-robotics-platform-xrp-controller.html", + "vendor": "Sparkfun" +} diff --git a/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/manifest.py b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/manifest.py new file mode 100644 index 000000000..4e38f09cd --- /dev/null +++ b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/manifest.py @@ -0,0 +1,6 @@ +include("$(PORT_DIR)/boards/manifest.py") + +require("bundle-networking") + +# Bluetooth +require("aioble") diff --git a/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/mpconfigboard.cmake b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/mpconfigboard.cmake new file mode 100644 index 000000000..2af12f813 --- /dev/null +++ b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/mpconfigboard.cmake @@ -0,0 +1,20 @@ +# cmake file for SparkFun XRP Controller + +# 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_xrp_controller") +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) diff --git a/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/mpconfigboard.h b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/mpconfigboard.h new file mode 100644 index 000000000..13f04b92d --- /dev/null +++ b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/mpconfigboard.h @@ -0,0 +1,52 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "SparkFun XRP Controller" +#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 "XRP" + +// CYW43 driver configuration. +#define CYW43_USE_SPI (1) +#define CYW43_LWIP (1) +#define CYW43_GPIO (1) +#define CYW43_SPI_PIO (1) + +// 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) + +#define MICROPY_HW_USB_VID (0x1B4F) +#define MICROPY_HW_USB_PID (0x0046) + +#define MICROPY_HW_I2C0_SDA (4) +#define MICROPY_HW_I2C0_SCL (5) + +#define MICROPY_HW_I2C1_SDA (38) +#define MICROPY_HW_I2C1_SCL (39) + +#define MICROPY_HW_SPI0_SCK (18) +#define MICROPY_HW_SPI0_MOSI (19) +#define MICROPY_HW_SPI0_MISO (16) + +#define MICROPY_HW_SPI1_SCK (14) +#define MICROPY_HW_SPI1_MOSI (15) +#define MICROPY_HW_SPI1_MISO (12) + +#define MICROPY_HW_UART0_TX (12) +#define MICROPY_HW_UART0_RX (13) +#define MICROPY_HW_UART0_CTS (14) +#define MICROPY_HW_UART0_RTS (15) + +#define MICROPY_HW_UART1_TX (8) +#define MICROPY_HW_UART1_RX (9) +#define MICROPY_HW_UART1_CTS (10) +#define MICROPY_HW_UART1_RTS (11) + +#define MICROPY_HW_PSRAM_CS_PIN (47) +#define MICROPY_HW_ENABLE_PSRAM (1) diff --git a/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/pins.csv b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/pins.csv new file mode 100644 index 000000000..abf77af56 --- /dev/null +++ b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/pins.csv @@ -0,0 +1,84 @@ +# XRP default pin names +MOTOR_L_IN_1,GPIO34 +MOTOR_L_IN_2,GPIO35 +MOTOR_R_IN_1,GPIO32 +MOTOR_R_IN_2,GPIO33 +MOTOR_3_IN_1,GPIO20 +MOTOR_3_IN_2,GPIO21 +MOTOR_4_IN_1,GPIO10 +MOTOR_4_IN_2,GPIO11 +MOTOR_L_ENCODER_A,GPIO30 +MOTOR_L_ENCODER_B,GPIO31 +MOTOR_R_ENCODER_A,GPIO24 +MOTOR_R_ENCODER_B,GPIO25 +MOTOR_3_ENCODER_A,GPIO22 +MOTOR_3_ENCODER_B,GPIO23 +MOTOR_4_ENCODER_A,GPIO2 +MOTOR_4_ENCODER_B,GPIO3 +MOTOR_L_CURRENT,GPIO40 +MOTOR_R_CURRENT,GPIO43 +MOTOR_3_CURRENT,GPIO41 +MOTOR_4_CURRENT,GPIO42 +SERVO_1,GPIO6 +SERVO_2,GPIO9 +SERVO_3,GPIO7 +SERVO_4,GPIO8 +I2C_SDA_0,GPIO4 +I2C_SCL_0,GPIO5 +I2C_SDA_1,GPIO38 +I2C_SCL_1,GPIO39 +DISTANCE_TRIGGER,GPIO0 +DISTANCE_ECHO,GPIO1 +LINE_L,GPIO44 +LINE_R,GPIO45 +BOARD_VIN_MEASURE,GPIO46 +BOARD_USER_BUTTON,GPIO36 +BOARD_NEOPIXEL,GPIO37 +BOARD_LED,EXT_GPIO0 + +# XRP alternate pin names +ML_IN_1,GPIO34 +ML_IN_2,GPIO35 +MR_IN_1,GPIO32 +MR_IN_2,GPIO33 +M3_IN_1,GPIO20 +M3_IN_2,GPIO21 +M4_IN_1,GPIO10 +M4_IN_2,GPIO11 +ML_ENC_A,GPIO30 +ML_ENC_B,GPIO31 +MR_ENC_A,GPIO24 +MR_ENC_B,GPIO25 +M3_ENC_A,GPIO22 +M3_ENC_B,GPIO23 +M4_ENC_A,GPIO2 +M4_ENC_B,GPIO3 +ML_CUR,GPIO40 +MR_CUR,GPIO43 +M3_CUR,GPIO41 +M4_CUR,GPIO42 +S1,GPIO6 +S2,GPIO9 +S3,GPIO7 +S4,GPIO8 +SDA_0,GPIO4 +SCL_0,GPIO5 +SDA_1,GPIO38 +SCL_1,GPIO39 +RANGE_TRIGGER,GPIO0 +RANGE_ECHO,GPIO1 +REFLECTANCE_L,GPIO44 +REFLECTANCE_R,GPIO45 +BRD_VIN,GPIO46 +BRD_USR_BTN,GPIO36 +BRD_RGB_LED,GPIO37 +BRD_LED,EXT_GPIO0 + +# LED default names +LED,EXT_GPIO0 +NEOPIXEL,GPIO37 + +# Radio GPIO pins +WL_GPIO0,EXT_GPIO0 +WL_GPIO1,EXT_GPIO1 +WL_GPIO2,EXT_GPIO2 diff --git a/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/sparkfun_xrp_controller.h b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/sparkfun_xrp_controller.h new file mode 100644 index 000000000..70c2f13c7 --- /dev/null +++ b/ports/rp2/boards/SPARKFUN_XRP_CONTROLLER/sparkfun_xrp_controller.h @@ -0,0 +1,133 @@ +/* + * 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 XRP Controller +// +// This header may be included by other board headers as "boards/sparkfun_xrp_controller.h" + +// pico_cmake_set PICO_PLATFORM=rp2350 +// pico_cmake_set PICO_CYW43_SUPPORTED = 1 + +#ifndef _BOARDS_SPARKFUN_XRP_CONTROLLER_H +#define _BOARDS_SPARKFUN_XRP_CONTROLLER_H + +// For board detection +#define SPARKFUN_XRP_CONTROLLER + +// --- RP2350 VARIANT --- +#define PICO_RP2350A 0 + +// --- UART --- +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 12 +#endif +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 13 +#endif + +// --- LED --- +// no PICO_DEFAULT_LED_PIN - LED is on Wireless chip +#ifndef PICO_DEFAULT_WS2812_PIN +#define PICO_DEFAULT_WS2812_PIN 37 +#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 18 +#endif +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 +#endif +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 16 +#endif +#ifndef PICO_DEFAULT_SPI_CSN_PIN +#define PICO_DEFAULT_SPI_CSN_PIN 17 +#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 + +#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 + +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 +#ifndef PICO_RP2350_A2_SUPPORTED +#define PICO_RP2350_A2_SUPPORTED 1 +#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 26u +#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 29u +#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 29u +#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 29u +#endif + +// gpio pin for the spi clock line to the cyw43 chip +#ifndef CYW43_DEFAULT_PIN_WL_CLOCK +#define CYW43_DEFAULT_PIN_WL_CLOCK 28u +#endif + +// gpio pin for the spi chip select to the cyw43 chip +#ifndef CYW43_DEFAULT_PIN_WL_CS +#define CYW43_DEFAULT_PIN_WL_CS 27u +#endif + +#endif |
