From 68a6733dace8af2003f5620f1332c3cb193806d5 Mon Sep 17 00:00:00 2001 From: dario Date: Mon, 15 Apr 2024 22:50:57 +0200 Subject: [PATCH] Updated and working SPI for ESP32 --- include/sta/devices/arduino/bus/spi.hpp | 6 ++++-- src/bus/spi/device.cpp | 2 ++ src/devices/arduino/bus/spi.cpp | 18 +++++++++++------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/include/sta/devices/arduino/bus/spi.hpp b/include/sta/devices/arduino/bus/spi.hpp index 4ae53e4..32c3899 100644 --- a/include/sta/devices/arduino/bus/spi.hpp +++ b/include/sta/devices/arduino/bus/spi.hpp @@ -37,7 +37,7 @@ namespace sta * @param clk * @return ArduinoSPI */ - static ArduinoSPI getHSPI( + static ArduinoSPI* getHSPI( const SPISettings & settings, Mutex * mutex = sta::Mutex::ALWAYS_FREE, uint8_t mosi = STA_ESP32_HSPI_MOSI_DEFAULT, @@ -54,7 +54,7 @@ namespace sta * @param clk * @return ArduinoSPI */ - static ArduinoSPI getFSPI( + static ArduinoSPI* getFSPI( const SPISettings & settings, Mutex * mutex = sta::Mutex::ALWAYS_FREE, uint8_t mosi = STA_ESP32_HSPI_MOSI_DEFAULT, @@ -100,6 +100,8 @@ namespace sta { public: ArduinoSPIDevice(ArduinoSPI * intf, ArduinoGpioPin * csPin); + + ArduinoSPIDevice(ArduinoSPI * intf, uint8_t csPin); }; } // namespace sta diff --git a/src/bus/spi/device.cpp b/src/bus/spi/device.cpp index 60b273a..3c7b432 100644 --- a/src/bus/spi/device.cpp +++ b/src/bus/spi/device.cpp @@ -10,6 +10,8 @@ namespace sta { STA_ASSERT(intf != nullptr); STA_ASSERT(csPin != nullptr); + + csPin_->setState(GpioPinState::GPIO_HIGH); } void SPIDevice::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) diff --git a/src/devices/arduino/bus/spi.cpp b/src/devices/arduino/bus/spi.cpp index 711f7be..955401c 100644 --- a/src/devices/arduino/bus/spi.cpp +++ b/src/devices/arduino/bus/spi.cpp @@ -6,26 +6,24 @@ namespace sta { #ifdef STA_PLATFORM_ARDUINO_DEVICE_ESP32 - ArduinoSPI ArduinoSPI::getHSPI( + ArduinoSPI* ArduinoSPI::getHSPI( const SPISettings & settings, Mutex * mutex /* = sta::Mutex::ALWAYS_FREE */, uint8_t mosi /* = STA_ESP32_HSPI_MOSI_DEFAULT */, uint8_t miso /* = STA_ESP32_HSPI_MISO_DEFAULT */, uint8_t clk /* = STA_ESP32_HSPI_CLK_DEFAULT */) { - ArduinoSPI spi(settings, SPIBus::BUS_HSPI, mosi, miso, clk, mutex); - return spi; + return new ArduinoSPI(settings, SPIBus::BUS_HSPI, mosi, miso, clk, mutex); } - ArduinoSPI ArduinoSPI::getFSPI( + ArduinoSPI* ArduinoSPI::getFSPI( const SPISettings & settings, Mutex * mutex /*= sta::Mutex::ALWAYS_FREE */, uint8_t mosi /* = STA_ESP32_FSPI_MOSI_DEFAULT */, uint8_t miso /* = STA_ESP32_FSPI_MISO_DEFAULT */, uint8_t clk /* = STA_ESP32_FSPI_CLK_DEFAULT */) { - ArduinoSPI spi(settings, SPIBus::BUS_FSPI, mosi, miso, clk, mutex); - return spi; + return new ArduinoSPI(settings, SPIBus::BUS_FSPI, mosi, miso, clk, mutex); } ArduinoSPI::ArduinoSPI(const SPISettings & settings, SPIBus bus, uint8_t mosi, uint8_t miso, uint8_t clk, Mutex * mutex /* = sta::Mutex::ALWAYS_FREE */) @@ -141,6 +139,12 @@ namespace sta ArduinoSPIDevice::ArduinoSPIDevice(ArduinoSPI * intf, ArduinoGpioPin * csPin) : SPIDevice{intf, csPin} { - csPin->setState(GpioPinState::GPIO_HIGH); + + } + + ArduinoSPIDevice::ArduinoSPIDevice(ArduinoSPI * intf, uint8_t csPin) + : SPIDevice{intf, new ArduinoGpioPin(csPin, PinMode::GPIO_OUTPUT)} + { + } } // namespace sta