From 5aa4946e6fd249eb68d1af4acfbae1ce19b1ab86 Mon Sep 17 00:00:00 2001 From: Woutvstk <119763111+Woutvstk@users.noreply.github.com> Date: Sun, 23 Feb 2025 16:56:22 +0100 Subject: [PATCH 1/6] Revert "Reorganize spi definitions for use with sd cards ESP32/NRF52 (#6080)" This reverts commit 443922b947109688e140ad025a7ba2441504d0fc. --- src/FSCommon.cpp | 29 +++++++++++++++++--------- variants/CDEBYTE_EoRa-S3/variant.h | 2 +- variants/bpi_picow_esp32_s3/variant.h | 2 +- variants/dreamcatcher/variant.h | 2 +- variants/mesh-tab/variant.h | 1 - variants/my_esp32s3_diy_eink/variant.h | 2 +- variants/my_esp32s3_diy_oled/variant.h | 2 +- variants/rak4631/variant.h | 11 +++++++--- variants/t-deck/variant.h | 1 - variants/tbeam-s3-core/variant.h | 2 +- variants/tlora_t3s3_epaper/variant.h | 2 +- variants/tlora_t3s3_v1/variant.h | 5 ++++- variants/unphone/variant.h | 1 - 13 files changed, 38 insertions(+), 24 deletions(-) diff --git a/src/FSCommon.cpp b/src/FSCommon.cpp index de76ce29d..3b659b67e 100644 --- a/src/FSCommon.cpp +++ b/src/FSCommon.cpp @@ -16,16 +16,25 @@ #include "SPILock.h" #include #include -#if defined(ARCH_ESP32) -#if defined(SDCARD_USE_HSPI) -SPIClass SDHandler = SPIClass(HSPI); -#elif defined(SDCARD_USE_VSPI) -SPIClass SDHandler = SPIClass(VSPI); -#endif -#elif defined(ARCH_NRF52) +#ifndef SDCARD_USE_HSPI // old ESP32 +#ifdef SDCARD_USE_SPI1 +#ifdef ARCH_ESP32 +SPIClass SPI1(HSPI); +#endif // ARCH_ESP32 +#ifdef ARCH_NRF52 +#define SDCARD_SPI SPI1 +#endif // NRF52 +#define SDHandler SPI1 // only used for esp32 +#else +#ifdef ARCH_NRF52 +#define SDCARD_SPI SPI +#endif // NRF52 #define SDHandler SPI // only used for esp32 -#endif // ESP32/NRF52 -#endif // HAS_SDCARD +#endif // SDCARD_USE_SPI1 +#else +SPIClass SDHandler = SPIClass(HSPI); +#endif +#endif // HAS_SDCARD #if defined(ARCH_STM32WL) @@ -394,4 +403,4 @@ void setupSDCard() #endif #endif #endif -} + diff --git a/variants/CDEBYTE_EoRa-S3/variant.h b/variants/CDEBYTE_EoRa-S3/variant.h index 854996332..5da99667b 100644 --- a/variants/CDEBYTE_EoRa-S3/variant.h +++ b/variants/CDEBYTE_EoRa-S3/variant.h @@ -6,7 +6,7 @@ // SD card - TODO: test, currently untested, copied from T3S3 variant #define HAS_SDCARD -#define SDCARD_USE_HSPI +#define SDCARD_USE_SPI1 // TODO: rename this to make this SD-card specific #define SPI_CS 13 #define SPI_SCK 14 diff --git a/variants/bpi_picow_esp32_s3/variant.h b/variants/bpi_picow_esp32_s3/variant.h index fc9064436..d8d9413d7 100644 --- a/variants/bpi_picow_esp32_s3/variant.h +++ b/variants/bpi_picow_esp32_s3/variant.h @@ -5,7 +5,7 @@ // #define HAS_SCREEN 0 // #define HAS_SDCARD -// #define SDCARD_USE_HSPI +// #define SDCARD_USE_SPI1 #define USE_SSD1306 #define I2C_SDA 12 diff --git a/variants/dreamcatcher/variant.h b/variants/dreamcatcher/variant.h index 1e04a2b26..7835979e1 100644 --- a/variants/dreamcatcher/variant.h +++ b/variants/dreamcatcher/variant.h @@ -70,7 +70,7 @@ #endif #define HAS_SDCARD // Have SPI interface SD card slot -#define SDCARD_USE_HSPI +#define SDCARD_USE_SPI1 #define LORA_RESET 3 #define LORA_SCK 12 diff --git a/variants/mesh-tab/variant.h b/variants/mesh-tab/variant.h index a912aa3af..533c931bc 100644 --- a/variants/mesh-tab/variant.h +++ b/variants/mesh-tab/variant.h @@ -25,7 +25,6 @@ #define GPS_TX_PIN 17 // #define HAS_SDCARD 1 -// #define SDCARD_USE_HSPI #define SPI_MOSI 13 #define SPI_SCK 12 #define SPI_MISO 11 diff --git a/variants/my_esp32s3_diy_eink/variant.h b/variants/my_esp32s3_diy_eink/variant.h index c60e2b0ce..024f912dd 100644 --- a/variants/my_esp32s3_diy_eink/variant.h +++ b/variants/my_esp32s3_diy_eink/variant.h @@ -4,7 +4,7 @@ // #define HAS_SCREEN 0 // #define HAS_SDCARD -// #define SDCARD_USE_HSPI +// #define SDCARD_USE_SPI1 // #define USE_SSD1306 diff --git a/variants/my_esp32s3_diy_oled/variant.h b/variants/my_esp32s3_diy_oled/variant.h index dcaabe64d..8a3a39003 100644 --- a/variants/my_esp32s3_diy_oled/variant.h +++ b/variants/my_esp32s3_diy_oled/variant.h @@ -4,7 +4,7 @@ // #define HAS_SCREEN 0 // #define HAS_SDCARD -// #define SDCARD_USE_HSPI +// #define SDCARD_USE_SPI1 #define USE_SSD1306 diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index 9d1373dad..47c403584 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -121,9 +121,14 @@ static const uint8_t SCK = PIN_SPI_SCK; // SD card SPI pin definitions #define HAS_SDCARD 1 -#define SPI_MOSI PIN_SPI_MOSI -#define SPI_SCK PIN_SPI_SCK -#define SPI_MISO PIN_SPI_MISO +#define SDCARD_USE_SPI1 1 + +#ifdef SDCARD_USE_SPI1 +#define SDCARD_SPI SPI1 +#endif +#define SPI_MOSI PIN_SPI1_MOSI +#define SPI_SCK PIN_SPI1_SCK +#define SPI_MISO PIN_SPI1_MISO #define SDCARD_CS (26) /* diff --git a/variants/t-deck/variant.h b/variants/t-deck/variant.h index 69b2a7a9f..4aeeb7ca8 100644 --- a/variants/t-deck/variant.h +++ b/variants/t-deck/variant.h @@ -37,7 +37,6 @@ // Have SPI interface SD card slot #define HAS_SDCARD 1 -#define SDCARD_USE_HSPI #define SPI_MOSI (41) #define SPI_SCK (40) #define SPI_MISO (38) diff --git a/variants/tbeam-s3-core/variant.h b/variants/tbeam-s3-core/variant.h index fd7649265..cc706459f 100644 --- a/variants/tbeam-s3-core/variant.h +++ b/variants/tbeam-s3-core/variant.h @@ -58,7 +58,7 @@ #define GPS_1PPS_PIN 6 #define HAS_SDCARD // Have SPI interface SD card slot -#define SDCARD_USE_HSPI +#define SDCARD_USE_SPI1 // PCF8563 RTC Module // #define PCF8563_RTC 0x51 //Putting definitions in variant. h does not compile correctly diff --git a/variants/tlora_t3s3_epaper/variant.h b/variants/tlora_t3s3_epaper/variant.h index 1dad897cf..732869b20 100644 --- a/variants/tlora_t3s3_epaper/variant.h +++ b/variants/tlora_t3s3_epaper/variant.h @@ -1,5 +1,5 @@ #define HAS_SDCARD -#define SDCARD_USE_HSPI +#define SDCARD_USE_SPI1 // Display (E-Ink) #define USE_EINK diff --git a/variants/tlora_t3s3_v1/variant.h b/variants/tlora_t3s3_v1/variant.h index 06ee0292a..babe44a58 100644 --- a/variants/tlora_t3s3_v1/variant.h +++ b/variants/tlora_t3s3_v1/variant.h @@ -1,5 +1,5 @@ #define HAS_SDCARD -#define SDCARD_USE_HSPI +#define SDCARD_USE_SPI1 #define USE_SSD1306 @@ -74,3 +74,6 @@ #define LR11X0_DIO3_TCXO_VOLTAGE 3.0 #define LR11X0_DIO_AS_RF_SWITCH #endif + +#define HAS_SDCARD // Have SPI interface SD card slot +#define SDCARD_USE_SPI1 \ No newline at end of file diff --git a/variants/unphone/variant.h b/variants/unphone/variant.h index b5fdf5631..0a94c5987 100644 --- a/variants/unphone/variant.h +++ b/variants/unphone/variant.h @@ -49,7 +49,6 @@ #undef GPS_TX_PIN // #define HAS_SDCARD 1 // causes hang if defined -#define SDCARD_USE_HSPI #define SDCARD_CS 43 #define LED_PIN 13 // the red part of the RGB LED From 4ec013460661f847d73903f83c4a3c61312d56b6 Mon Sep 17 00:00:00 2001 From: Woutvstk <119763111+Woutvstk@users.noreply.github.com> Date: Sun, 23 Feb 2025 16:56:39 +0100 Subject: [PATCH 2/6] Revert "Rak4631 remove spi1 (#6042)" This reverts commit 9b46cb4ef08688a2f424c76d8425561e4f5db844. --- src/detect/einkScan.h | 16 ++++++++-------- variants/rak4631/variant.h | 18 +++++++++++------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/detect/einkScan.h b/src/detect/einkScan.h index 5bc218d00..d20c7b6e5 100644 --- a/src/detect/einkScan.h +++ b/src/detect/einkScan.h @@ -6,28 +6,28 @@ void d_writeCommand(uint8_t c) { - SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); + SPI1.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); if (PIN_EINK_DC >= 0) digitalWrite(PIN_EINK_DC, LOW); if (PIN_EINK_CS >= 0) digitalWrite(PIN_EINK_CS, LOW); - SPI.transfer(c); + SPI1.transfer(c); if (PIN_EINK_CS >= 0) digitalWrite(PIN_EINK_CS, HIGH); if (PIN_EINK_DC >= 0) digitalWrite(PIN_EINK_DC, HIGH); - SPI.endTransaction(); + SPI1.endTransaction(); } void d_writeData(uint8_t d) { - SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); + SPI1.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); if (PIN_EINK_CS >= 0) digitalWrite(PIN_EINK_CS, LOW); - SPI.transfer(d); + SPI1.transfer(d); if (PIN_EINK_CS >= 0) digitalWrite(PIN_EINK_CS, HIGH); - SPI.endTransaction(); + SPI1.endTransaction(); } unsigned long d_waitWhileBusy(uint16_t busy_time) @@ -53,7 +53,7 @@ unsigned long d_waitWhileBusy(uint16_t busy_time) void scanEInkDevice(void) { - SPI.begin(); + SPI1.begin(); d_writeCommand(0x22); d_writeData(0x83); d_writeCommand(0x20); @@ -62,6 +62,6 @@ void scanEInkDevice(void) LOG_DEBUG("EInk display found"); else LOG_DEBUG("EInk display not found"); - SPI.end(); + SPI1.end(); } #endif \ No newline at end of file diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index 47c403584..f5a60fdee 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -107,11 +107,15 @@ static const uint8_t AREF = PIN_AREF; /* * SPI Interfaces */ -#define SPI_INTERFACES_COUNT 1 +#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI_MISO (29) -#define PIN_SPI_MOSI (30) -#define PIN_SPI_SCK (3) +#define PIN_SPI_MISO (45) +#define PIN_SPI_MOSI (44) +#define PIN_SPI_SCK (43) + +#define PIN_SPI1_MISO (29) // (0 + 29) +#define PIN_SPI1_MOSI (30) // (0 + 30) +#define PIN_SPI1_SCK (3) // (0 + 3) static const uint8_t SS = 42; static const uint8_t MOSI = PIN_SPI_MOSI; @@ -139,8 +143,8 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PIN_EINK_BUSY (0 + 4) #define PIN_EINK_DC (0 + 17) #define PIN_EINK_RES (-1) -#define PIN_EINK_SCLK PIN_SPI_SCK -#define PIN_EINK_MOSI PIN_SPI_MOSI // also called SDI +#define PIN_EINK_SCLK (0 + 3) +#define PIN_EINK_MOSI (0 + 30) // also called SDI // #define USE_EINK @@ -268,7 +272,7 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG #define PIN_ETHERNET_RESET 21 #define PIN_ETHERNET_SS PIN_EINK_CS -#define ETH_SPI_PORT SPI +#define ETH_SPI_PORT SPI1 #define AQ_SET_PIN 10 #ifdef __cplusplus From b19d358dccc8284ad4f7294193d584c4c64a3e67 Mon Sep 17 00:00:00 2001 From: Woutvstk <119763111+Woutvstk@users.noreply.github.com> Date: Sun, 23 Feb 2025 17:23:35 +0100 Subject: [PATCH 3/6] redid the reorganisation of the SPI definitions --- src/FSCommon.cpp | 30 +++++++++++--------------- variants/CDEBYTE_EoRa-S3/variant.h | 2 +- variants/bpi_picow_esp32_s3/variant.h | 2 +- variants/dreamcatcher/variant.h | 2 +- variants/my_esp32s3_diy_eink/variant.h | 2 +- variants/tbeam-s3-core/variant.h | 2 +- variants/tlora_t3s3_epaper/variant.h | 2 +- variants/tlora_t3s3_v1/variant.h | 4 ++-- 8 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/FSCommon.cpp b/src/FSCommon.cpp index 3b659b67e..64490405f 100644 --- a/src/FSCommon.cpp +++ b/src/FSCommon.cpp @@ -16,25 +16,20 @@ #include "SPILock.h" #include #include -#ifndef SDCARD_USE_HSPI // old ESP32 -#ifdef SDCARD_USE_SPI1 -#ifdef ARCH_ESP32 -SPIClass SPI1(HSPI); -#endif // ARCH_ESP32 -#ifdef ARCH_NRF52 -#define SDCARD_SPI SPI1 -#endif // NRF52 -#define SDHandler SPI1 // only used for esp32 -#else -#ifdef ARCH_NRF52 -#define SDCARD_SPI SPI -#endif // NRF52 -#define SDHandler SPI // only used for esp32 -#endif // SDCARD_USE_SPI1 -#else +#if defined(ARCH_ESP32) +#if defined(SDCARD_USE_HSPI) SPIClass SDHandler = SPIClass(HSPI); +#elif defined(SDCARD_USE_VSPI) +SPIClass SDHandler = SPIClass(VSPI); #endif -#endif // HAS_SDCARD +#elif defined(ARCH_NRF52) +#if defined(SDCARD_USE_SPI1) +#define SDHandler SPI1 // only used for esp32, SPI selection for NRF52 happens in variant.h (for now) +#elif defined(SDCARD_USE_SPI) +#define SDHandler SPI // only used for esp32 +#endif //NRF52 SPI or SPI1 +#endif // ESP32/NRF52 +#endif // HAS_SDCARD #if defined(ARCH_STM32WL) @@ -404,3 +399,4 @@ void setupSDCard() #endif #endif +} \ No newline at end of file diff --git a/variants/CDEBYTE_EoRa-S3/variant.h b/variants/CDEBYTE_EoRa-S3/variant.h index 5da99667b..854996332 100644 --- a/variants/CDEBYTE_EoRa-S3/variant.h +++ b/variants/CDEBYTE_EoRa-S3/variant.h @@ -6,7 +6,7 @@ // SD card - TODO: test, currently untested, copied from T3S3 variant #define HAS_SDCARD -#define SDCARD_USE_SPI1 +#define SDCARD_USE_HSPI // TODO: rename this to make this SD-card specific #define SPI_CS 13 #define SPI_SCK 14 diff --git a/variants/bpi_picow_esp32_s3/variant.h b/variants/bpi_picow_esp32_s3/variant.h index d8d9413d7..fc9064436 100644 --- a/variants/bpi_picow_esp32_s3/variant.h +++ b/variants/bpi_picow_esp32_s3/variant.h @@ -5,7 +5,7 @@ // #define HAS_SCREEN 0 // #define HAS_SDCARD -// #define SDCARD_USE_SPI1 +// #define SDCARD_USE_HSPI #define USE_SSD1306 #define I2C_SDA 12 diff --git a/variants/dreamcatcher/variant.h b/variants/dreamcatcher/variant.h index 7835979e1..1e04a2b26 100644 --- a/variants/dreamcatcher/variant.h +++ b/variants/dreamcatcher/variant.h @@ -70,7 +70,7 @@ #endif #define HAS_SDCARD // Have SPI interface SD card slot -#define SDCARD_USE_SPI1 +#define SDCARD_USE_HSPI #define LORA_RESET 3 #define LORA_SCK 12 diff --git a/variants/my_esp32s3_diy_eink/variant.h b/variants/my_esp32s3_diy_eink/variant.h index 024f912dd..c60e2b0ce 100644 --- a/variants/my_esp32s3_diy_eink/variant.h +++ b/variants/my_esp32s3_diy_eink/variant.h @@ -4,7 +4,7 @@ // #define HAS_SCREEN 0 // #define HAS_SDCARD -// #define SDCARD_USE_SPI1 +// #define SDCARD_USE_HSPI // #define USE_SSD1306 diff --git a/variants/tbeam-s3-core/variant.h b/variants/tbeam-s3-core/variant.h index cc706459f..fd7649265 100644 --- a/variants/tbeam-s3-core/variant.h +++ b/variants/tbeam-s3-core/variant.h @@ -58,7 +58,7 @@ #define GPS_1PPS_PIN 6 #define HAS_SDCARD // Have SPI interface SD card slot -#define SDCARD_USE_SPI1 +#define SDCARD_USE_HSPI // PCF8563 RTC Module // #define PCF8563_RTC 0x51 //Putting definitions in variant. h does not compile correctly diff --git a/variants/tlora_t3s3_epaper/variant.h b/variants/tlora_t3s3_epaper/variant.h index 732869b20..1dad897cf 100644 --- a/variants/tlora_t3s3_epaper/variant.h +++ b/variants/tlora_t3s3_epaper/variant.h @@ -1,5 +1,5 @@ #define HAS_SDCARD -#define SDCARD_USE_SPI1 +#define SDCARD_USE_HSPI // Display (E-Ink) #define USE_EINK diff --git a/variants/tlora_t3s3_v1/variant.h b/variants/tlora_t3s3_v1/variant.h index babe44a58..63caaaf12 100644 --- a/variants/tlora_t3s3_v1/variant.h +++ b/variants/tlora_t3s3_v1/variant.h @@ -1,5 +1,5 @@ #define HAS_SDCARD -#define SDCARD_USE_SPI1 +#define SDCARD_USE_HSPI #define USE_SSD1306 @@ -76,4 +76,4 @@ #endif #define HAS_SDCARD // Have SPI interface SD card slot -#define SDCARD_USE_SPI1 \ No newline at end of file +#define SDCARD_USE_HSPI \ No newline at end of file From 95fe4aed047e58b60ad0b20e0c838af825a76409 Mon Sep 17 00:00:00 2001 From: Woutvstk <119763111+Woutvstk@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:17:24 +0100 Subject: [PATCH 4/6] trunk fmt --- src/FSCommon.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/FSCommon.cpp b/src/FSCommon.cpp index 64490405f..ef3c4e50b 100644 --- a/src/FSCommon.cpp +++ b/src/FSCommon.cpp @@ -24,10 +24,10 @@ SPIClass SDHandler = SPIClass(VSPI); #endif #elif defined(ARCH_NRF52) #if defined(SDCARD_USE_SPI1) -#define SDHandler SPI1 // only used for esp32, SPI selection for NRF52 happens in variant.h (for now) +#define SDHandler SPI1 // only used for esp32, SPI selection for NRF52 happens in variant.h (for now) #elif defined(SDCARD_USE_SPI) -#define SDHandler SPI // only used for esp32 -#endif //NRF52 SPI or SPI1 +#define SDHandler SPI // only used for esp32 +#endif // NRF52 SPI or SPI1 #endif // ESP32/NRF52 #endif // HAS_SDCARD @@ -398,5 +398,4 @@ void setupSDCard() #endif #endif #endif - } \ No newline at end of file From db376532ad2f3df863c43467c29668862db0dd6b Mon Sep 17 00:00:00 2001 From: Woutvstk <119763111+Woutvstk@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:22:03 +0100 Subject: [PATCH 5/6] Add SPIM3/SPIM2 for SPI/SPI1 selection The SPIM3 is faster (max 32Mhz) than SPIM2 (max 8Mhz) Default is SPI_32MHZ_INTERFACE 0 in SPI library --- variants/rak4631/variant.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index f5a60fdee..d65952636 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -108,11 +108,14 @@ static const uint8_t AREF = PIN_AREF; * SPI Interfaces */ #define SPI_INTERFACES_COUNT 2 +#define SPI_32MHZ_INTERFACE 0 //0: use SPIM3 for SPI and SPIM2 for SPI1; 1: the opposite +//SPI pins for SX1262 #define PIN_SPI_MISO (45) #define PIN_SPI_MOSI (44) #define PIN_SPI_SCK (43) +//SPI1 pins for external(rak4630) spi (incl. SDCard) #define PIN_SPI1_MISO (29) // (0 + 29) #define PIN_SPI1_MOSI (30) // (0 + 30) #define PIN_SPI1_SCK (3) // (0 + 3) From f0ca0b947cd71649d92407a89b9742f463aa7f07 Mon Sep 17 00:00:00 2001 From: Woutvstk <119763111+Woutvstk@users.noreply.github.com> Date: Tue, 25 Feb 2025 16:04:59 +0100 Subject: [PATCH 6/6] trunk fmt --- variants/rak4631/variant.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index d65952636..ac8130943 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -108,14 +108,14 @@ static const uint8_t AREF = PIN_AREF; * SPI Interfaces */ #define SPI_INTERFACES_COUNT 2 -#define SPI_32MHZ_INTERFACE 0 //0: use SPIM3 for SPI and SPIM2 for SPI1; 1: the opposite +#define SPI_32MHZ_INTERFACE 0 // 0: use SPIM3 for SPI and SPIM2 for SPI1; 1: the opposite -//SPI pins for SX1262 +// SPI pins for SX1262 #define PIN_SPI_MISO (45) #define PIN_SPI_MOSI (44) #define PIN_SPI_SCK (43) -//SPI1 pins for external(rak4630) spi (incl. SDCard) +// SPI1 pins for external(rak4630) spi (incl. SDCard) #define PIN_SPI1_MISO (29) // (0 + 29) #define PIN_SPI1_MOSI (30) // (0 + 30) #define PIN_SPI1_SCK (3) // (0 + 3)