diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index f953b43eb..e00ae513b 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -620,7 +620,6 @@ const uint16_t kGpioNiceList[] PROGMEM = { #ifdef USE_MCP23XXX_DRV AGPIO(GPIO_MCP23SXX_CS) + MAX_MCP23XXX, #endif // USE_MCP23XXX_DRV -#ifdef ESP32 #ifdef USE_SPI_LORA AGPIO(GPIO_LORA_CS), AGPIO(GPIO_LORA_RST), @@ -632,7 +631,6 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_LORA_DI4), AGPIO(GPIO_LORA_DI5), #endif // USE_SPI_LORA -#endif // ESP32 #endif // USE_SPI #if defined(USE_SDCARD) && defined(ESP32) diff --git a/tasmota/tasmota_support/support_tasmota.ino b/tasmota/tasmota_support/support_tasmota.ino index 12406336e..032bf6f30 100644 --- a/tasmota/tasmota_support/support_tasmota.ino +++ b/tasmota/tasmota_support/support_tasmota.ino @@ -2103,24 +2103,29 @@ void GpioInit(void) #ifdef USE_SPI #ifdef ESP8266 if (!TasmotaGlobal.soft_spi_enabled) { - bool valid_cs = (ValidSpiPinUsed(GPIO_SPI_CS) || - ValidSpiPinUsed(GPIO_RC522_CS) || - (ValidSpiPinUsed(GPIO_NRF24_CS) && ValidSpiPinUsed(GPIO_NRF24_DC)) || - ValidSpiPinUsed(GPIO_ILI9341_CS) || - ValidSpiPinUsed(GPIO_ILI9341_DC) || // there are also boards without cs - ValidSpiPinUsed(GPIO_EPAPER29_CS) || - ValidSpiPinUsed(GPIO_EPAPER42_CS) || - ValidSpiPinUsed(GPIO_ILI9488_CS) || - ValidSpiPinUsed(GPIO_SSD1351_CS) || - ValidSpiPinUsed(GPIO_RA8876_CS) || - ValidSpiPinUsed(GPIO_ST7789_DC) || // ST7789 CS may be omitted so chk DC too - ValidSpiPinUsed(GPIO_ST7789_CS) || - (ValidSpiPinUsed(GPIO_SSD1331_CS) && ValidSpiPinUsed(GPIO_SSD1331_DC)) || - ValidSpiPinUsed(GPIO_SDCARD_CS) || - ValidSpiPinUsed(GPIO_MCP2515_CS) - ); - // If SPI_CS and/or SPI_DC is used they must be valid - TasmotaGlobal.spi_enabled = (valid_cs) ? SPI_MOSI_MISO : SPI_NONE; + uint32_t spi_mosi = (14 == Pin(GPIO_SPI_CLK)) && (13 == Pin(GPIO_SPI_MOSI)) ? SPI_MOSI : SPI_NONE; + uint32_t spi_miso = (14 == Pin(GPIO_SPI_CLK)) && (12 == Pin(GPIO_SPI_MISO)) ? SPI_MISO : SPI_NONE; + TasmotaGlobal.spi_enabled = spi_mosi + spi_miso; + if (!TasmotaGlobal.spi_enabled) { + bool valid_cs = (ValidSpiPinUsed(GPIO_SPI_CS) || + ValidSpiPinUsed(GPIO_RC522_CS) || + (ValidSpiPinUsed(GPIO_NRF24_CS) && ValidSpiPinUsed(GPIO_NRF24_DC)) || + ValidSpiPinUsed(GPIO_ILI9341_CS) || + ValidSpiPinUsed(GPIO_ILI9341_DC) || // there are also boards without cs + ValidSpiPinUsed(GPIO_EPAPER29_CS) || + ValidSpiPinUsed(GPIO_EPAPER42_CS) || + ValidSpiPinUsed(GPIO_ILI9488_CS) || + ValidSpiPinUsed(GPIO_SSD1351_CS) || + ValidSpiPinUsed(GPIO_RA8876_CS) || + ValidSpiPinUsed(GPIO_ST7789_DC) || // ST7789 CS may be omitted so chk DC too + ValidSpiPinUsed(GPIO_ST7789_CS) || + (ValidSpiPinUsed(GPIO_SSD1331_CS) && ValidSpiPinUsed(GPIO_SSD1331_DC)) || + ValidSpiPinUsed(GPIO_SDCARD_CS) || + ValidSpiPinUsed(GPIO_MCP2515_CS) + ); + // If SPI_CS and/or SPI_DC is used they must be valid + TasmotaGlobal.spi_enabled = (valid_cs) ? SPI_MOSI_MISO : SPI_NONE; + } if (TasmotaGlobal.spi_enabled) { TasmotaGlobal.my_module.io[12] = AGPIO(GPIO_SPI_MISO); SetPin(12, AGPIO(GPIO_SPI_MISO));