Updated and working SPI for ESP32

This commit is contained in:
dario 2024-04-15 22:50:57 +02:00
parent f29cd6eff2
commit 68a6733dac
3 changed files with 17 additions and 9 deletions

View File

@ -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

View File

@ -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)

View File

@ -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