57#ifndef __VSF_ESPIDF_DRIVER_SPI_MASTER_H__
58#define __VSF_ESPIDF_DRIVER_SPI_MASTER_H__
74#define SPI_MASTER_FREQ_8M (8 * 1000 * 1000)
75#define SPI_MASTER_FREQ_10M (10 * 1000 * 1000)
76#define SPI_MASTER_FREQ_16M (16 * 1000 * 1000)
77#define SPI_MASTER_FREQ_20M (20 * 1000 * 1000)
78#define SPI_MASTER_FREQ_26M (80 * 1000 * 1000 / 3)
79#define SPI_MASTER_FREQ_40M (40 * 1000 * 1000)
80#define SPI_MASTER_FREQ_80M (80 * 1000 * 1000)
83#define SPI_DEVICE_TXBIT_LSBFIRST (1U << 0)
84#define SPI_DEVICE_RXBIT_LSBFIRST (1U << 1)
85#define SPI_DEVICE_BIT_LSBFIRST (SPI_DEVICE_TXBIT_LSBFIRST | SPI_DEVICE_RXBIT_LSBFIRST)
86#define SPI_DEVICE_3WIRE (1U << 2)
87#define SPI_DEVICE_POSITIVE_CS (1U << 3)
88#define SPI_DEVICE_HALFDUPLEX (1U << 4)
89#define SPI_DEVICE_CLK_AS_CS (1U << 5)
90#define SPI_DEVICE_NO_DUMMY (1U << 6)
91#define SPI_DEVICE_DDRCLK (1U << 7)
92#define SPI_DEVICE_NO_RETURN_RESULT (1U << 8)
95#define SPI_TRANS_MODE_DIO (1U << 0)
96#define SPI_TRANS_MODE_QIO (1U << 1)
97#define SPI_TRANS_USE_RXDATA (1U << 2)
98#define SPI_TRANS_USE_TXDATA (1U << 3)
99#define SPI_TRANS_MODE_DIOQIO_ADDR (1U << 4)
100#define SPI_TRANS_VARIABLE_CMD (1U << 5)
101#define SPI_TRANS_VARIABLE_ADDR (1U << 6)
102#define SPI_TRANS_VARIABLE_DUMMY (1U << 7)
103#define SPI_TRANS_CS_KEEP_ACTIVE (1U << 8)
104#define SPI_TRANS_MULTILINE_CMD (1U << 9)
105#define SPI_TRANS_MODE_OCT (1U << 10)
106#define SPI_TRANS_MULTILINE_ADDR SPI_TRANS_MODE_DIOQIO_ADDR
109#define SPICOMMON_BUSFLAG_SLAVE (1U << 0)
110#define SPICOMMON_BUSFLAG_MASTER (1U << 1)
111#define SPICOMMON_BUSFLAG_IOMUX_PINS (1U << 2)
112#define SPICOMMON_BUSFLAG_GPIO_PINS (1U << 3)
113#define SPICOMMON_BUSFLAG_SCLK (1U << 4)
114#define SPICOMMON_BUSFLAG_MISO (1U << 5)
115#define SPICOMMON_BUSFLAG_MOSI (1U << 6)
116#define SPICOMMON_BUSFLAG_DUAL (1U << 7)
117#define SPICOMMON_BUSFLAG_WPHD (1U << 8)
118#define SPICOMMON_BUSFLAG_QUAD (SPICOMMON_BUSFLAG_DUAL | SPICOMMON_BUSFLAG_WPHD)
119#define SPICOMMON_BUSFLAG_IO4_IO7 (1U << 9)
120#define SPICOMMON_BUSFLAG_OCTAL (SPICOMMON_BUSFLAG_QUAD | SPICOMMON_BUSFLAG_IO4_IO7)
121#define SPICOMMON_BUSFLAG_NATIVE_PINS SPICOMMON_BUSFLAG_IOMUX_PINS
131#define SPI_DMA_CH_AUTO SPI_DMA_CH_AUTO
150#define SPI_CLK_SRC_DEFAULT 0
154#define SPI_SAMPLING_POINT_PHASE_0 0
int esp_err_t
Definition esp_err.h:41
esp_err_t spi_bus_free(spi_host_device_t host_id)
Release an SPI bus.
Definition driver_spi_master_port.c:492
esp_err_t spi_device_transmit(spi_device_handle_t handle, spi_transaction_t *trans_desc)
Blocking, interrupt-backed transaction.
Definition driver_spi_master_port.c:622
int spi_sampling_point_t
Definition spi_master.h:153
esp_err_t spi_bus_add_device(spi_host_device_t host_id, const spi_device_interface_config_t *dev_config, spi_device_handle_t *handle)
Attach a device to an initialised bus.
Definition driver_spi_master_port.c:527
esp_err_t spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t *trans_desc, uint32_t ticks_to_wait)
Queue a transaction for later completion.
Definition driver_spi_master_port.c:634
#define SPI_DMA_CH_AUTO
Definition spi_master.h:131
void(* transaction_cb_t)(struct spi_transaction_t *trans)
Definition spi_master.h:183
esp_err_t spi_device_polling_transmit(spi_device_handle_t handle, spi_transaction_t *trans_desc)
Blocking polling transaction (shim: same as spi_device_transmit).
Definition driver_spi_master_port.c:628
esp_err_t spi_device_get_actual_freq(spi_device_handle_t handle, int *freq_khz)
Return the actual clock frequency used for a device.
Definition driver_spi_master_port.c:752
void spi_device_release_bus(spi_device_handle_t dev)
Release a previously acquired bus.
Definition driver_spi_master_port.c:737
struct spi_device_t * spi_device_handle_t
Definition spi_master.h:179
esp_err_t spi_device_get_trans_result(spi_device_handle_t handle, spi_transaction_t **trans_desc, uint32_t ticks_to_wait)
Retrieve a previously queued transaction.
Definition driver_spi_master_port.c:653
spi_host_device_t
SPI host controller enumeration.
Definition spi_master.h:141
@ SPI3_HOST
Definition spi_master.h:144
@ SPI2_HOST
Definition spi_master.h:143
@ SPI_HOST_MAX
Definition spi_master.h:145
@ SPI1_HOST
Definition spi_master.h:142
esp_err_t spi_bus_remove_device(spi_device_handle_t handle)
Detach a device from its bus.
Definition driver_spi_master_port.c:572
esp_err_t spi_device_polling_start(spi_device_handle_t handle, spi_transaction_t *trans_desc, uint32_t ticks_to_wait)
Start a polling transaction without blocking.
Definition driver_spi_master_port.c:669
esp_err_t spi_bus_initialize(spi_host_device_t host_id, const spi_bus_config_t *bus_config, spi_common_dma_t dma_chan)
Initialise an SPI bus.
Definition driver_spi_master_port.c:448
esp_err_t spi_device_polling_end(spi_device_handle_t handle, uint32_t ticks_to_wait)
Wait for a previously started polling transaction.
Definition driver_spi_master_port.c:701
int spi_clock_source_t
Definition spi_master.h:149
esp_err_t spi_device_acquire_bus(spi_device_handle_t device, uint32_t wait)
Acquire the bus for a series of back-to-back transactions.
Definition driver_spi_master_port.c:722
spi_common_dma_t
Definition spi_master.h:124
@ SPI_DMA_CH1
Definition spi_master.h:126
@ SPI_DMA_CH2
Definition spi_master.h:127
@ SPI_DMA_DISABLED
Definition spi_master.h:125
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned long long uint64_t
Definition stdint.h:11
unsigned char uint8_t
Definition stdint.h:5
Bus-wide configuration.
Definition spi_master.h:163
int data5_io_num
Definition spi_master.h:170
int data1_io_num
Definition spi_master.h:165
int data4_io_num
Definition spi_master.h:169
int sclk_io_num
Definition spi_master.h:166
int intr_flags
Definition spi_master.h:175
int data2_io_num
Definition spi_master.h:167
int max_transfer_sz
Definition spi_master.h:173
int data3_io_num
Definition spi_master.h:168
uint32_t flags
Definition spi_master.h:174
int data6_io_num
Definition spi_master.h:171
int data7_io_num
Definition spi_master.h:172
int data0_io_num
Definition spi_master.h:164
Per-device configuration.
Definition spi_master.h:188
int spics_io_num
Definition spi_master.h:200
int clock_speed_hz
Definition spi_master.h:197
uint8_t address_bits
Definition spi_master.h:190
uint16_t duty_cycle_pos
Definition spi_master.h:194
uint8_t mode
Definition spi_master.h:192
spi_clock_source_t clock_source
Definition spi_master.h:193
int queue_size
Definition spi_master.h:202
uint16_t cs_ena_pretrans
Definition spi_master.h:195
uint8_t dummy_bits
Definition spi_master.h:191
uint8_t command_bits
Definition spi_master.h:189
uint32_t flags
Definition spi_master.h:201
uint8_t cs_ena_posttrans
Definition spi_master.h:196
transaction_cb_t pre_cb
Definition spi_master.h:203
spi_sampling_point_t sample_point
Definition spi_master.h:199
transaction_cb_t post_cb
Definition spi_master.h:204
int input_delay_ns
Definition spi_master.h:198
Definition driver_spi_master_port.c:86
Extended transaction with per-transfer bit widths.
Definition spi_master.h:237
spi_transaction_t base
Definition spi_master.h:238
uint8_t address_bits
Definition spi_master.h:240
uint8_t command_bits
Definition spi_master.h:239
uint8_t dummy_bits
Definition spi_master.h:241
One SPI transaction descriptor.
Definition spi_master.h:214
size_t length
Definition spi_master.h:218
void * user
Definition spi_master.h:220
uint8_t rx_data[4]
Definition spi_master.h:227
uint16_t cmd
Definition spi_master.h:216
size_t rxlength
Definition spi_master.h:219
const void * tx_buffer
Definition spi_master.h:222
uint64_t addr
Definition spi_master.h:217
void * rx_buffer
Definition spi_master.h:226
uint8_t tx_data[4]
Definition spi_master.h:223
uint32_t flags
Definition spi_master.h:215
pid_t wait(int *status)
Definition vsf_linux.c:2759