24#include <idfxx/intr_alloc>
26#include <driver/spi_master.h>
43#if SOC_SPI_PERIPH_NUM > 2
54#if CONFIG_IDF_TARGET_ESP32
160#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
204 bool _initialized =
true;
226#if SOC_SPI_PERIPH_NUM > 2
231 return "unknown(" + std::to_string(
static_cast<int>(
h)) +
")";
237#include "sdkconfig.h"
238#ifdef CONFIG_IDFXX_STD_FORMAT
244struct formatter<
idfxx::spi::host_device> {
245 constexpr auto parse(format_parse_context& ctx) {
return ctx.begin(); }
247 template<
typename FormatContext>
250 return std::copy(s.begin(), s.end(), ctx.out());
Type-safe set of flags from a scoped enum.
static constexpr gpio nc()
Returns a GPIO representing "not connected".
master_bus(master_bus &&other) noexcept
Move constructor.
master_bus(const master_bus &)=delete
static result< master_bus > make(enum host_device host, enum dma_chan dma_chan, struct bus_config config)
Creates a new SPI master bus.
master_bus(enum host_device host, enum dma_chan dma_chan, struct bus_config config)
Constructs a new SPI master bus.
enum host_device host() const
Returns the host device ID the bus is using.
master_bus & operator=(master_bus &&other) noexcept
Move assignment.
master_bus & operator=(const master_bus &)=delete
std::string to_string(core_id c)
Returns a string representation of a CPU core identifier.
dma_chan
SPI DMA channel selection.
bus_flags
SPI bus capability and configuration flags.
host_device
General purpose SPI Host Controller ID.
@ ch_auto
Auto select DMA channel.
@ slp_allow_pd
Allow to power down the peripheral during light sleep, and auto recover then.
@ slave
Bus supports slave mode.
@ iomux_pins
Bus uses IOMUX pins.
@ octal
Check existing of MOSI/MISO/WP/HD/SPIIO4/SPIIO5/SPIIO6/SPIIO7 pins as output.
@ dual
Check MOSI and MISO pins can output. Or indicates bus able to work under DIO mode.
@ quad
Check existing of MOSI/MISO/WP/HD pins as output.
@ io4_io7
Check existing of IO4~IO7 pins. Or indicates IO4~IO7 pins initialized.
@ wphd
Check existing of WP and HD pins. Or indicates WP & HD pins initialized.
@ native_pins
Bus uses native pins.
@ mosi
Check existing of MOSI pin. Or indicates MOSI line initialized.
@ miso
Check existing of MISO pin. Or indicates MISO line initialized.
@ master
Bus supports master mode.
@ sclk
Check existing of SCLK pin. Or indicates CLK line initialized.
std::expected< T, std::error_code > result
result type wrapping a value or error code.
idfxx::flags< idfxx::intr_flag > intr_flags
Behavioral interrupt flags.
int max_transfer_sz
Maximum transfer size, in bytes.
idfxx::gpio data4_io_num
GPIO pin for spi data4 signal in octal mode, or gpio::nc() if not used.
idfxx::gpio data6_io_num
GPIO pin for spi data6 signal in octal mode, or gpio::nc() if not used.
idfxx::gpio data2_io_num
GPIO pin for spi data2 signal in quad/octal mode, or gpio::nc() if not used.
idfxx::gpio mosi_io_num
GPIO pin for Master Out Slave In (=spi_d) signal.
idfxx::gpio data1_io_num
GPIO pin for spi data1 signal in quad/octal mode.
idfxx::gpio quadhd_io_num
GPIO pin for HD (Hold) signal, or gpio::nc() if not used.
idfxx::gpio data0_io_num
GPIO pin for spi data0 signal in quad/octal mode.
idfxx::gpio data5_io_num
GPIO pin for spi data5 signal in octal mode, or gpio::nc() if not used.
idfxx::gpio quadwp_io_num
GPIO pin for WP (Write Protect) signal, or gpio::nc() if not used.
idfxx::gpio data3_io_num
GPIO pin for spi data3 signal in quad/octal mode, or gpio::nc() if not used.
idfxx::gpio miso_io_num
GPIO pin for Master In Slave Out (=spi_q) signal.
idfxx::gpio sclk_io_num
GPIO pin for SPI Clock signal.
std::optional< idfxx::core_id > isr_cpu_id
Select cpu core to register SPI ISR.
idfxx::gpio data7_io_num
GPIO pin for spi data7 signal in octal mode, or gpio::nc() if not used.
bool data_io_default_level
Output data IO default level when no transaction.