26#include "driver/spi_master.h"
117#define HF_SPI_IS_VALID_HOST(host) \
118 ((host) < static_cast<uint8_t>(spi_host_device_t::HF_SPI_HOST_MAX))
119#define HF_SPI_IS_VALID_CLOCK_SPEED(speed) \
120 ((speed) >= HF_SPI_MIN_CLOCK_SPEED && (speed) <= HF_SPI_MAX_CLOCK_SPEED)
121#define HF_SPI_IS_VALID_MODE(mode) ((mode) >= 0 && (mode) <= 3)
122#define HF_SPI_IS_VALID_TRANSFER_SIZE(size) ((size) > 0 && (size) <= HF_SPI_MAX_TRANSFER_SIZE)
244#define HF_SPI_DEVICE_HALFDUPLEX (1 << 0)
245#define HF_SPI_DEVICE_POSITIVE_CS (1 << 1)
246#define HF_SPI_DEVICE_CLK_AS_CS (1 << 2)
247#define HF_SPI_DEVICE_NO_DUMMY (1 << 3)
248#define HF_SPI_DEVICE_DDRCLK (1 << 4)
Abstract base class for SPI device implementations in the HardFOC system.
ESP32 base type definitions for hardware abstraction.
static constexpr uint8_t HF_SPI_MAX_HOSTS
Maximum SPI hosts.
Definition EspTypes_SPI.h:115
spi_sampling_point_t hf_spi_sampling_point_t
Definition EspTypes_SPI.h:46
static constexpr uint32_t HF_SPI_MAX_TRANSFER_SIZE
Maximum transfer size (bytes)
Definition EspTypes_SPI.h:114
static constexpr uint32_t HF_SPI_MAX_CLOCK_SPEED
Maximum SPI clock speed (Hz)
Definition EspTypes_SPI.h:113
hf_spi_transfer_mode_t
SPI transfer modes for ESP32.
Definition EspTypes_SPI.h:89
@ HF_SPI_TRANSFER_MODE_OCTAL
Octal SPI (8-bit data lines) - ESP32 specific.
@ HF_SPI_TRANSFER_MODE_QUAD
Quad SPI (4-bit data lines)
@ HF_SPI_TRANSFER_MODE_DUAL
Dual SPI (2-bit data lines)
@ HF_SPI_TRANSFER_MODE_SINGLE
Standard SPI (1-bit MOSI/MISO)
static constexpr uint32_t HF_SPI_MIN_CLOCK_SPEED
Minimum SPI clock speed (Hz)
Definition EspTypes_SPI.h:112
hf_spi_event_type_t
SPI event types for callback notifications.
Definition EspTypes_SPI.h:100
@ HF_SPI_EVENT_BUS_SUSPENDED
Bus suspended for power saving.
@ HF_SPI_EVENT_TRANSACTION_COMPLETE
Transaction completed.
@ HF_SPI_EVENT_BUS_RESUMED
Bus resumed from suspension.
@ HF_SPI_EVENT_DMA_ERROR
DMA error occurred.
@ HF_SPI_EVENT_TRANSACTION_ERROR
Transaction error occurred.
spi_transaction_t hf_spi_transaction_t
Definition EspTypes_SPI.h:44
spi_device_handle_t hf_spi_device_handle_t
Definition EspTypes_SPI.h:42
hf_spi_mode_t
ESP32 SPI mode configuration.
Definition EspTypes_SPI.h:55
@ HF_SPI_MODE_3
CPOL=1, CPHA=1.
@ HF_SPI_MODE_0
CPOL=0, CPHA=0.
@ HF_SPI_MODE_2
CPOL=1, CPHA=0.
@ HF_SPI_MODE_1
CPOL=0, CPHA=1.
spi_device_interface_config_t hf_spi_device_interface_config_t
Definition EspTypes_SPI.h:43
spi_clock_source_t hf_spi_clock_source_t
Definition EspTypes_SPI.h:45
Platform-agnostic hardware type definitions for the HardFOC system.
uint32_t hf_u32_t
Platform-agnostic 32-bit unsigned integer type.
Definition HardwareTypes.h:52
hf_time_t hf_timeout_ms_t
Timeout value in milliseconds.
Definition HardwareTypes.h:178
uint8_t hf_u8_t
Platform-agnostic 8-bit unsigned integer type.
Definition HardwareTypes.h:40
constexpr hf_pin_num_t HF_INVALID_PIN
Invalid pin constant for unassigned or invalid pins.
Definition HardwareTypes.h:104
hf_i32_t hf_pin_num_t
Platform-agnostic GPIO pin number type.
Definition HardwareTypes.h:99
constexpr hf_host_id_t HF_INVALID_HOST
Invalid host constant for unassigned or invalid hosts.
Definition HardwareTypes.h:136
hf_u32_t hf_host_id_t
Platform-agnostic host/controller identifier type.
Definition HardwareTypes.h:131
uint16_t hf_u16_t
Platform-agnostic 16-bit unsigned integer type.
Definition HardwareTypes.h:46
Centralized MCU platform selection and configuration header.
Manages a single SPI bus (host). Handles bus init/deinit and device creation.
Definition EspSpi.h:169
Represents a single SPI device on a bus (CS/config/handle).
Definition EspSpi.h:74
Platform-agnostic SPI bus configuration for STM32.
Definition EspTypes_SPI.h:150
hf_spi_bus_config_t() noexcept
Definition EspTypes_SPI.h:160
hf_timeout_ms_t timeout_ms
Default timeout for operations (ms)
Definition EspTypes_SPI.h:157
hf_pin_num_t sclk_pin
SCLK pin.
Definition EspTypes_SPI.h:154
bool use_iomux
Use IOMUX for better performance.
Definition EspTypes_SPI.h:158
hf_u8_t dma_channel
DMA channel (0=auto, 1/2=specific, 0xFF=disabled)
Definition EspTypes_SPI.h:156
hf_pin_num_t mosi_pin
MOSI pin.
Definition EspTypes_SPI.h:152
hf_u32_t clock_speed_hz
Default clock speed in Hz.
Definition EspTypes_SPI.h:155
hf_pin_num_t miso_pin
MISO pin.
Definition EspTypes_SPI.h:153
hf_host_id_t host
SPI host/controller (e.g., HF_SPI2_HOST)
Definition EspTypes_SPI.h:151
SPI device configuration for STM32.
Definition EspTypes_SPI.h:210
hf_u16_t duty_cycle_pos
Duty cycle of positive clock (1/256th, 128=50%)
Definition EspTypes_SPI.h:218
hf_u32_t flags
Bitwise OR of SPI_DEVICE_* flags.
Definition EspTypes_SPI.h:221
void(* pre_cb)(void *)
Pre-transfer callback (optional)
Definition EspTypes_SPI.h:223
hf_u16_t cs_ena_pretrans
CS active before transmission (bit-cycles)
Definition EspTypes_SPI.h:219
hf_u8_t cs_ena_posttrans
CS active after transmission (bit-cycles)
Definition EspTypes_SPI.h:220
hf_u32_t input_delay_ns
Input delay (ns)
Definition EspTypes_SPI.h:222
hf_u8_t queue_size
Transaction queue size.
Definition EspTypes_SPI.h:214
hf_u8_t command_bits
Command phase bits (0-16)
Definition EspTypes_SPI.h:215
hf_spi_mode_t mode
SPI mode (0-3)
Definition EspTypes_SPI.h:212
hf_spi_sampling_point_t sampling_point
Sampling point for data (ESP32C6 specific)
Definition EspTypes_SPI.h:227
hf_spi_device_config_t() noexcept
Definition EspTypes_SPI.h:229
hf_u8_t dummy_bits
Dummy bits between address and data.
Definition EspTypes_SPI.h:217
hf_spi_clock_source_t clock_source
Clock source selection (0=default, ESP32C6 specific)
Definition EspTypes_SPI.h:226
void(* post_cb)(void *)
Post-transfer callback (optional)
Definition EspTypes_SPI.h:224
hf_pin_num_t cs_pin
CS pin (or -1 for software CS)
Definition EspTypes_SPI.h:213
hf_u8_t address_bits
Address phase bits (0-64)
Definition EspTypes_SPI.h:216
void * user_ctx
User context for callbacks.
Definition EspTypes_SPI.h:225
hf_u32_t clock_speed_hz
Device clock speed (Hz)
Definition EspTypes_SPI.h:211