7#include "driver/spi_master.h"
13#include "roo_backport.h"
14#include "roo_backport/byte.h"
17#include "roo_io/data/byte_order.h"
18#include "soc/spi_reg.h"
25template <u
int8_t spi_port,
typename SpiSettings>
28template <u
int8_t spi_port>
31 template <
typename SpiSettings>
38 "When using a SPI interface different than the default, you must "
39 "provide a SPIClass object also in the constructor.");
44 void init() { spi_.begin(); }
46 void init(uint8_t sck, uint8_t miso, uint8_t mosi) {
47 spi_.begin(sck, miso, mosi);
61 .max_transfer_sz = 4096,
73 .max_transfer_sz = 4096,
81 template <u
int8_t,
typename SpiSettings>
94template <u
int8_t spi_port,
typename SpiSettings>
108 spi_.beginTransaction(SPISettings(
115 spi_.endTransaction();
125 .duty_cycle_pos = 128,
126 .cs_ena_pretrans = 0,
127 .cs_ena_posttrans = 0,
316 const roo::byte*
row = data;
334 data = roo_io::htobe(data);
341 return roo_io::betoh(
result);
351 bool need_sync_ =
false;
362#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || \
363 CONFIG_IDF_TARGET_ESP32P4
366#elif CONFIG_IDF_TARGET_ESP32
386#if CONFIG_IDF_TARGET_ESP32
387using Vspi = ArduinoSpi;
388using Hspi = ArduinoSpi;
390using Fspi = ArduinoSpi;
Esp32SpiDevice(Esp32Spi< spi_port > &spi)
void write(uint8_t data) __attribute__((always_inline))
void write16x2(uint16_t a, uint16_t b) __attribute((always_inline))
uint16_t transfer16(uint16_t data) __attribute__((always_inline))
void async_blit(const roo::byte *data, size_t row_stride_bytes, size_t row_bytes, size_t row_count)
void fill16(const roo::byte *data, uint32_t repetitions)
void beginReadWriteTransaction()
void writeBytes(const roo::byte *data, uint32_t len)
void fill24(const roo::byte *data, uint32_t repetitions)
void flush() __attribute__((always_inline))
roo::byte transfer(roo::byte data) __attribute__((always_inline))
void write16(uint16_t data) __attribute__((always_inline))
void beginWriteOnlyTransaction()
void init(uint8_t sck, uint8_t miso, uint8_t mosi)
void SpiSetWriteOnlyMode(uint8_t spi_port) __attribute__((always_inline))
void SpiFill60(uint8_t spi_port, uint32_t d0, uint32_t d1, uint32_t d2) __attribute__((always_inline))
void SpiFill64(uint8_t spi_port, uint32_t d32) __attribute__((always_inline))
void SpiWriteUpTo64Aligned(uint8_t spi_port, const roo::byte *data, int len) __attribute__((always_inline))
void SpiTxWait(uint8_t spi_port) __attribute__((always_inline))
void SpiSetOutBufferSize(uint8_t spi_port, int len) __attribute__((always_inline))
void SpiTxStart(uint8_t spi_port) __attribute__((always_inline))
void SpiWrite4(uint8_t spi_port, uint32_t d32) __attribute__((always_inline))
uint32_t SpiRead4(uint8_t spi_port) __attribute__((always_inline))
void SpiSetTxBufferSize(uint8_t spi_port, int len) __attribute__((always_inline))
void SpiSetReadWriteMode(uint8_t spi_port) __attribute__((always_inline))
void SpiWrite64Aligned(uint8_t spi_port, const roo::byte *data) __attribute__((always_inline))
void SpiFillUpTo60(uint8_t spi_port, uint32_t d0, uint32_t d1, uint32_t d2, int len) __attribute__((always_inline))
void SpiFillUpTo64(uint8_t spi_port, uint32_t d32, int len) __attribute__((always_inline))
Defines 140 opaque HTML named colors.
#define ROO_DISPLAY_ESP32_SPI_DEFAULT_PORT
static constexpr uint32_t clock
static constexpr SpiBitOrder bit_order
static constexpr SpiDataMode data_mode