From f1df4b87b64bf79ddea022f67a6ed587eba40744 Mon Sep 17 00:00:00 2001 From: UltimumControl <70729135+UltimumControl@users.noreply.github.com> Date: Thu, 24 Apr 2025 19:27:46 -0400 Subject: [PATCH 1/6] Add files via upload --- cores/esp32/esp32-hal-spi.c | 11 ++++++++++- cores/esp32/esp32-hal-spi.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cores/esp32/esp32-hal-spi.c b/cores/esp32/esp32-hal-spi.c index 80928309670..a627a6bb62b 100644 --- a/cores/esp32/esp32-hal-spi.c +++ b/cores/esp32/esp32-hal-spi.c @@ -74,6 +74,7 @@ struct spi_struct_t { int8_t miso; int8_t mosi; int8_t ss; + bool invert_out; }; #if CONFIG_IDF_TARGET_ESP32S2 @@ -356,6 +357,8 @@ bool spiDetachMOSI(spi_t *spi) { return true; } + + bool spiAttachSS(spi_t *spi, uint8_t ss_num, int8_t ss) { if (!spi || ss < 0 || ss_num > 2) { return false; @@ -365,7 +368,7 @@ bool spiAttachSS(spi_t *spi, uint8_t ss_num, int8_t ss) { return false; } pinMode(ss, OUTPUT); - pinMatrixOutAttach(ss, SPI_SS_IDX(spi->num, ss_num), false, false); + pinMatrixOutAttach(ss, SPI_SS_IDX(spi->num, ss_num), spi->invert_out, false); spiEnableSSPins(spi, (1 << ss_num)); spi->ss = ss; if (!perimanSetPinBus(ss, ESP32_BUS_TYPE_SPI_MASTER_SS, (void *)(spi->num + 1), spi->num, -1)) { @@ -435,6 +438,12 @@ void spiSSDisable(spi_t *spi) { SPI_MUTEX_UNLOCK(); } +void spiSSInvertout(spi_t *spi, bool invert) { + if (spi) { + spi->invert_out = invert; + } +} + void spiSSSet(spi_t *spi) { if (!spi) { return; diff --git a/cores/esp32/esp32-hal-spi.h b/cores/esp32/esp32-hal-spi.h index b77abff7854..3430957da2c 100644 --- a/cores/esp32/esp32-hal-spi.h +++ b/cores/esp32/esp32-hal-spi.h @@ -97,6 +97,8 @@ void spiSSSet(spi_t *spi); void spiSSClear(spi_t *spi); void spiWaitReady(spi_t *spi); +//invert hardware SS +void spiSSInvertout(spi_t *spi, bool invert); uint32_t spiGetClockDiv(spi_t *spi); uint8_t spiGetDataMode(spi_t *spi); From c60681c32ffae7afc28c61b750918e6c015c7ed4 Mon Sep 17 00:00:00 2001 From: UltimumControl <70729135+UltimumControl@users.noreply.github.com> Date: Thu, 24 Apr 2025 19:30:10 -0400 Subject: [PATCH 2/6] Add files via upload --- libraries/SPI/src/SPI.cpp | 6 ++++++ libraries/SPI/src/SPI.h | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/SPI/src/SPI.cpp b/libraries/SPI/src/SPI.cpp index 35e52f43e4d..d8c452569b0 100644 --- a/libraries/SPI/src/SPI.cpp +++ b/libraries/SPI/src/SPI.cpp @@ -144,6 +144,12 @@ void SPIClass::setHwCs(bool use) { _use_hw_ss = use; } +void SPIClass::setSSInvert(bool invert) { + if (_spi) { + spiSSInvertout(_spi, invert); + } +} + void SPIClass::setFrequency(uint32_t freq) { SPI_PARAM_LOCK(); //check if last freq changed diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index adb3d1bc11f..00a9c4aeb56 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -63,8 +63,9 @@ class SPIClass { ~SPIClass(); void begin(int8_t sck = -1, int8_t miso = -1, int8_t mosi = -1, int8_t ss = -1); void end(); - + void setHwCs(bool use); + void setSSInvert(bool invert); void setBitOrder(uint8_t bitOrder); void setDataMode(uint8_t dataMode); void setFrequency(uint32_t freq); From 6911abfd3bffda1f6f81fd94061ed7e4688ae0ee Mon Sep 17 00:00:00 2001 From: UltimumControl <70729135+UltimumControl@users.noreply.github.com> Date: Thu, 24 Apr 2025 19:42:19 -0400 Subject: [PATCH 3/6] Update SPI.h --- libraries/SPI/src/SPI.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index 00a9c4aeb56..9f3b2c9a0b5 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -65,7 +65,7 @@ class SPIClass { void end(); void setHwCs(bool use); - void setSSInvert(bool invert); + void setSSInvert(bool invert); //use before setHwCS for change to be used by setHwCs void setBitOrder(uint8_t bitOrder); void setDataMode(uint8_t dataMode); void setFrequency(uint32_t freq); From 9d859c8c1858d8ab482ed814adc7ee3a9cc7200a Mon Sep 17 00:00:00 2001 From: UltimumControl <70729135+UltimumControl@users.noreply.github.com> Date: Fri, 25 Apr 2025 19:19:03 -0400 Subject: [PATCH 4/6] Update esp32-hal-spi.c renamed invert_out to ss_invert to be more intuitive --- cores/esp32/esp32-hal-spi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cores/esp32/esp32-hal-spi.c b/cores/esp32/esp32-hal-spi.c index a627a6bb62b..0d44ed9244f 100644 --- a/cores/esp32/esp32-hal-spi.c +++ b/cores/esp32/esp32-hal-spi.c @@ -74,7 +74,7 @@ struct spi_struct_t { int8_t miso; int8_t mosi; int8_t ss; - bool invert_out; + bool ss_invert; }; #if CONFIG_IDF_TARGET_ESP32S2 @@ -368,7 +368,7 @@ bool spiAttachSS(spi_t *spi, uint8_t ss_num, int8_t ss) { return false; } pinMode(ss, OUTPUT); - pinMatrixOutAttach(ss, SPI_SS_IDX(spi->num, ss_num), spi->invert_out, false); + pinMatrixOutAttach(ss, SPI_SS_IDX(spi->num, ss_num), spi->ss_invert, false); spiEnableSSPins(spi, (1 << ss_num)); spi->ss = ss; if (!perimanSetPinBus(ss, ESP32_BUS_TYPE_SPI_MASTER_SS, (void *)(spi->num + 1), spi->num, -1)) { @@ -440,7 +440,7 @@ void spiSSDisable(spi_t *spi) { void spiSSInvertout(spi_t *spi, bool invert) { if (spi) { - spi->invert_out = invert; + spi->ss_invert = invert; } } From 9f506aae86648974b92b38d11c185170247bc39b Mon Sep 17 00:00:00 2001 From: UltimumControl <70729135+UltimumControl@users.noreply.github.com> Date: Fri, 25 Apr 2025 19:22:35 -0400 Subject: [PATCH 5/6] Update esp32-hal-spi.h Removed the out from the function name spiSSInvertout. --- cores/esp32/esp32-hal-spi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp32/esp32-hal-spi.h b/cores/esp32/esp32-hal-spi.h index 3430957da2c..7d56f0820d3 100644 --- a/cores/esp32/esp32-hal-spi.h +++ b/cores/esp32/esp32-hal-spi.h @@ -98,7 +98,7 @@ void spiSSClear(spi_t *spi); void spiWaitReady(spi_t *spi); //invert hardware SS -void spiSSInvertout(spi_t *spi, bool invert); +void spiSSInvert(spi_t *spi, bool invert); uint32_t spiGetClockDiv(spi_t *spi); uint8_t spiGetDataMode(spi_t *spi); From a9bb48973a3acfcb3c5d8c8421e4b44606f88bb2 Mon Sep 17 00:00:00 2001 From: UltimumControl <70729135+UltimumControl@users.noreply.github.com> Date: Fri, 25 Apr 2025 19:24:02 -0400 Subject: [PATCH 6/6] Update SPI.cpp Removed the out from the function name spiSSInvertout. --- libraries/SPI/src/SPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPI/src/SPI.cpp b/libraries/SPI/src/SPI.cpp index d8c452569b0..ae207a7ff3c 100644 --- a/libraries/SPI/src/SPI.cpp +++ b/libraries/SPI/src/SPI.cpp @@ -146,7 +146,7 @@ void SPIClass::setHwCs(bool use) { void SPIClass::setSSInvert(bool invert) { if (_spi) { - spiSSInvertout(_spi, invert); + spiSSInvert(_spi, invert); } }