18#ifndef __VSF_TEMPLATE_SPI_H__
19#define __VSF_TEMPLATE_SPI_H__
39#ifndef VSF_SPI_CFG_MULTI_CLASS
40# define VSF_SPI_CFG_MULTI_CLASS ENABLED
50#if defined(VSF_HW_SPI_COUNT) && !defined(VSF_HW_SPI_MASK)
51# define VSF_HW_SPI_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_SPI_COUNT)
61#if defined(VSF_HW_SPI_MASK) && !defined(VSF_HW_SPI_COUNT)
62# define VSF_HW_SPI_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_SPI_MASK)
73#ifndef VSF_SPI_CFG_PREFIX
74# if (VSF_SPI_CFG_MULTI_CLASS == DISABLED) && defined(VSF_HW_SPI_COUNT) && (VSF_HW_SPI_COUNT != 0)
75# define VSF_SPI_CFG_PREFIX vsf_hw
77# define VSF_SPI_CFG_PREFIX vsf
89#ifndef VSF_SPI_CFG_FUNCTION_RENAME
90# define VSF_SPI_CFG_FUNCTION_RENAME ENABLED
101#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE
102# define VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE DISABLED
114#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK
115# define VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED
127#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS
128# define VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
143#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
144# define VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG DISABLED
156#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL
157# define VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL DISABLED
170#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
171# define VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
183#ifndef VSF_SPI_CFG_REIMPLEMENT_MODE_TO_DATA_BITS
184# define VSF_SPI_CFG_REIMPLEMENT_MODE_TO_DATA_BITS DISABLED
196#ifndef VSF_SPI_CFG_REIMPLEMENT_DATA_BITS_TO_MODE
197# define VSF_SPI_CFG_REIMPLEMENT_DATA_BITS_TO_MODE DISABLED
209#ifndef VSF_SPI_CFG_REIMPLEMENT_MODE_TO_BYTES
210# define VSF_SPI_CFG_REIMPLEMENT_MODE_TO_BYTES DISABLED
222#ifndef VSF_SPI_CFG_INHERIT_HAL_CAPABILITY
223# define VSF_SPI_CFG_INHERIT_HAL_CAPABILITY ENABLED
236#define VSF_SPI_APIS(__prefix) \
237 __VSF_HAL_TEMPLATE_API(__prefix, vsf_err_t, spi, init, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, vsf_spi_cfg_t *cfg_ptr) \
238 __VSF_HAL_TEMPLATE_API(__prefix, void, spi, fini, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr) \
239 __VSF_HAL_TEMPLATE_API(__prefix, fsm_rt_t, spi, enable, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr) \
240 __VSF_HAL_TEMPLATE_API(__prefix, fsm_rt_t, spi, disable, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr) \
241 __VSF_HAL_TEMPLATE_API(__prefix, void, spi, irq_enable, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
242 __VSF_HAL_TEMPLATE_API(__prefix, void, spi, irq_disable, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
243 __VSF_HAL_TEMPLATE_API(__prefix, vsf_spi_status_t, spi, status, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr) \
244 __VSF_HAL_TEMPLATE_API(__prefix, vsf_spi_capability_t, spi, capability, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr) \
245 __VSF_HAL_TEMPLATE_API(__prefix, vsf_err_t, spi, cs_active, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, uint_fast8_t index) \
246 __VSF_HAL_TEMPLATE_API(__prefix, vsf_err_t, spi, cs_inactive, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, uint_fast8_t index) \
247 __VSF_HAL_TEMPLATE_API(__prefix, void, spi, fifo_transfer, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, void *out_buffer_ptr, uint_fast32_t *out_offset_ptr, void *in_buffer_ptr, uint_fast32_t *in_offset_ptr, uint_fast32_t cnt) \
248 __VSF_HAL_TEMPLATE_API(__prefix, vsf_err_t, spi, request_transfer, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, void *out_buffer_ptr, void *in_buffer_ptr, uint_fast32_t count) \
249 __VSF_HAL_TEMPLATE_API(__prefix, vsf_err_t, spi, cancel_transfer, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr) \
250 __VSF_HAL_TEMPLATE_API(__prefix, void, spi, get_transferred_count, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, uint_fast32_t * tx_count, uint_fast32_t *rx_count) \
251 __VSF_HAL_TEMPLATE_API(__prefix, vsf_err_t, spi, ctrl, VSF_MCONNECT(__prefix, _spi_t) *spi_ptr, vsf_spi_ctrl_t ctrl, void* param)
256#if VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE == DISABLED
518#ifndef VSF_SPI_CS_MODE_MASK
525#ifdef VSF_SPI_CS_HARDWARE_INPUT_MODE
526 | VSF_SPI_CS_HARDWARE_INPUT_MODE
535#ifndef VSF_SPI_DATASIZE_MASK
541#ifndef VSF_SPI_MODE_ALL_BITS_MASK
552#ifdef VSF_SPI_DATALINE_MASK
553 | VSF_SPI_DATALINE_MASK
555#ifdef VSF_SPI_MOTOROLA_TI_MASK
556 | VSF_SPI_MOTOROLA_TI_MASK
558#ifdef VSF_SPI_CRC_MASK
561#ifdef VSF_SPI_CLOCK_PRESCLER_MASK
562 | VSF_SPI_CLOCK_PRESCLER_MASK
567#if VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK == DISABLED
602#ifndef VSF_SPI_IRQ_MASK_ERR
611#ifndef VSF_SPI_IRQ_ALL_BITS_MASK
624#if VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS == DISABLED
646#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
656#if VSF_SPI_CFG_INHERIT_HAL_CAPABILITY == ENABLED
670#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
717#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL == DISABLED
754# undef __VSF_HAL_TEMPLATE_API
755# define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
761#if VSF_SPI_CFG_MULTI_CLASS == ENABLED
1040#if VSF_SPI_CFG_REIMPLEMENT_MODE_TO_DATA_BITS == DISABLED
1055# if defined(VSF_SPI_DATASIZE_BIT_OFFSET) && defined(VSF_SPI_DATASIZE_VALUE_OFFSET)
1059 return bits + VSF_SPI_DATASIZE_VALUE_OFFSET;
1066#ifdef VSF_SPI_DATASIZE_4
1070#ifdef VSF_SPI_DATASIZE_5
1074#ifdef VSF_SPI_DATASIZE_6
1078#ifdef VSF_SPI_DATASIZE_7
1084#ifdef VSF_SPI_DATASIZE_9
1088#ifdef VSF_SPI_DATASIZE_10
1092#ifdef VSF_SPI_DATASIZE_11
1096#ifdef VSF_SPI_DATASIZE_12
1100#ifdef VSF_SPI_DATASIZE_13
1104#ifdef VSF_SPI_DATASIZE_14
1108#ifdef VSF_SPI_DATASIZE_15
1112#ifdef VSF_SPI_DATASIZE_16
1116#ifdef VSF_SPI_DATASIZE_17
1120#ifdef VSF_SPI_DATASIZE_18
1124#ifdef VSF_SPI_DATASIZE_19
1128#ifdef VSF_SPI_DATASIZE_20
1132#ifdef VSF_SPI_DATASIZE_21
1136#ifdef VSF_SPI_DATASIZE_22
1140#ifdef VSF_SPI_DATASIZE_23
1144#ifdef VSF_SPI_DATASIZE_24
1148#ifdef VSF_SPI_DATASIZE_25
1152#ifdef VSF_SPI_DATASIZE_26
1156#ifdef VSF_SPI_DATASIZE_27
1160#ifdef VSF_SPI_DATASIZE_28
1164#ifdef VSF_SPI_DATASIZE_29
1168#ifdef VSF_SPI_DATASIZE_30
1172#ifdef VSF_SPI_DATASIZE_31
1176#ifdef VSF_SPI_DATASIZE_31
1187#if VSF_SPI_CFG_REIMPLEMENT_DATA_BITS_TO_MODE == DISABLED
1202# if defined(VSF_SPI_DATASIZE_BIT_OFFSET) && defined(VSF_SPI_DATASIZE_VALUE_OFFSET)
1211#ifdef VSF_SPI_DATASIZE_4
1215#ifdef VSF_SPI_DATASIZE_5
1219#ifdef VSF_SPI_DATASIZE_6
1223#ifdef VSF_SPI_DATASIZE_7
1229#ifdef VSF_SPI_DATASIZE_9
1233#ifdef VSF_SPI_DATASIZE_10
1237#ifdef VSF_SPI_DATASIZE_11
1241#ifdef VSF_SPI_DATASIZE_12
1245#ifdef VSF_SPI_DATASIZE_13
1249#ifdef VSF_SPI_DATASIZE_14
1253#ifdef VSF_SPI_DATASIZE_15
1257#ifdef VSF_SPI_DATASIZE_16
1261#ifdef VSF_SPI_DATASIZE_17
1265#ifdef VSF_SPI_DATASIZE_18
1269#ifdef VSF_SPI_DATASIZE_19
1273#ifdef VSF_SPI_DATASIZE_20
1277#ifdef VSF_SPI_DATASIZE_21
1281#ifdef VSF_SPI_DATASIZE_22
1285#ifdef VSF_SPI_DATASIZE_23
1289#ifdef VSF_SPI_DATASIZE_24
1293#ifdef VSF_SPI_DATASIZE_25
1297#ifdef VSF_SPI_DATASIZE_26
1301#ifdef VSF_SPI_DATASIZE_27
1305#ifdef VSF_SPI_DATASIZE_28
1309#ifdef VSF_SPI_DATASIZE_29
1313#ifdef VSF_SPI_DATASIZE_30
1317#ifdef VSF_SPI_DATASIZE_31
1321#ifdef VSF_SPI_DATASIZE_32
1332#if VSF_SPI_CFG_REIMPLEMENT_MODE_TO_BYTES == DISABLED
1363#if VSF_SPI_CFG_FUNCTION_RENAME == ENABLED
1364# define __vsf_spi_t VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_t)
1365# define vsf_spi_init(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_init) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1366# define vsf_spi_enable(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_enable) ((__vsf_spi_t *)(__SPI))
1367# define vsf_spi_disable(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_disable) ((__vsf_spi_t *)(__SPI))
1368# define vsf_spi_irq_enable(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_irq_enable) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1369# define vsf_spi_irq_disable(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_irq_disable) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1370# define vsf_spi_status(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_status) ((__vsf_spi_t *)(__SPI))
1371# define vsf_spi_capability(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_capability) ((__vsf_spi_t *)(__SPI))
1372# define vsf_spi_cs_active(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_cs_active) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1373# define vsf_spi_cs_inactive(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_cs_inactive) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1374# define vsf_spi_fifo_transfer(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_fifo_transfer) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1375# define vsf_spi_request_transfer(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_request_transfer) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1376# define vsf_spi_cancel_transfer(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_cancel_transfer) ((__vsf_spi_t *)(__SPI))
1377# define vsf_spi_get_transferred_count(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_get_transferred_count)((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1378# define vsf_spi_ctrl(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_ctrl) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
vsf_err_t
Definition __type.h:42
vsf_spi_mode_t
Definition spi.h:33
@ VSF_SPI_DATASIZE_31
Definition spi.h:67
@ VSF_SPI_DATASIZE_28
Definition spi.h:64
@ VSF_SPI_DATASIZE_6
Definition spi.h:98
@ VSF_SPI_DATASIZE_17
Definition spi.h:53
@ VSF_SPI_DATASIZE_9
Definition spi.h:45
@ VSF_SPI_DATASIZE_18
Definition spi.h:54
@ VSF_SPI_DATASIZE_11
Definition spi.h:47
@ VSF_SPI_DATASIZE_20
Definition spi.h:56
@ VSF_SPI_DATASIZE_21
Definition spi.h:57
@ VSF_SPI_DATASIZE_27
Definition spi.h:63
@ VSF_SPI_DATASIZE_14
Definition spi.h:50
@ VSF_SPI_DATASIZE_BIT_OFFSET
Definition spi.h:42
@ VSF_SPI_DATASIZE_26
Definition spi.h:62
@ VSF_SPI_DATASIZE_13
Definition spi.h:49
@ VSF_SPI_DATASIZE_7
Definition spi.h:99
@ VSF_SPI_DATASIZE_5
Definition spi.h:97
@ VSF_SPI_DATASIZE_12
Definition spi.h:48
@ VSF_SPI_DATASIZE_22
Definition spi.h:58
@ VSF_SPI_DATASIZE_24
Definition spi.h:60
@ VSF_SPI_DATASIZE_4
datasize is 8 bits
Definition spi.h:96
@ VSF_SPI_DATASIZE_29
Definition spi.h:65
@ VSF_SPI_DATASIZE_25
Definition spi.h:61
@ VSF_SPI_DATASIZE_30
Definition spi.h:66
@ VSF_SPI_DATASIZE_19
Definition spi.h:55
@ VSF_SPI_DATASIZE_23
Definition spi.h:59
@ VSF_SPI_DATASIZE_10
Definition spi.h:46
@ VSF_SPI_DATASIZE_15
Definition spi.h:51
vsf_arch_prio_t
Definition cortex_a_generic.h:88
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_hal_driver.h:203
Definition vsf_template_hal_driver.h:196
Predefined VSF SPI capability that can be reimplemented in specific HAL drivers. Even if the hardware...
Definition vsf_template_spi.h:655
uint8_t support_software_cs
Software chip select support (1: supported, 0: not supported)
Definition vsf_template_spi.h:662
uint32_t max_clock_hz
Maximum supported SPI clock frequency in Hz.
Definition vsf_template_spi.h:665
uint8_t cs_count
Number of available chip select lines (0-63)
Definition vsf_template_spi.h:663
vsf_spi_irq_mask_t irq_mask
Definition spi.h:165
uint8_t support_hardware_cs
Hardware chip select support (1: supported, 0: not supported)
Definition vsf_template_spi.h:661
uint32_t min_clock_hz
Minimum supported SPI clock frequency in Hz.
Definition vsf_template_spi.h:666
inherit(vsf_peripheral_capability_t) vsf_spi_irq_mask_t irq_mask
Supported interrupt masks for SPI operations.
Configuration structure for SPI.
Definition vsf_template_spi.h:708
uint32_t clock_hz
SPI clock frequency in Hz (must be between min_clock_hz and max_clock_hz)
Definition vsf_template_spi.h:710
vsf_spi_isr_t isr
Interrupt configuration (handler, target pointer, priority)
Definition vsf_template_spi.h:711
vsf_spi_mode_t mode
SPI operating mode (master/slave, CPOL/CPHA, bit order, data size)
Definition vsf_template_spi.h:709
uint8_t auto_cs_index
Hardware CS pin index (0 to cs_count-1) for auto chip select, if supported.
Definition vsf_template_spi.h:712
SPI interrupt service routine configuration structure.
Definition vsf_template_spi.h:696
vsf_spi_isr_handler_t * handler_fn
Interrupt handler function (NULL to disable interrupts)
Definition vsf_template_spi.h:697
void * target_ptr
User context pointer passed to handler.
Definition vsf_template_spi.h:698
vsf_arch_prio_t prio
Hardware-specific interrupt priority.
Definition vsf_template_spi.h:699
SPI operation function pointer type, used for SPI Multi Class support.
Definition vsf_template_spi.h:752
Predefined VSF SPI status that can be reimplemented in specific HAL drivers. Even if the hardware doe...
Definition vsf_template_spi.h:635
uint32_t is_busy
Definition spi.h:155
SPI instance structure, used for SPI Multi Class support, not needed in non Multi Class mode.
Definition vsf_template_spi.h:766
const vsf_spi_op_t * op
Pointer to operation table.
Definition vsf_template_spi.h:767
void vsf_spi_isr_handler_t(void *target_ptr, vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
Definition spi.h:181
vsf_spi_irq_mask_t
Definition spi.h:140
vsf_spi_mode_t
Definition spi.h:116
fsm_rt_t
Definition vsf_fsm.h:315
@ VSF_SPI_IRQ_MASK_RX_CPL
Definition vsf_template_spi.h:600
@ VSF_SPI_IRQ_MASK_TX_FIFO_THRESHOLD
VSF_SPI_IRQ_MASK_TX 的别名
Definition vsf_template_spi.h:593
@ VSF_SPI_IRQ_ALL_BITS_MASK
Definition vsf_template_spi.h:616
@ VSF_SPI_IRQ_MASK_RX_FIFO_THRESHOLD
VSF_SPI_IRQ_MASK_RX 的别名
Definition vsf_template_spi.h:594
@ VSF_SPI_IRQ_MASK_ERR
Definition vsf_template_spi.h:607
void vsf_spi_fifo_transfer(vsf_spi_t *spi_ptr, void *out_buffer_ptr, uint_fast32_t *out_offset_ptr, void *in_buffer_ptr, uint_fast32_t *in_offset_ptr, uint_fast32_t count)
Perform FIFO-based data transfer on a SPI instance.
Definition spi_common.c:118
struct vsf_spi_isr_t vsf_spi_isr_t
SPI interrupt service routine configuration structure.
void vsf_spi_isr_handler_t(void *target_ptr, vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
SPI interrupt handler type declaration.
Definition vsf_template_spi.h:686
vsf_spi_status_t vsf_spi_status(vsf_spi_t *spi_ptr)
Get the current status of a SPI instance.
Definition spi_common.c:91
vsf_err_t vsf_spi_request_transfer(vsf_spi_t *spi_ptr, void *out_buffer_ptr, void *in_buffer_ptr, uint_fast32_t count)
Request a SPI data transfer operation.
Definition spi_common.c:130
struct vsf_spi_cfg_t vsf_spi_cfg_t
Configuration structure for SPI.
struct vsf_spi_capability_t vsf_spi_capability_t
Predefined VSF SPI capability that can be reimplemented in specific HAL drivers. Even if the hardware...
void vsf_spi_get_transferred_count(vsf_spi_t *spi_ptr, uint_fast32_t *sent_count, uint_fast32_t *received_count)
Get the number of data units transferred in the current or last SPI operation.
Definition spi_common.c:150
@ VSF_SPI_MODE_MASK
SPI mode mask for clock polarity and phase configuration.
Definition vsf_template_spi.h:509
@ VSF_SPI_BIT_ORDER_MASK
SPI bit order mask for MSB/LSB first selection.
Definition vsf_template_spi.h:498
@ VSF_SPI_DIR_MODE_MASK
SPI direction mode mask for master/slave selection.
Definition vsf_template_spi.h:487
@ VSF_SPI_CS_MODE_MASK
Definition vsf_template_spi.h:519
@ VSF_SPI_MODE_ALL_BITS_MASK
Definition vsf_template_spi.h:546
@ VSF_SPI_DATASIZE_MASK
Definition vsf_template_spi.h:536
vsf_err_t vsf_spi_cs_active(vsf_spi_t *spi_ptr, uint_fast8_t index)
Activate (assert) a SPI chip select line.
Definition spi_common.c:100
vsf_spi_irq_mask_t
Predefined VSF SPI interrupt masks that can be reimplemented in specific HAL drivers....
Definition vsf_template_spi.h:579
@ VSF_SPI_IRQ_MASK_OVERFLOW_ERR
Overflow error interrupt (triggers when RX FIFO overflows)
Definition vsf_template_spi.h:584
@ VSF_SPI_IRQ_MASK_CPL
Transfer complete interrupt (triggers when both TX and RX are complete)
Definition vsf_template_spi.h:583
@ VSF_SPI_IRQ_MASK_RX
RX FIFO threshold interrupt (triggers when RX FIFO level is above threshold)
Definition vsf_template_spi.h:581
@ VSF_SPI_IRQ_MASK_TX
TX FIFO threshold interrupt (triggers when TX FIFO level is below threshold)
Definition vsf_template_spi.h:580
@ VSF_SPI_IRQ_MASK_TX_CPL
TX complete interrupt (triggers when all TX data has been sent)
Definition vsf_template_spi.h:582
vsf_err_t vsf_spi_ctrl(vsf_spi_t *spi_ptr, vsf_spi_ctrl_t ctrl, void *param)
Execute a control command on the SPI instance.
Definition spi_common.c:169
fsm_rt_t vsf_spi_enable(vsf_spi_t *spi_ptr)
Enable a SPI instance for operation.
Definition spi_common.c:55
fsm_rt_t vsf_spi_disable(vsf_spi_t *spi_ptr)
Disable a SPI instance from operation.
Definition spi_common.c:64
struct vsf_spi_status_t vsf_spi_status_t
Predefined VSF SPI status that can be reimplemented in specific HAL drivers. Even if the hardware doe...
vsf_spi_mode_t
Predefined VSF SPI modes that can be reimplemented in specific HAL drivers.If we want to add optional...
Definition vsf_template_spi.h:273
@ VSF_SPI_CPHA_LOW
Clock phase: sample on first edge.
Definition vsf_template_spi.h:281
@ VSF_SPI_SLAVE
Slave mode (peripheral)
Definition vsf_template_spi.h:275
@ VSF_SPI_DATASIZE_16
16-bit data transfer size
Definition vsf_template_spi.h:293
@ VSF_SPI_LSB_FIRST
Least Significant Bit (LSB) first.
Definition vsf_template_spi.h:277
@ VSF_SPI_CPOL_HIGH
Clock polarity: idle state is high.
Definition vsf_template_spi.h:280
@ VSF_SPI_MODE_1
Mode 1: CPOL=0 (idle low), CPHA=1 (sample on second edge)
Definition vsf_template_spi.h:285
@ VSF_SPI_DATASIZE_8
8-bit data transfer size
Definition vsf_template_spi.h:292
@ VSF_SPI_MASTER
Master mode (controller)
Definition vsf_template_spi.h:274
@ VSF_SPI_CPHA_HIGH
Clock phase: sample on second edge.
Definition vsf_template_spi.h:282
@ VSF_SPI_MSB_FIRST
Most Significant Bit (MSB) first.
Definition vsf_template_spi.h:276
@ VSF_SPI_DATASIZE_32
32-bit data transfer size
Definition vsf_template_spi.h:294
@ VSF_SPI_CS_SOFTWARE_MODE
Software controlled chip select.
Definition vsf_template_spi.h:289
@ VSF_SPI_MODE_0
Mode 0: CPOL=0 (idle low), CPHA=0 (sample on first edge)
Definition vsf_template_spi.h:284
@ VSF_SPI_CS_HARDWARE_MODE
Hardware controlled chip select.
Definition vsf_template_spi.h:290
@ VSF_SPI_MODE_3
Mode 3: CPOL=1 (idle high), CPHA=1 (sample on second edge)
Definition vsf_template_spi.h:287
@ VSF_SPI_CPOL_LOW
Clock polarity: idle state is low.
Definition vsf_template_spi.h:279
@ VSF_SPI_MODE_2
Mode 2: CPOL=1 (idle high), CPHA=0 (sample on first edge)
Definition vsf_template_spi.h:286
void vsf_spi_irq_disable(vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
Disable specific interrupts for a SPI instance.
Definition spi_common.c:82
vsf_spi_ctrl_t
Predefined VSF SPI control commands that can be reimplemented in specific HAL drivers....
Definition vsf_template_spi.h:734
@ __VSF_SPI_CTRL_DUMMY
Dummy value for compilation.
Definition vsf_template_spi.h:735
vsf_err_t vsf_spi_init(vsf_spi_t *spi_ptr, vsf_spi_cfg_t *cfg_ptr)
Initialize a SPI instance.
Definition spi_common.c:37
void vsf_spi_irq_enable(vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
Enable specific interrupts for a SPI instance.
Definition spi_common.c:73
void vsf_spi_fini(vsf_spi_t *spi_ptr)
Finalize (deinitialize) a SPI instance.
Definition spi_common.c:46
vsf_err_t vsf_spi_cs_inactive(vsf_spi_t *spi_ptr, uint_fast8_t index)
Deactivate (deassert) a SPI chip select line.
Definition spi_common.c:109
vsf_err_t vsf_spi_cancel_transfer(vsf_spi_t *spi_ptr)
Cancel an ongoing SPI transfer operation.
Definition spi_common.c:141
vsf_spi_capability_t vsf_spi_capability(vsf_spi_t *spi_ptr)
Get the capabilities of a SPI instance.
Definition spi_common.c:160
#define VSF_SPI_APIS(__prefix)
SPI API template, used to generate SPI type, specific prefix function declarations,...
Definition vsf_template_spi.h:236