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 == ENABLED
75# define VSF_SPI_CFG_PREFIX vsf
76# elif defined(VSF_HW_SPI_COUNT) && (VSF_HW_SPI_COUNT != 0)
77# define VSF_SPI_CFG_PREFIX vsf_hw
79# define VSF_SPI_CFG_PREFIX vsf
91#ifndef VSF_SPI_CFG_FUNCTION_RENAME
92# define VSF_SPI_CFG_FUNCTION_RENAME ENABLED
103#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE
104# define VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE DISABLED
116#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK
117# define VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED
129#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS
130# define VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
145#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG
146# define VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG DISABLED
158#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL
159# define VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL DISABLED
172#ifndef VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY
173# define VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
185#ifndef VSF_SPI_CFG_REIMPLEMENT_MODE_TO_DATA_BITS
186# define VSF_SPI_CFG_REIMPLEMENT_MODE_TO_DATA_BITS DISABLED
198#ifndef VSF_SPI_CFG_REIMPLEMENT_DATA_BITS_TO_MODE
199# define VSF_SPI_CFG_REIMPLEMENT_DATA_BITS_TO_MODE DISABLED
211#ifndef VSF_SPI_CFG_REIMPLEMENT_MODE_TO_BYTES
212# define VSF_SPI_CFG_REIMPLEMENT_MODE_TO_BYTES DISABLED
224#ifndef VSF_SPI_CFG_INHERIT_HAL_CAPABILITY
225# define VSF_SPI_CFG_INHERIT_HAL_CAPABILITY ENABLED
259#ifndef __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
260# define __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL DISABLED
273#define VSF_SPI_APIS(__prefix_name) \
274 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, init, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, vsf_spi_cfg_t *cfg_ptr) \
275 __VSF_HAL_TEMPLATE_API(__prefix_name, void, spi, fini, VSF_MCONNECT(__prefix_name, _t) *spi_ptr) \
276 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, get_configuration, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, vsf_spi_cfg_t *cfg_ptr) \
277 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, spi, enable, VSF_MCONNECT(__prefix_name, _t) *spi_ptr) \
278 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, spi, disable, VSF_MCONNECT(__prefix_name, _t) *spi_ptr) \
279 __VSF_HAL_TEMPLATE_API(__prefix_name, void, spi, irq_enable, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
280 __VSF_HAL_TEMPLATE_API(__prefix_name, void, spi, irq_disable, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
281 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_spi_irq_mask_t, spi, irq_clear, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
282 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_spi_status_t, spi, status, VSF_MCONNECT(__prefix_name, _t) *spi_ptr) \
283 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_spi_capability_t, spi, capability, VSF_MCONNECT(__prefix_name, _t) *spi_ptr) \
284 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, cs_active, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, uint_fast8_t index) \
285 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, cs_inactive, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, uint_fast8_t index) \
286 __VSF_HAL_TEMPLATE_API(__prefix_name, void, spi, fifo_transfer, VSF_MCONNECT(__prefix_name, _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) \
287 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, request_transfer, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, void *out_buffer_ptr, void *in_buffer_ptr, uint_fast32_t count) \
288 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, cancel_transfer, VSF_MCONNECT(__prefix_name, _t) *spi_ptr) \
289 __VSF_HAL_TEMPLATE_API(__prefix_name, void, spi, get_transferred_count, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, uint_fast32_t * sent_count, uint_fast32_t *received_count) \
290 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, spi, ctrl, VSF_MCONNECT(__prefix_name, _t) *spi_ptr, vsf_spi_ctrl_t ctrl, void* param)
295#if VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE == DISABLED
397#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
400# define VSF_SPI_CPOL_LOW VSF_SPI_CPOL_LOW
402# define VSF_SPI_CPOL_HIGH VSF_SPI_CPOL_HIGH
406# define VSF_SPI_CPHA_LOW VSF_SPI_CPHA_LOW
408# define VSF_SPI_CPHA_HIGH VSF_SPI_CPHA_HIGH
419#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
425# define VSF_SPI_TI_MODE VSF_SPI_TI_MODE
426# define VSF_SPI_MOTOROLA_TI_MASK (VSF_SPI_MOTOROLA_MODE | VSF_SPI_TI_MODE)
437#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
449# define VSF_SPI_CRC_ENABLED VSF_SPI_CRC_ENABLED
450# define VSF_SPI_CRC_MASK (VSF_SPI_CRC_DISABLED | VSF_SPI_CRC_ENABLED)
461#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
464 VSF_SPI_CLOCK_PRESCALER_2 = (0x00ul << 22),
465# define VSF_SPI_CLOCK_PRESCALER_2 VSF_SPI_CLOCK_PRESCALER_2
466 VSF_SPI_CLOCK_PRESCALER_4 = (0x01ul << 22),
467# define VSF_SPI_CLOCK_PRESCALER_4 VSF_SPI_CLOCK_PRESCALER_4
468 VSF_SPI_CLOCK_PRESCALER_8 = (0x02ul << 22),
469# define VSF_SPI_CLOCK_PRESCALER_8 VSF_SPI_CLOCK_PRESCALER_8
470 VSF_SPI_CLOCK_PRESCALER_16 = (0x03ul << 22),
471# define VSF_SPI_CLOCK_PRESCALER_16 VSF_SPI_CLOCK_PRESCALER_16
472 VSF_SPI_CLOCK_PRESCALER_32 = (0x04ul << 22),
473# define VSF_SPI_CLOCK_PRESCALER_32 VSF_SPI_CLOCK_PRESCALER_32
474 VSF_SPI_CLOCK_PRESCALER_64 = (0x05ul << 22),
475# define VSF_SPI_CLOCK_PRESCALER_64 VSF_SPI_CLOCK_PRESCALER_64
476 VSF_SPI_CLOCK_PRESCALER_128 = (0x06ul << 22),
477# define VSF_SPI_CLOCK_PRESCALER_128 VSF_SPI_CLOCK_PRESCALER_128
478 VSF_SPI_CLOCK_PRESCALER_256 = (0x07ul << 22),
479# define VSF_SPI_CLOCK_PRESCALER_256 VSF_SPI_CLOCK_PRESCALER_256
480# define VSF_SPI_CLOCK_PRESCALER_MASK ( VSF_SPI_CLOCK_PRESCALER_2 \
481 | VSF_SPI_CLOCK_PRESCALER_4 \
482 | VSF_SPI_CLOCK_PRESCALER_8 \
483 | VSF_SPI_CLOCK_PRESCALER_16 \
484 | VSF_SPI_CLOCK_PRESCALER_32 \
485 | VSF_SPI_CLOCK_PRESCALER_64 \
486 | VSF_SPI_CLOCK_PRESCALER_128 \
487 | VSF_SPI_CLOCK_PRESCALER_256)
498#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
504# define VSF_SPI_DATALINE_2_LINE_RX_ONLY VSF_SPI_DATALINE_2_LINE_RX_ONLY
505 VSF_SPI_DATALINE_2_LINE_TX_ONLY = (0x02ul << 16),
506# define VSF_SPI_DATALINE_2_LINE_TX_ONLY VSF_SPI_DATALINE_2_LINE_TX_ONLY
508# define VSF_SPI_DATALINE_1_LINE_HALF_DUPLEX VSF_SPI_DATALINE_1_LINE_HALF_DUPLEX
509 VSF_SPI_DATALINE_2_LINE_HALF_DUPLEX = (0x04ul << 16),
510# define VSF_SPI_DATALINE_2_LINE_HALF_DUPLEX VSF_SPI_DATALINE_2_LINE_HALF_DUPLEX
511 VSF_SPI_DATALINE_4_LINE_HALF_DUPLEX = (0x05ul << 16),
512# define VSF_SPI_DATALINE_4_LINE_HALF_DUPLEX VSF_SPI_DATALINE_4_LINE_HALF_DUPLEX
513 VSF_SPI_DATALINE_8_LINE_HALF_DUPLEX = (0x06ul << 16),
514# define VSF_SPI_DATALINE_8_LINE_HALF_DUPLEX VSF_SPI_DATALINE_8_LINE_HALF_DUPLEX
515 VSF_SPI_DATALINE_16_LINE_HALF_DUPLEX = (0x07ul << 16),
516# define VSF_SPI_DATALINE_16_LINE_HALF_DUPLEX VSF_SPI_DATALINE_16_LINE_HALF_DUPLEX
517# define VSF_SPI_DATALINE_MASK ( VSF_SPI_DATALINE_2_LINE_FULL_DUPLEX \
518 | VSF_SPI_DATALINE_1_LINE_HALF_DUPLEX \
519 | VSF_SPI_DATALINE_2_LINE_HALF_DUPLEX \
520 | VSF_SPI_DATALINE_4_LINE_HALF_DUPLEX \
521 | VSF_SPI_DATALINE_8_LINE_HALF_DUPLEX \
522 | VSF_SPI_DATALINE_16_LINE_HALF_DUPLEX)
573#ifndef VSF_SPI_CS_MODE_MASK
580#ifdef VSF_SPI_CS_HARDWARE_INPUT_MODE
581 | VSF_SPI_CS_HARDWARE_INPUT_MODE
590#ifndef VSF_SPI_DATASIZE_MASK
596#ifndef VSF_SPI_MODE_ALL_BITS_MASK
606#ifdef VSF_SPI_DATALINE_MASK
607 | VSF_SPI_DATALINE_MASK
609#ifdef VSF_SPI_MOTOROLA_TI_MASK
612#ifdef VSF_SPI_CRC_MASK
615#ifdef VSF_SPI_CLOCK_PRESCALER_MASK
616 | VSF_SPI_CLOCK_PRESCALER_MASK
621#if VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK == DISABLED
686#ifndef VSF_SPI_IRQ_MASK_ERR
695#ifndef VSF_SPI_IRQ_ALL_BITS_MASK
708#if VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS == DISABLED
730#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
740#if VSF_SPI_CFG_INHERIT_HAL_CAPABILITY == ENABLED
754#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
808#if VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL == DISABLED
870#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
873 VSF_SPI_CTRL_REQUEST_PAUSE = (0x1ul << 0),
874 VSF_SPI_CTRL_REQUEST_RESUME = (0x1ul << 1),
875# define VSF_SPI_CTRL_REQUEST_PAUSE VSF_SPI_CTRL_REQUEST_PAUSE
876# define VSF_SPI_CTRL_REQUEST_RESUME VSF_SPI_CTRL_REQUEST_RESUME
887#if __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
907 VSF_SPI_CTRL_QSPI_ENABLE = 0x00ul,
912 VSF_SPI_CTRL_QSPI_DISABLE = 0x01ul,
913# define VSF_SPI_CTRL_QSPI_ENABLE VSF_SPI_CTRL_QSPI_ENABLE
914# define VSF_SPI_CTRL_QSPI_DISABLE VSF_SPI_CTRL_QSPI_DISABLE
933 VSF_SPI_CTRL_QSPI_CMD_PHASE_ENABLE = 0x02ul,
936 VSF_SPI_CTRL_QSPI_CMD_PHASE_DISABLE = 0x03ul,
939 VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_SIZE = 0x04ul,
942 VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_SIZE = 0x05ul,
949 VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_LINE_MODE = 0x06ul,
956 VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_LINE_MODE = 0x07ul,
959 VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_VALUE = 0x08ul,
962 VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_VALUE = 0x09ul,
963# define VSF_SPI_CTRL_QSPI_CMD_PHASE_ENABLE VSF_SPI_CTRL_QSPI_CMD_PHASE_ENABLE
964# define VSF_SPI_CTRL_QSPI_CMD_PHASE_DISABLE VSF_SPI_CTRL_QSPI_CMD_PHASE_DISABLE
965# define VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_SIZE VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_SIZE
966# define VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_SIZE VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_SIZE
967# define VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_LINE_MODE VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_LINE_MODE
968# define VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_LINE_MODE VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_LINE_MODE
969# define VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_VALUE VSF_SPI_CTRL_QSPI_CMD_PHASE_SET_VALUE
970# define VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_VALUE VSF_SPI_CTRL_QSPI_CMD_PHASE_GET_VALUE
983 VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_ENABLE = 0x0Aul,
986 VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_DISABLE = 0x0Bul,
989 VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_SET_SIZE = 0x0Cul,
992 VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_GET_SIZE = 0x0Dul,
999 VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_SET_LINE_MODE = 0x0Eul,
1005 VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_GET_LINE_MODE = 0x0Ful,
1008 VSF_SPI_CTRL_QSPI_ADDRESS_SET = 0x10ul,
1011 VSF_SPI_CTRL_QSPI_ADDRESS_GET = 0x11ul,
1012# define VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_ENABLE VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_ENABLE
1013# define VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_DISABLE VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_DISABLE
1014# define VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_SET_SIZE VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_SET_SIZE
1015# define VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_GET_SIZE VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_GET_SIZE
1016# define VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_SET_LINE_MODE VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_SET_LINE_MODE
1017# define VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_GET_LINE_MODE VSF_SPI_CTRL_QSPI_ADDRESS_PHASE_GET_LINE_MODE
1018# define VSF_SPI_CTRL_QSPI_ADDRESS_SET VSF_SPI_CTRL_QSPI_ADDRESS_SET
1019# define VSF_SPI_CTRL_QSPI_ADDRESS_GET VSF_SPI_CTRL_QSPI_ADDRESS_GET
1032 VSF_SPI_CTRL_QSPI_DUMMY_PHASE_ENABLE = 0x18ul,
1035 VSF_SPI_CTRL_QSPI_DUMMY_PHASE_DISABLE = 0x19ul,
1038 VSF_SPI_CTRL_QSPI_DUMMY_PHASE_SET_CYCLES = 0x1Aul,
1041 VSF_SPI_CTRL_QSPI_DUMMY_PHASE_GET_CYCLES = 0x1Bul,
1042# define VSF_SPI_CTRL_QSPI_DUMMY_PHASE_ENABLE VSF_SPI_CTRL_QSPI_DUMMY_PHASE_ENABLE
1043# define VSF_SPI_CTRL_QSPI_DUMMY_PHASE_DISABLE VSF_SPI_CTRL_QSPI_DUMMY_PHASE_DISABLE
1044# define VSF_SPI_CTRL_QSPI_DUMMY_PHASE_SET_CYCLES VSF_SPI_CTRL_QSPI_DUMMY_PHASE_SET_CYCLES
1045# define VSF_SPI_CTRL_QSPI_DUMMY_PHASE_GET_CYCLES VSF_SPI_CTRL_QSPI_DUMMY_PHASE_GET_CYCLES
1062 VSF_SPI_CTRL_QSPI_DATA_PHASE_ENABLE = 0x12ul,
1065 VSF_SPI_CTRL_QSPI_DATA_PHASE_DISABLE = 0x13ul,
1068 VSF_SPI_CTRL_QSPI_DATA_PHASE_SET_SIZE = 0x14ul,
1071 VSF_SPI_CTRL_QSPI_DATA_PHASE_GET_SIZE = 0x15ul,
1079 VSF_SPI_CTRL_QSPI_DATA_PHASE_SET_LINE_MODE = 0x16ul,
1087 VSF_SPI_CTRL_QSPI_DATA_PHASE_GET_LINE_MODE = 0x17ul,
1088# define VSF_SPI_CTRL_QSPI_DATA_PHASE_ENABLE VSF_SPI_CTRL_QSPI_DATA_PHASE_ENABLE
1089# define VSF_SPI_CTRL_QSPI_DATA_PHASE_DISABLE VSF_SPI_CTRL_QSPI_DATA_PHASE_DISABLE
1090# define VSF_SPI_CTRL_QSPI_DATA_PHASE_SET_SIZE VSF_SPI_CTRL_QSPI_DATA_PHASE_SET_SIZE
1091# define VSF_SPI_CTRL_QSPI_DATA_PHASE_GET_SIZE VSF_SPI_CTRL_QSPI_DATA_PHASE_GET_SIZE
1092# define VSF_SPI_CTRL_QSPI_DATA_PHASE_SET_LINE_MODE VSF_SPI_CTRL_QSPI_DATA_PHASE_SET_LINE_MODE
1093# define VSF_SPI_CTRL_QSPI_DATA_PHASE_GET_LINE_MODE VSF_SPI_CTRL_QSPI_DATA_PHASE_GET_LINE_MODE
1099 VSF_SPI_CTRL_QSPI_TRANSFER_SET_MODE = 0x1Cul,
1102 VSF_SPI_CTRL_QSPI_TRANSFER_GET_MODE = 0x1Dul,
1103# define VSF_SPI_CTRL_QSPI_TRANSFER_SET_MODE VSF_SPI_CTRL_QSPI_TRANSFER_SET_MODE
1104# define VSF_SPI_CTRL_QSPI_TRANSFER_GET_MODE VSF_SPI_CTRL_QSPI_TRANSFER_GET_MODE
1117# undef __VSF_HAL_TEMPLATE_API
1118# define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
1124#if VSF_SPI_CFG_MULTI_CLASS == ENABLED
1493#if VSF_SPI_CFG_REIMPLEMENT_MODE_TO_DATA_BITS == DISABLED
1508# if defined(VSF_SPI_DATASIZE_BIT_OFFSET) && defined(VSF_SPI_DATASIZE_VALUE_OFFSET)
1519#ifdef VSF_SPI_DATASIZE_4
1523#ifdef VSF_SPI_DATASIZE_5
1527#ifdef VSF_SPI_DATASIZE_6
1531#ifdef VSF_SPI_DATASIZE_7
1537#ifdef VSF_SPI_DATASIZE_9
1541#ifdef VSF_SPI_DATASIZE_10
1545#ifdef VSF_SPI_DATASIZE_11
1549#ifdef VSF_SPI_DATASIZE_12
1553#ifdef VSF_SPI_DATASIZE_13
1557#ifdef VSF_SPI_DATASIZE_14
1561#ifdef VSF_SPI_DATASIZE_15
1565#ifdef VSF_SPI_DATASIZE_16
1569#ifdef VSF_SPI_DATASIZE_17
1573#ifdef VSF_SPI_DATASIZE_18
1577#ifdef VSF_SPI_DATASIZE_19
1581#ifdef VSF_SPI_DATASIZE_20
1585#ifdef VSF_SPI_DATASIZE_21
1589#ifdef VSF_SPI_DATASIZE_22
1593#ifdef VSF_SPI_DATASIZE_23
1597#ifdef VSF_SPI_DATASIZE_24
1601#ifdef VSF_SPI_DATASIZE_25
1605#ifdef VSF_SPI_DATASIZE_26
1609#ifdef VSF_SPI_DATASIZE_27
1613#ifdef VSF_SPI_DATASIZE_28
1617#ifdef VSF_SPI_DATASIZE_29
1621#ifdef VSF_SPI_DATASIZE_30
1625#ifdef VSF_SPI_DATASIZE_31
1629#ifdef VSF_SPI_DATASIZE_32
1640#if VSF_SPI_CFG_REIMPLEMENT_DATA_BITS_TO_MODE == DISABLED
1655# if defined(VSF_SPI_DATASIZE_BIT_OFFSET) && defined(VSF_SPI_DATASIZE_VALUE_OFFSET)
1663 switch (data_bits) {
1664#ifdef VSF_SPI_DATASIZE_4
1668#ifdef VSF_SPI_DATASIZE_5
1672#ifdef VSF_SPI_DATASIZE_6
1676#ifdef VSF_SPI_DATASIZE_7
1682#ifdef VSF_SPI_DATASIZE_9
1686#ifdef VSF_SPI_DATASIZE_10
1690#ifdef VSF_SPI_DATASIZE_11
1694#ifdef VSF_SPI_DATASIZE_12
1698#ifdef VSF_SPI_DATASIZE_13
1702#ifdef VSF_SPI_DATASIZE_14
1706#ifdef VSF_SPI_DATASIZE_15
1710#ifdef VSF_SPI_DATASIZE_16
1714#ifdef VSF_SPI_DATASIZE_17
1718#ifdef VSF_SPI_DATASIZE_18
1722#ifdef VSF_SPI_DATASIZE_19
1726#ifdef VSF_SPI_DATASIZE_20
1730#ifdef VSF_SPI_DATASIZE_21
1734#ifdef VSF_SPI_DATASIZE_22
1738#ifdef VSF_SPI_DATASIZE_23
1742#ifdef VSF_SPI_DATASIZE_24
1746#ifdef VSF_SPI_DATASIZE_25
1750#ifdef VSF_SPI_DATASIZE_26
1754#ifdef VSF_SPI_DATASIZE_27
1758#ifdef VSF_SPI_DATASIZE_28
1762#ifdef VSF_SPI_DATASIZE_29
1766#ifdef VSF_SPI_DATASIZE_30
1770#ifdef VSF_SPI_DATASIZE_31
1774#ifdef VSF_SPI_DATASIZE_32
1785#if VSF_SPI_CFG_REIMPLEMENT_MODE_TO_BYTES == DISABLED
1802 uint8_t bits = vsf_spi_mode_to_data_bits(mode);
1805 }
else if (bits <= 8) {
1807 }
else if (bits <= 16) {
1818#if VSF_SPI_CFG_FUNCTION_RENAME == ENABLED
1819# define __vsf_spi_t VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_t)
1820# define vsf_spi_init(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_init) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1821# define vsf_spi_fini(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_fini) ((__vsf_spi_t *)(__SPI))
1822# define vsf_spi_get_configuration(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_get_configuration) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1823# define vsf_spi_enable(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_enable) ((__vsf_spi_t *)(__SPI))
1824# define vsf_spi_disable(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_disable) ((__vsf_spi_t *)(__SPI))
1825# define vsf_spi_irq_enable(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_irq_enable) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1826# define vsf_spi_irq_disable(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_irq_disable) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1827# define vsf_spi_irq_clear(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_irq_clear) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1828# define vsf_spi_status(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_status) ((__vsf_spi_t *)(__SPI))
1829# define vsf_spi_capability(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_capability) ((__vsf_spi_t *)(__SPI))
1830# define vsf_spi_cs_active(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_cs_active) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1831# define vsf_spi_cs_inactive(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_cs_inactive) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1832# define vsf_spi_fifo_transfer(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_fifo_transfer) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1833# define vsf_spi_request_transfer(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_request_transfer) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1834# define vsf_spi_cancel_transfer(__SPI) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_cancel_transfer) ((__vsf_spi_t *)(__SPI))
1835# define vsf_spi_get_transferred_count(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_get_transferred_count)((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1836# define vsf_spi_ctrl(__SPI, ...) VSF_MCONNECT(VSF_SPI_CFG_PREFIX, _spi_ctrl) ((__vsf_spi_t *)(__SPI), ##__VA_ARGS__)
1838# define vsf_qspi_t vsf_spi_t
1839# define vsf_qspi_mode_t vsf_spi_mode_t
1840# define vsf_qspi_irq_mask_t vsf_spi_irq_mask_t
1841# define vsf_qspi_status_t vsf_spi_status_t
1842# define vsf_qspi_capability_t vsf_spi_capability_t
1843# define vsf_qspi_isr_handler_t vsf_spi_isr_handler_t
1844# define vsf_qspi_isr_t vsf_spi_isr_t
1845# define vsf_qspi_cfg_t vsf_spi_cfg_t
1846# define vsf_qspi_ctrl_t vsf_spi_ctrl_t
1862# define vsf_qspi_init(__SPI, __CFG_PTR) vsf_spi_init((__vsf_spi_t *)(__SPI), (__CFG_PTR))
1876# define vsf_qspi_fini(__SPI) vsf_spi_fini((__vsf_spi_t *)(__SPI))
1890# define vsf_qspi_enable(__SPI) vsf_spi_enable((__vsf_spi_t *)(__SPI))
1904# define vsf_qspi_disable(__SPI) vsf_spi_disable((__vsf_spi_t *)(__SPI))
1920# define vsf_qspi_irq_enable(__SPI, __IRQ_MASK) vsf_spi_irq_enable((__vsf_spi_t *)(__SPI), (__IRQ_MASK))
1936# define vsf_qspi_irq_disable(__SPI, __IRQ_MASK) vsf_spi_irq_disable((__vsf_spi_t *)(__SPI), (__IRQ_MASK))
1950# define vsf_qspi_status(__SPI) vsf_spi_status((__vsf_spi_t *)(__SPI))
1964# define vsf_qspi_capability(__SPI) vsf_spi_capability((__vsf_spi_t *)(__SPI))
1986# define vsf_qspi_fifo_write(__SPI, __OUT_BUFFER_PTR, __OUT_OFFSET_PTR, __COUNT) \
1987 vsf_spi_fifo_transfer((__vsf_spi_t *)(__SPI), (__OUT_BUFFER_PTR), (__OUT_OFFSET_PTR), NULL, NULL, (__COUNT))
2009# define vsf_qspi_fifo_read(__SPI, __IN_BUFFER_PTR, __IN_OFFSET_PTR, __COUNT) \
2010 vsf_spi_fifo_transfer((__vsf_spi_t *)(__SPI), NULL, NULL, (__IN_BUFFER_PTR), (__IN_OFFSET_PTR), (__COUNT))
2030# define vsf_qspi_request_tx(__SPI, __OUT_BUF, __CNT) vsf_spi_request_transfer((__vsf_spi_t *)(__SPI), (__OUT_BUF), NULL, (__CNT))
2050# define vsf_qspi_request_rx(__SPI, __IN_BUF, __CNT) vsf_spi_request_transfer((__vsf_spi_t *)(__SPI), NULL, (__IN_BUF), (__CNT))
2075# define vsf_qspi_cancel_transfer(__SPI) vsf_spi_cancel_transfer((__vsf_spi_t *)(__SPI))
2093# define vsf_qspi_get_transferred_count(__SPI, __TX_CNT, __RX_CNT) \
2094 vsf_spi_get_transferred_count((__vsf_spi_t *)(__SPI), (__TX_CNT), (__RX_CNT))
2112# define vsf_qspi_ctrl(__SPI, __CTRL, __PARAM) vsf_spi_ctrl((__vsf_spi_t *)(__SPI), (__CTRL), (__PARAM))
vsf_err_t
Definition __type.h:42
vsf_spi_mode_t
Definition spi.h:33
@ VSF_SPI_DATASIZE_31
Definition spi.h:72
@ VSF_SPI_DATASIZE_28
Definition spi.h:69
@ VSF_SPI_DATASIZE_6
Definition spi.h:103
@ VSF_SPI_DATASIZE_17
Definition spi.h:58
@ VSF_SPI_DATASIZE_9
Definition spi.h:50
@ VSF_SPI_DATASIZE_18
Definition spi.h:59
@ VSF_SPI_DATASIZE_11
Definition spi.h:52
@ VSF_SPI_DATASIZE_20
Definition spi.h:61
@ VSF_SPI_DATASIZE_21
Definition spi.h:62
@ VSF_SPI_DATASIZE_27
Definition spi.h:68
@ VSF_SPI_DATASIZE_14
Definition spi.h:55
@ VSF_SPI_DATASIZE_26
Definition spi.h:67
@ VSF_SPI_DATASIZE_13
Definition spi.h:54
@ VSF_SPI_DATASIZE_7
Definition spi.h:104
@ VSF_SPI_DATASIZE_5
Definition spi.h:102
@ VSF_SPI_DATASIZE_12
Definition spi.h:53
@ VSF_SPI_DATASIZE_22
Definition spi.h:63
@ VSF_SPI_DATASIZE_24
Definition spi.h:65
@ VSF_SPI_DATASIZE_4
datasize is 8 bits
Definition spi.h:101
@ VSF_SPI_DATASIZE_29
Definition spi.h:70
@ VSF_SPI_DATASIZE_25
Definition spi.h:66
@ VSF_SPI_DATASIZE_30
Definition spi.h:71
@ VSF_SPI_DATASIZE_19
Definition spi.h:60
@ VSF_SPI_DATASIZE_23
Definition spi.h:64
@ VSF_SPI_DATASIZE_10
Definition spi.h:51
@ VSF_SPI_DATASIZE_15
Definition spi.h:56
#define VSF_SPI_CPOL_HIGH
Definition spi.h:123
vsf_spi_irq_mask_t
Definition spi.h:159
#define VSF_SPI_TI_MODE
Definition spi.h:95
#define VSF_SPI_CPHA_HIGH
Definition spi.h:128
#define VSF_SPI_DATALINE_2_LINE_FULL_DUPLEX
Definition spi.h:110
@ VSF_SPI_CRC_ENABLED
Definition spi.h:116
@ VSF_SPI_CRC_DISABLED
Definition spi.h:115
#define VSF_SPI_DATALINE_1_LINE_HALF_DUPLEX
Definition spi.h:112
#define VSF_SPI_DATALINE_2_LINE_RX_ONLY
Definition spi.h:111
#define VSF_SPI_CPHA_LOW
Definition spi.h:126
#define VSF_SPI_CPOL_LOW
Definition spi.h:121
#define VSF_SPI_MOTOROLA_MODE
Definition spi.h:94
#define VSF_SPI_MOTOROLA_TI_MASK
Definition spi.h:96
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:204
Definition vsf_template_hal_driver.h:197
Predefined VSF SPI capability that can be reimplemented in specific HAL drivers. Even if the hardware...
Definition vsf_template_spi.h:739
uint8_t support_software_cs
Hardware chip select support (1: supported, 0: not supported)
Definition vsf_template_spi.h:746
uint32_t max_clock_hz
Number of available chip select lines (0-63)
Definition vsf_template_spi.h:749
uint8_t cs_count
Software chip select support (1: supported, 0: not supported)
Definition vsf_template_spi.h:747
vsf_spi_irq_mask_t irq_mask
Definition spi.h:137
uint8_t support_hardware_cs
Supported interrupt masks for SPI operations.
Definition vsf_template_spi.h:745
uint32_t min_clock_hz
Maximum supported SPI clock frequency in Hz.
Definition vsf_template_spi.h:750
inherit(vsf_peripheral_capability_t) vsf_spi_irq_mask_t irq_mask
Inherit peripheral capabilities.
Configuration structure for SPI.
Definition vsf_template_spi.h:797
uint32_t clock_hz
SPI operating mode (master/slave, CPOL/CPHA, bit order, data size)
Definition vsf_template_spi.h:799
vsf_spi_isr_t isr
SPI clock frequency in Hz (must be between min_clock_hz and max_clock_hz)
Definition vsf_template_spi.h:800
vsf_spi_mode_t mode
Definition vsf_template_spi.h:798
uint8_t auto_cs_index
Interrupt configuration (handler, target pointer, priority)
Definition vsf_template_spi.h:803
SPI interrupt service routine configuration structure.
Definition vsf_template_spi.h:785
vsf_spi_isr_handler_t * handler_fn
Definition vsf_template_spi.h:786
void * target_ptr
Interrupt handler function (NULL to disable interrupts)
Definition vsf_template_spi.h:787
vsf_arch_prio_t prio
User context pointer passed to handler.
Definition vsf_template_spi.h:788
SPI operation function pointer type, used for SPI Multi Class support.
Definition vsf_template_spi.h:1115
Predefined VSF SPI status that can be reimplemented in specific HAL drivers. Even if the hardware doe...
Definition vsf_template_spi.h:719
uint32_t is_busy
Definition spi.h:127
SPI instance structure, used for SPI Multi Class support, not needed in non Multi Class mode.
Definition vsf_template_spi.h:1131
const vsf_spi_op_t * op
Definition vsf_template_spi.h:1132
void vsf_spi_isr_handler_t(void *target_ptr, vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
Definition spi.h:189
vsf_spi_irq_mask_t
Definition spi.h:148
vsf_spi_mode_t
Definition spi.h:119
#define VSF_SPI_DATASIZE_BIT_OFFSET
Definition spi.h:224
#define VSF_SPI_DATASIZE_VALUE_OFFSET
Definition spi.h:227
fsm_rt_t
Definition vsf_fsm.h:315
vsf_spi_t vsf_spi[SPI_COUNT]
Definition vsf_spi.c:3
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:137
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:774
@ VSF_SPI_MODE_MASK
SPI mode mask for clock polarity and phase configuration.
Definition vsf_template_spi.h:564
@ VSF_SPI_BIT_ORDER_MASK
SPI bit order mask for MSB/LSB first selection.
Definition vsf_template_spi.h:553
@ VSF_SPI_DIR_MODE_MASK
SPI direction mode mask for master/slave selection.
Definition vsf_template_spi.h:542
@ VSF_SPI_CS_MODE_MASK
Definition vsf_template_spi.h:574
@ VSF_SPI_MODE_ALL_BITS_MASK
Definition vsf_template_spi.h:601
@ VSF_SPI_DATASIZE_MASK
Definition vsf_template_spi.h:591
vsf_spi_status_t vsf_spi_status(vsf_spi_t *spi_ptr)
Get the current status of a SPI instance.
Definition spi_common.c:110
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:149
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...
#define VSF_SPI_APIS(__prefix_name)
SPI API template, used to generate SPI type, specific prefix function declarations,...
Definition vsf_template_spi.h:273
vsf_err_t vsf_spi_get_configuration(vsf_spi_t *spi_ptr, vsf_spi_cfg_t *cfg_ptr)
Get current configuration of a SPI instance.
Definition spi_common.c:55
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:169
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:119
vsf_spi_irq_mask_t
Predefined VSF SPI interrupt masks that can be reimplemented in specific HAL drivers....
Definition vsf_template_spi.h:633
@ VSF_SPI_IRQ_MASK_RX_OVERFLOW_ERR
RX complete interrupt (triggers when RX transfer is complete)
Definition vsf_template_spi.h:638
@ VSF_SPI_IRQ_MASK_RX_CPL
TX complete interrupt (triggers when all TX data has been sent)
Definition vsf_template_spi.h:637
@ VSF_SPI_IRQ_MASK_RX
TX FIFO threshold interrupt (triggers when TX FIFO level is below threshold)
Definition vsf_template_spi.h:635
@ VSF_SPI_IRQ_MASK_TX
Definition vsf_template_spi.h:634
@ VSF_SPI_IRQ_MASK_TX_CPL
RX FIFO threshold interrupt (triggers when RX FIFO level is above threshold)
Definition vsf_template_spi.h:636
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:188
fsm_rt_t vsf_spi_enable(vsf_spi_t *spi_ptr)
Enable a SPI instance for operation.
Definition spi_common.c:65
vsf_spi_irq_mask_t vsf_spi_irq_clear(vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
Clear interrupt flags of SPI instance and return previous state.
Definition spi_common.c:101
fsm_rt_t vsf_spi_disable(vsf_spi_t *spi_ptr)
Disable a SPI instance from operation.
Definition spi_common.c:74
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.
Definition vsf_template_spi.h:359
@ VSF_SPI_SLAVE
Master mode (controller)
Definition vsf_template_spi.h:362
@ VSF_SPI_DATASIZE_16
8-bit data transfer size (requires 1-byte buffer)
Definition vsf_template_spi.h:386
@ VSF_SPI_LSB_FIRST
Most Significant Bit (MSB) first.
Definition vsf_template_spi.h:366
@ VSF_SPI_MODE_1
Mode 0: CPOL=0 (idle low), CPHA=0 (sample on first edge)
Definition vsf_template_spi.h:370
@ VSF_SPI_DATASIZE_8
Definition vsf_template_spi.h:385
@ VSF_SPI_MASTER
Definition vsf_template_spi.h:361
@ VSF_SPI_MSB_FIRST
Slave mode (peripheral)
Definition vsf_template_spi.h:365
@ VSF_SPI_DATASIZE_32
16-bit data transfer size (requires 2-byte buffer)
Definition vsf_template_spi.h:387
@ VSF_SPI_CS_SOFTWARE_MODE
Mode 3: CPOL=1 (idle high), CPHA=1 (sample on second edge)
Definition vsf_template_spi.h:377
@ VSF_SPI_MODE_0
Least Significant Bit (LSB) first.
Definition vsf_template_spi.h:369
@ VSF_SPI_CS_HARDWARE_MODE
Definition vsf_template_spi.h:380
@ VSF_SPI_MODE_3
Mode 2: CPOL=1 (idle high), CPHA=0 (sample on first edge)
Definition vsf_template_spi.h:372
@ VSF_SPI_MODE_2
Mode 1: CPOL=0 (idle low), CPHA=1 (sample on second edge)
Definition vsf_template_spi.h:371
@ VSF_SPI_IRQ_MASK_CPL
Alias for VSF_SPI_IRQ_MASK_RX.
Definition vsf_template_spi.h:684
@ VSF_SPI_IRQ_MASK_TX_FIFO_THRESHOLD
Definition vsf_template_spi.h:677
@ VSF_SPI_IRQ_ALL_BITS_MASK
Definition vsf_template_spi.h:700
@ VSF_SPI_IRQ_MASK_RX_FIFO_THRESHOLD
Alias for VSF_SPI_IRQ_MASK_TX.
Definition vsf_template_spi.h:678
@ VSF_SPI_IRQ_MASK_ERR
Definition vsf_template_spi.h:691
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:92
vsf_spi_ctrl_t
Predefined VSF SPI control commands that can be reimplemented in specific HAL drivers.
Definition vsf_template_spi.h:842
@ __VSF_SPI_CTRL_DUMMY
Dummy value for compilation, required when no actual control commands are defined.
Definition vsf_template_spi.h:860
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:83
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:128
vsf_err_t vsf_spi_cancel_transfer(vsf_spi_t *spi_ptr)
Cancel an ongoing SPI transfer operation.
Definition spi_common.c:160
vsf_spi_capability_t vsf_spi_capability(vsf_spi_t *spi_ptr)
Get the capabilities of a SPI instance.
Definition spi_common.c:179