![]() |
RZ/A Flexible Software Package Documentation
Release v3.6.0
|
|
Interface for SPI communications.
Provides a common interface for communication using the SPI Protocol.
Data Structures | |
| struct | spi_callback_args_t |
| struct | spi_write_read_guard_args_t |
| struct | spi_cfg_t |
| struct | spi_api_t |
| struct | spi_instance_t |
Typedefs | |
| typedef void | spi_ctrl_t |
Enumerations | |
| enum | spi_bit_width_t |
| enum | spi_mode_t |
| enum | spi_clk_phase_t |
| enum | spi_clk_polarity_t |
| enum | spi_mode_fault_t |
| enum | spi_bit_order_t |
| enum | spi_event_t |
| struct spi_callback_args_t |
Common callback parameter definition
| Data Fields | ||
|---|---|---|
| uint32_t | channel | Device channel number. |
| spi_event_t | event | Event code. |
| void const * | p_context | Context provided to user during callback. |
| struct spi_write_read_guard_args_t |
Non-secure arguments for write-read guard function
| struct spi_cfg_t |
SPI interface configuration
Data Fields | |
| uint8_t | channel |
| Channel number to be used. | |
| IRQn_Type | rxi_irq |
| Receive Buffer Full IRQ number. | |
| IRQn_Type | txi_irq |
| Transmit Buffer Empty IRQ number. | |
| IRQn_Type | tei_irq |
| Transfer Complete IRQ number. | |
| IRQn_Type | eri_irq |
| Error IRQ number. | |
| uint8_t | rxi_ipl |
| Receive Interrupt priority. | |
| uint8_t | txi_ipl |
| Transmit Interrupt priority. | |
| uint8_t | tei_ipl |
| Transfer Complete Interrupt priority. | |
| uint8_t | eri_ipl |
| Error Interrupt priority. | |
| spi_mode_t | operating_mode |
| Select master or slave operating mode. | |
| spi_clk_phase_t | clk_phase |
| Data sampling on odd or even clock edge. | |
| spi_clk_polarity_t | clk_polarity |
| Clock level when idle. | |
| spi_mode_fault_t | mode_fault |
| Mode fault error (master/slave conflict) flag. | |
| spi_bit_order_t | bit_order |
| Select to transmit MSB/LSB first. | |
| transfer_instance_t const * | p_transfer_tx |
| To use SPI DTC/DMAC write transfer, link a transfer instance here. Set to NULL if unused. | |
| transfer_instance_t const * | p_transfer_rx |
| To use SPI DTC/DMAC read transfer, link a transfer instance here. Set to NULL if unused. | |
| void(* | p_callback )(spi_callback_args_t *p_args) |
| Pointer to user callback function. | |
| void const * | p_context |
| User defined context passed to callback function. | |
| void const * | p_extend |
| Extended SPI hardware dependent configuration. | |
| struct spi_api_t |
Shared Interface definition for SPI
Data Fields | |
| fsp_err_t(* | open )(spi_ctrl_t *p_ctrl, spi_cfg_t const *const p_cfg) |
| fsp_err_t(* | read )(spi_ctrl_t *const p_ctrl, void *p_dest, uint32_t const length, spi_bit_width_t const bit_width) |
| fsp_err_t(* | write )(spi_ctrl_t *const p_ctrl, void const *p_src, uint32_t const length, spi_bit_width_t const bit_width) |
| fsp_err_t(* | writeRead )(spi_ctrl_t *const p_ctrl, void const *p_src, void *p_dest, uint32_t const length, spi_bit_width_t const bit_width) |
| fsp_err_t(* | callbackSet )(spi_ctrl_t *const p_ctrl, void(*p_callback)(spi_callback_args_t *), void const *const p_context, spi_callback_args_t *const p_callback_memory) |
| fsp_err_t(* | close )(spi_ctrl_t *const p_ctrl) |
| fsp_err_t(* spi_api_t::open) (spi_ctrl_t *p_ctrl, spi_cfg_t const *const p_cfg) |
Initialize a channel for SPI communication mode.
| [in,out] | p_ctrl | Pointer to user-provided storage for the control block. |
| [in] | p_cfg | Pointer to SPI configuration structure. |
| fsp_err_t(* spi_api_t::read) (spi_ctrl_t *const p_ctrl, void *p_dest, uint32_t const length, spi_bit_width_t const bit_width) |
Receive data from a SPI device.
| [in] | p_ctrl | Pointer to the control block for the channel. |
| [out] | p_dest | Pointer to destination buffer into which data will be copied that is received from a SPI device. It is the responsibility of the caller to ensure that adequate space is available to hold the requested data count. |
| [in] | length | Number of units of data to be transferred (unit size specified by the bit_width). |
| [in] | bit_width | Data bit width to be transferred. |
| fsp_err_t(* spi_api_t::write) (spi_ctrl_t *const p_ctrl, void const *p_src, uint32_t const length, spi_bit_width_t const bit_width) |
Transmit data to a SPI device.
| [in] | p_ctrl | Pointer to the control block for the channel. |
| [in] | p_src | Pointer to a source data buffer from which data will be transmitted to a SPI device. The argument must not be NULL. |
| [in] | length | Number of units of data to be transferred (unit size specified by the bit_width). |
| [in] | bit_width | Data bit width to be transferred. |
| fsp_err_t(* spi_api_t::writeRead) (spi_ctrl_t *const p_ctrl, void const *p_src, void *p_dest, uint32_t const length, spi_bit_width_t const bit_width) |
Simultaneously transmit data to a SPI device while receiving data from a SPI device (full duplex).
| [in] | p_ctrl | Pointer to the control block for the channel. |
| [in] | p_src | Pointer to a source data buffer from which data will be transmitted to a SPI device. The argument must not be NULL. |
| [out] | p_dest | Pointer to destination buffer into which data will be copied that is received from a SPI device. It is the responsibility of the caller to ensure that adequate space is available to hold the requested data count. The argument must not be NULL. |
| [in] | length | Number of units of data to be transferred (unit size specified by the bit_width). |
| [in] | bit_width | Data bit width to be transferred. |
| fsp_err_t(* spi_api_t::callbackSet) (spi_ctrl_t *const p_ctrl, void(*p_callback)(spi_callback_args_t *), void const *const p_context, spi_callback_args_t *const p_callback_memory) |
Specify callback function and optional context pointer and working memory pointer.
| [in] | p_ctrl | Pointer to the SPI control block. |
| [in] | p_callback | Callback function |
| [in] | p_context | Pointer to send to callback function |
| [in] | p_working_memory | Pointer to volatile memory where callback structure can be allocated. Callback arguments allocated here are only valid during the callback. |
| fsp_err_t(* spi_api_t::close) (spi_ctrl_t *const p_ctrl) |
Remove power to the SPI channel designated by the handle and disable the associated interrupts.
| [in] | p_ctrl | Pointer to the control block for the channel. |
| struct spi_instance_t |
This structure encompasses everything that is needed to use an instance of this interface.
| Data Fields | ||
|---|---|---|
| spi_ctrl_t * | p_ctrl | Pointer to the control structure for this instance. |
| spi_cfg_t const * | p_cfg | Pointer to the configuration structure for this instance. |
| spi_api_t const * | p_api | Pointer to the API structure for this instance. |
| typedef void spi_ctrl_t |
SPI control block. Allocate an instance specific control block to pass into the SPI API calls.
| enum spi_bit_width_t |
Data bit width
| enum spi_mode_t |
| enum spi_clk_phase_t |
| enum spi_clk_polarity_t |
| enum spi_mode_fault_t |
Mode fault error flag. This error occurs when the device is setup as a master, but the SSLA line does not seem to be controlled by the master. This usually happens when the connecting device is also acting as master. A similar situation can also happen when configured as a slave.
| Enumerator | |
|---|---|
| SPI_MODE_FAULT_ERROR_ENABLE | Mode fault error flag on. |
| SPI_MODE_FAULT_ERROR_DISABLE | Mode fault error flag off. |
| enum spi_bit_order_t |
| enum spi_event_t |
SPI events