From 50224e1b11463ee019b925dc7c4900f890ce3eff Mon Sep 17 00:00:00 2001 From: Gonzalo Larralde <132825+gonzalolarralde@users.noreply.github.com> Date: Sun, 24 Nov 2024 00:01:49 -0500 Subject: [PATCH 1/5] Add board pimoroni_pico_plus2_w_rp2350. This board is an iteration from pimoroni_pico_plus2_rp2350. I cannot reuse the same header file as this one does not have a direct wire to the LED, similar to pico_w it depends on the WiFi chip for it (compatibility, presumably). --- src/boards/BUILD.bazel | 1 + .../boards/pimoroni_pico_plus2_w_rp2350.h | 137 ++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h diff --git a/src/boards/BUILD.bazel b/src/boards/BUILD.bazel index 94d1b3ed2..c60dd5bff 100644 --- a/src/boards/BUILD.bazel +++ b/src/boards/BUILD.bazel @@ -55,6 +55,7 @@ BOARD_CHOICES = [ "pimoroni_pga2040", "pimoroni_pga2350", "pimoroni_pico_plus2_rp2350", + "pimoroni_pico_plus2_w_rp2350", "pimoroni_picolipo_16mb", "pimoroni_picolipo_4mb", "pimoroni_picosystem", diff --git a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h new file mode 100644 index 000000000..fb6509b52 --- /dev/null +++ b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +// This header may be included by other board headers as "boards/pimoroni_pico_plus2_w_rp2350.h" + +// pico_cmake_set PICO_PLATFORM=rp2350 +// pico_cmake_set PICO_CYW43_SUPPORTED = 1 + +#ifndef _BOARDS_PIMORONI_PICO_PLUS2_W_RP2350_H +#define _BOARDS_PIMORONI_PICO_PLUS2_W_RP2350_H + +// For board detection +#define PIMORONI_PICO_PLUS2_W_RP2350 + +// --- BOARD SPECIFIC --- +#define SPICE_SPI 0 +#define SPICE_TX_MISO_PIN 32 +#define SPICE_RX_CS_PIN 33 +#define SPICE_NETLIGHT_SCK_PIN 34 +#define SPICE_RESET_MOSI_PIN 35 +#define SPICE_PWRKEY_BL_PIN 36 + +#define PIMORONI_PICO_PLUS2_USER_SW_PIN 45 +#define PIMORONI_PICO_PLUS2_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 --- +// no PICO_DEFAULT_LED_PIN - LED is on Wireless chip +// no PICO_DEFAULT_WS2812_PIN + +// --- I2C --- +#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 SPICE_NETLIGHT_SCK_PIN +#endif +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN SPICE_RESET_MOSI_PIN +#endif +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN SPICE_TX_MISO_PIN +#endif +#ifndef PICO_DEFAULT_SPI_CSN_PIN +#define PICO_DEFAULT_SPI_CSN_PIN SPICE_RX_CS_PIN +#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 GPIO Pin used to read VBUS to determine if the device is battery powered. +#ifndef PICO_VBUS_PIN +#define PICO_VBUS_PIN 24 +#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 43 +#endif + +#ifndef PICO_RP2350_A2_SUPPORTED +#define PICO_RP2350_A2_SUPPORTED 1 +#endif + +// --- CYW43 --- + +#ifndef CYW43_PIN_WL_HOST_WAKE +#define CYW43_PIN_WL_HOST_WAKE 24 +#endif + +#ifndef CYW43_PIN_WL_REG_ON +#define CYW43_PIN_WL_REG_ON 23 +#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 + +// 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 + +// If CYW43_USES_VSYS_PIN is defined then CYW43 uses the VSYS GPIO (defined by PICO_VSYS_PIN) for other purposes. +// If this is the case, to use the VSYS GPIO it's necessary to ensure CYW43 is not using it. +// This can be achieved by wrapping the use of the VSYS GPIO in cyw43_thread_enter / cyw43_thread_exit. +#ifndef CYW43_USES_VSYS_PIN +#define CYW43_USES_VSYS_PIN 1 +#endif + +#endif From 74b4c70b7a73aac530d3cd164ee2244b8a29cd9b Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Sun, 24 Nov 2024 19:40:29 -0600 Subject: [PATCH 2/5] Fix feedback --- .../boards/pimoroni_pico_plus2_w_rp2350.h | 51 ++++++++++++------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h index fb6509b52..cab08e9ff 100644 --- a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h +++ b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h @@ -21,12 +21,12 @@ #define PIMORONI_PICO_PLUS2_W_RP2350 // --- BOARD SPECIFIC --- -#define SPICE_SPI 0 -#define SPICE_TX_MISO_PIN 32 -#define SPICE_RX_CS_PIN 33 -#define SPICE_NETLIGHT_SCK_PIN 34 -#define SPICE_RESET_MOSI_PIN 35 -#define SPICE_PWRKEY_BL_PIN 36 +#define SPCE_SPI 0 +#define SPCE_TX_MISO_PIN 32 +#define SPCE_RX_CS_PIN 33 +#define SPCE_NETLIGHT_SCK_PIN 34 +#define SPCE_RESET_MOSI_PIN 35 +#define SPCE_PWRKEY_BL_PIN 36 #define PIMORONI_PICO_PLUS2_USER_SW_PIN 45 #define PIMORONI_PICO_PLUS2_PSRAM_CS_PIN 47 @@ -62,16 +62,16 @@ #define PICO_DEFAULT_SPI 0 #endif #ifndef PICO_DEFAULT_SPI_SCK_PIN -#define PICO_DEFAULT_SPI_SCK_PIN SPICE_NETLIGHT_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN SPCE_NETLIGHT_SCK_PIN #endif #ifndef PICO_DEFAULT_SPI_TX_PIN -#define PICO_DEFAULT_SPI_TX_PIN SPICE_RESET_MOSI_PIN +#define PICO_DEFAULT_SPI_TX_PIN SPCE_RESET_MOSI_PIN #endif #ifndef PICO_DEFAULT_SPI_RX_PIN -#define PICO_DEFAULT_SPI_RX_PIN SPICE_TX_MISO_PIN +#define PICO_DEFAULT_SPI_RX_PIN SPCE_TX_MISO_PIN #endif #ifndef PICO_DEFAULT_SPI_CSN_PIN -#define PICO_DEFAULT_SPI_CSN_PIN SPICE_RX_CS_PIN +#define PICO_DEFAULT_SPI_CSN_PIN SPCE_RX_CS_PIN #endif // --- FLASH --- @@ -87,29 +87,42 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif -// The GPIO Pin used to read VBUS to determine if the device is battery powered. -#ifndef PICO_VBUS_PIN -#define PICO_VBUS_PIN 24 -#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 43 #endif +// pico_cmake_set PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif // --- CYW43 --- -#ifndef CYW43_PIN_WL_HOST_WAKE -#define CYW43_PIN_WL_HOST_WAKE 24 +// gpio pin to power up the cyw43 chip +#ifndef CYW43_DEFAULT_PIN_WL_REG_ON +#define CYW43_DEFAULT_PIN_WL_REG_ON 23 +#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 24 +#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 24 +#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 24 #endif -#ifndef CYW43_PIN_WL_REG_ON -#define CYW43_PIN_WL_REG_ON 23 +// gpio pin for the spi clock line to the cyw43 chip +#ifndef CYW43_DEFAULT_PIN_WL_CLOCK +#define CYW43_DEFAULT_PIN_WL_CLOCK 29 #endif #ifndef CYW43_WL_GPIO_COUNT From 9e7209d1a7ad4cfc3aae7d99d9a47c691f7215ef Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Sun, 24 Nov 2024 19:41:31 -0600 Subject: [PATCH 3/5] PICO_PLUS2 -> PICO_PLUS2_W --- src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h index cab08e9ff..18cdd58e5 100644 --- a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h +++ b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h @@ -28,8 +28,8 @@ #define SPCE_RESET_MOSI_PIN 35 #define SPCE_PWRKEY_BL_PIN 36 -#define PIMORONI_PICO_PLUS2_USER_SW_PIN 45 -#define PIMORONI_PICO_PLUS2_PSRAM_CS_PIN 47 +#define PIMORONI_PICO_PLUS2_W_USER_SW_PIN 45 +#define PIMORONI_PICO_PLUS2_W_PSRAM_CS_PIN 47 // --- UART --- #ifndef PICO_DEFAULT_UART From 4df44bf142659cdff7ab8eb03a8faf3556bf8464 Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Sun, 24 Nov 2024 19:43:02 -0600 Subject: [PATCH 4/5] use pico_cmake_set_default for PICO_RP2350_A2_SUPPORTED --- src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h index 18cdd58e5..eae4507cd 100644 --- a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h +++ b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h @@ -93,7 +93,7 @@ #define PICO_VSYS_PIN 43 #endif -// pico_cmake_set PICO_RP2350_A2_SUPPORTED = 1 +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif From 78aa331d60872b459d856441c424a786a76cb542 Mon Sep 17 00:00:00 2001 From: Gonzalo Larralde <132825+gonzalolarralde@users.noreply.github.com> Date: Sun, 24 Nov 2024 20:55:03 -0500 Subject: [PATCH 5/5] Remove SPCE connector defines and revert default SPI to the same as pico2_w --- .../include/boards/pimoroni_pico_plus2_w_rp2350.h | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h index eae4507cd..54a9b76cd 100644 --- a/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h +++ b/src/boards/include/boards/pimoroni_pico_plus2_w_rp2350.h @@ -21,13 +21,6 @@ #define PIMORONI_PICO_PLUS2_W_RP2350 // --- BOARD SPECIFIC --- -#define SPCE_SPI 0 -#define SPCE_TX_MISO_PIN 32 -#define SPCE_RX_CS_PIN 33 -#define SPCE_NETLIGHT_SCK_PIN 34 -#define SPCE_RESET_MOSI_PIN 35 -#define SPCE_PWRKEY_BL_PIN 36 - #define PIMORONI_PICO_PLUS2_W_USER_SW_PIN 45 #define PIMORONI_PICO_PLUS2_W_PSRAM_CS_PIN 47 @@ -62,16 +55,16 @@ #define PICO_DEFAULT_SPI 0 #endif #ifndef PICO_DEFAULT_SPI_SCK_PIN -#define PICO_DEFAULT_SPI_SCK_PIN SPCE_NETLIGHT_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 18 #endif #ifndef PICO_DEFAULT_SPI_TX_PIN -#define PICO_DEFAULT_SPI_TX_PIN SPCE_RESET_MOSI_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 #endif #ifndef PICO_DEFAULT_SPI_RX_PIN -#define PICO_DEFAULT_SPI_RX_PIN SPCE_TX_MISO_PIN +#define PICO_DEFAULT_SPI_RX_PIN 16 #endif #ifndef PICO_DEFAULT_SPI_CSN_PIN -#define PICO_DEFAULT_SPI_CSN_PIN SPCE_RX_CS_PIN +#define PICO_DEFAULT_SPI_CSN_PIN 17 #endif // --- FLASH ---