VSF Documented
Macros | Functions
spi_common.c File Reference
#include "hal/driver/driver.h"

Macros

#define VSF_SPI_CFG_FUNCTION_RENAME   DISABLED
 

Functions

vsf_err_t vsf_spi_init (vsf_spi_t *spi_ptr, vsf_spi_cfg_t *cfg_ptr)
 Initialize a SPI instance.
 
void vsf_spi_fini (vsf_spi_t *spi_ptr)
 Finalize (deinitialize) a SPI instance.
 
fsm_rt_t vsf_spi_enable (vsf_spi_t *spi_ptr)
 Enable a SPI instance for operation.
 
fsm_rt_t vsf_spi_disable (vsf_spi_t *spi_ptr)
 Disable a SPI instance from operation.
 
void vsf_spi_irq_enable (vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
 Enable specific interrupts for a SPI instance.
 
void vsf_spi_irq_disable (vsf_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask)
 Disable specific interrupts for a SPI instance.
 
vsf_spi_status_t vsf_spi_status (vsf_spi_t *spi_ptr)
 Get the current status of a SPI instance.
 
vsf_err_t vsf_spi_cs_active (vsf_spi_t *spi_ptr, uint_fast8_t index)
 Activate (assert) a SPI chip select line.
 
vsf_err_t vsf_spi_cs_inactive (vsf_spi_t *spi_ptr, uint_fast8_t index)
 Deactivate (deassert) a SPI chip select line.
 
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 cnt)
 Perform FIFO-based data transfer on a SPI instance.
 
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.
 
vsf_err_t vsf_spi_cancel_transfer (vsf_spi_t *spi_ptr)
 Cancel an ongoing SPI transfer operation.
 
void vsf_spi_get_transferred_count (vsf_spi_t *spi_ptr, uint_fast32_t *tx_count, uint_fast32_t *rx_count)
 Get the number of data units transferred in the current or last SPI operation.
 
vsf_spi_capability_t vsf_spi_capability (vsf_spi_t *spi_ptr)
 Get the capabilities of a SPI instance.
 
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.
 

Macro Definition Documentation

◆ VSF_SPI_CFG_FUNCTION_RENAME

#define VSF_SPI_CFG_FUNCTION_RENAME   DISABLED

Function Documentation

◆ vsf_spi_init()

vsf_err_t vsf_spi_init ( vsf_spi_t spi_ptr,
vsf_spi_cfg_t cfg_ptr 
)

Initialize a SPI instance.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]cfg_ptrPointer to SPI configuration structure vsf_spi_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if initialization successful, otherwise returns error code
Note
The configuration includes clock settings, transfer modes, and interrupt handlers
This must be called before any other SPI operations except for vsf_spi_capability()

◆ vsf_spi_fini()

void vsf_spi_fini ( vsf_spi_t spi_ptr)

Finalize (deinitialize) a SPI instance.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
Note
This function should be called when the SPI instance is no longer needed
Ensure all transfers are complete before calling this function

◆ vsf_spi_enable()

fsm_rt_t vsf_spi_enable ( vsf_spi_t spi_ptr)

Enable a SPI instance for operation.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
Returns
fsm_rt_t: fsm_rt_cpl if SPI was enabled immediately, fsm_rt_on_going if enabling is in progress
Note
The instance must be initialized before enabling

◆ vsf_spi_disable()

fsm_rt_t vsf_spi_disable ( vsf_spi_t spi_ptr)

Disable a SPI instance from operation.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
Returns
fsm_rt_t: fsm_rt_cpl if SPI was disabled immediately, fsm_rt_on_going if disabling is in progress
Note
Any ongoing transfers should be completed or cancelled before disabling

◆ vsf_spi_irq_enable()

void vsf_spi_irq_enable ( vsf_spi_t spi_ptr,
vsf_spi_irq_mask_t  irq_mask 
)

Enable specific interrupts for a SPI instance.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]irq_maskInterrupt mask(s) to enable from vsf_spi_irq_mask_t
Note
Clear any pending interrupts before enabling new ones
Multiple interrupts can be enabled by OR-ing the masks

◆ vsf_spi_irq_disable()

void vsf_spi_irq_disable ( vsf_spi_t spi_ptr,
vsf_spi_irq_mask_t  irq_mask 
)

Disable specific interrupts for a SPI instance.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]irq_maskInterrupt mask(s) to disable from vsf_spi_irq_mask_t
Note
Multiple interrupts can be disabled by OR-ing the masks

◆ vsf_spi_status()

vsf_spi_status_t vsf_spi_status ( vsf_spi_t spi_ptr)

Get the current status of a SPI instance.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
Returns
vsf_spi_status_t: Current status flags of the SPI instance
Note
Status includes busy flag and other peripheral status information

◆ vsf_spi_cs_active()

vsf_err_t vsf_spi_cs_active ( vsf_spi_t spi_ptr,
uint_fast8_t  index 
)

Activate (assert) a SPI chip select line.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]indexChip select line index (0 to cs_count-1)
Returns
vsf_err_t: VSF_ERR_NONE if successful, otherwise returns error code
Note
Hardware chip select support must be available if using hardware mode

◆ vsf_spi_cs_inactive()

vsf_err_t vsf_spi_cs_inactive ( vsf_spi_t spi_ptr,
uint_fast8_t  index 
)

Deactivate (deassert) a SPI chip select line.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]indexChip select line index (0 to cs_count-1)
Returns
vsf_err_t: VSF_ERR_NONE if successful, otherwise returns error code
Note
Hardware chip select support must be available if using hardware mode

◆ vsf_spi_fifo_transfer()

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.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]out_buffer_ptrPointer to transmit data buffer (can be NULL for receive-only)
[in,out]out_offset_ptrPointer to transmit buffer offset
[out]in_buffer_ptrPointer to receive data buffer (can be NULL for transmit-only)
[in,out]in_offset_ptrPointer to receive buffer offset
[in]countNumber of data units to transfer
Note
Data unit size is determined by the configured data size in SPI mode
In master mode, out_buffer_ptr data is sent through MOSI pin, in_buffer_ptr receives from MISO pin
In slave mode, out_buffer_ptr data is sent through MISO pin, in_buffer_ptr receives from MOSI pin

◆ vsf_spi_request_transfer()

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.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]out_buffer_ptrPointer to output data buffer (NULL for receive-only)
[in]in_buffer_ptrPointer to input data buffer (NULL for transmit-only)
[in]countNumber of data units to transfer
Returns
vsf_err_t: VSF_ERR_NONE if transfer started successfully, or error code
Note
This is an asynchronous operation, register for completion interrupts to be notified
If both out_buffer_ptr and in_buffer_ptr are not NULL, data is exchanged in full-duplex mode
In master mode, out_buffer_ptr data is sent through MOSI pin, in_buffer_ptr receives from MISO pin
In slave mode, out_buffer_ptr data is sent through MISO pin, in_buffer_ptr receives from MOSI pin

◆ vsf_spi_cancel_transfer()

vsf_err_t vsf_spi_cancel_transfer ( vsf_spi_t spi_ptr)

Cancel an ongoing SPI transfer operation.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
Returns
vsf_err_t: VSF_ERR_NONE if cancellation was successful, or error code
Note
SPI hardware may not be able to cancel immediately if busy

◆ vsf_spi_get_transferred_count()

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.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[out]sent_countPointer to store the number of data units transmitted (can be NULL if not needed)
[out]received_countPointer to store the number of data units received (can be NULL if not needed)
Note
Data unit count is based on the configured data size (e.g., for 16-bit data size, count is in 16-bit units)
For ongoing transfers, returns the current progress; for completed transfers, returns final counts

◆ vsf_spi_capability()

vsf_spi_capability_t vsf_spi_capability ( vsf_spi_t spi_ptr)

Get the capabilities of a SPI instance.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
Returns
vsf_spi_capability_t: Hardware capabilities of the SPI instance
Note
Capabilities include supported features, modes, and limitations

◆ vsf_spi_ctrl()

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.

Parameters
[in,out]spi_ptrPointer to SPI instance structure vsf_spi_t
[in]ctrlControl command from vsf_spi_ctrl_t enumeration
[in]paramCommand-specific parameter (can be NULL depending on command)
Returns
vsf_err_t: VSF_ERR_NONE if command executed successfully, VSF_ERR_NOT_SUPPORT if command is not supported, other negative error codes for specific failures
Note
Available commands and their parameters are hardware-dependent
Some commands may not be supported on all hardware platforms
Generated from commit: vsfteam/vsf@2b286be