This section describes the programming interface of the SPI driver.
|
enum | spi_frame_format_select_t {
kSPI_FrameFormatSPI = 0U,
kSPI_FrameFormatTI = 1U,
kSPI_FrameFormatMicroWire = 2U
} |
| Macro for baud rate setting if baud rate auto generate function was disabled. More...
|
|
enum | spi_clock_polarity_t {
kSPI_ClockPolarityActiveHigh = 0x0U,
kSPI_ClockPolarityActiveLow = 0x1U
} |
| SPI clock polarity configuration. More...
|
|
enum | spi_clock_phase_t {
kSPI_ClockPhaseFirstEdge,
kSPI_ClockPhaseSecondEdge
} |
| SPI clock phase configuration. More...
|
|
enum | _spi_status {
kStatus_SPI_Busy = MAKE_STATUS(kStatusGroup_LPC_SPI_SSP, 0),
kStatus_SPI_Idle = MAKE_STATUS(kStatusGroup_LPC_SPI_SSP, 1),
kStatus_SPI_ReceiveHardwareOverRun,
kStatus_SPI_ReceiveTimeOut = MAKE_STATUS(kStatusGroup_LPC_SPI_SSP, 3),
kStatus_SPI_BaudrateNotSupport
} |
| SPI transfer status. More...
|
|
enum | _spi_interrupt_enable {
kSPI_RxOverRunInterruptEnable = SPI0_IMSC_RORIM_MASK,
kSPI_RxTimeOutInterruptEnable = SPI0_IMSC_RTIM_MASK,
kSPI_RxFifoHalfFullInterruptEnable = SPI0_IMSC_RXIM_MASK,
kSPI_TxFifoHalfEmptyInterruptEnable = SPI0_IMSC_TXIM_MASK
} |
| SPI interrupt sources. More...
|
|
enum | _spi_status_flags {
kSPI_TxFifoEmptyFlag = SPI0_SR_TFE_MASK,
kSPI_TxFifoNotFullFlag = SPI0_SR_TNF_MASK,
kSPI_RxFifoNotEmptyFlag = SPI0_SR_RNE_MASK,
kSPI_RxFifoFullFlag = SPI0_SR_RFF_MASK,
kSPI_BusyFlag = SPI0_SR_BSY_MASK,
kSPI_RxOverRunFlag = SPI0_RIS_RORRIS_MASK << 8U,
kSPI_RxTimeOutFlag = SPI0_RIS_RTRIS_MASK << 8U,
kSPI_RxFifoHalfFullFlag = SPI0_RIS_RXRIS_MASK << 8U,
kSPI_TxFifoHalfEmptyFlag = SPI0_RIS_TXRIS_MASK << 8U
} |
| SPI status flags. More...
|
|
enum | _spi_interrupt_status_flags {
kSPI_RxOverRunInterruptFlag = SPI0_MIS_RORMIS_MASK,
kSPI_RxTimeOutInterruptFlag = SPI0_MIS_RTMIS_MASK,
kSPI_RxFifoHalfFullInterruptFlag = SPI0_MIS_RXMIS_MASK,
kSPI_TxFifoHalfEmptyInterruptFlag = SPI0_MIS_TXMIS_MASK
} |
| SPI status flags. More...
|
|
|
status_t | SPI_MasterTransferCreateHandle (SPI0_Type *base, spi_master_handle_t *handle, spi_master_callback_t callback, void *userData) |
| Initializes the SPI master handle. More...
|
|
status_t | SPI_MasterTransferNonBlocking (SPI0_Type *base, spi_master_handle_t *handle, spi_transfer_t *xfer) |
| Performs a non-blocking SPI interrupt transfer. More...
|
|
status_t | SPI_MasterTransferGetCount (SPI0_Type *base, spi_master_handle_t *handle, size_t *count) |
| Gets the master transfer count. More...
|
|
void | SPI_MasterTransferAbort (SPI0_Type *base, spi_master_handle_t *handle) |
| SPI master aborts a transfer using an interrupt. More...
|
|
status_t | SPI_SlaveTransferCreateHandle (SPI0_Type *base, spi_slave_handle_t *handle, spi_slave_callback_t callback, void *userData) |
| Initializes the SPI slave handle. More...
|
|
status_t | SPI_SlaveTransferNonBlocking (SPI0_Type *base, spi_slave_handle_t *handle, spi_transfer_t *xfer) |
| Performs a non-blocking SPI slave interrupt transfer. More...
|
|
static status_t | SPI_SlaveTransferGetCount (SPI0_Type *base, spi_slave_handle_t *handle, size_t *count) |
| Gets the slave transfer count. More...
|
|
static void | SPI_SlaveTransferAbort (SPI0_Type *base, spi_slave_handle_t *handle) |
| SPI slave aborts a transfer using an interrupt. More...
|
|
void | SPI_TransferHandleIRQ (SPI0_Type *base, spi_slave_handle_t *handle) |
| Interrupts a handler for the SPI slave. More...
|
|
struct spi_master_config_t |
struct spi_slave_config_t |
bool spi_slave_config_t::enableOutput |
Data Fields |
uint8_t * | txData |
| Send buffer.
|
|
uint8_t * | rxData |
| Receive buffer.
|
|
size_t | dataSize |
| Transfer bytes.
|
|
struct _spi_master_handle |
uint8_t spi_master_handle_t::dataWidth |
#define FSL_SDK_SPI_DRIVER_ENABLE_TRANSACTIONAL_API 1 |
#define FSL_SDK_SPI_DRIVER_ENABLE_BAUDRATE_AUTO_GENERATE 1 |
Formula for baud rate : baudRate = SpiClockSource_Hz/ (CPSDVSR * (SCR +1)).
Common value for use: | SPI baud rate(Hz) | SPI clock frequency(Hz) | CPSDVSR | SCR | 1000000 | 8000000 | 2 | 3 | 1000000 | 2000000 | 2 | 0 | 500000 | 8000000 | 2 | 7 | 500000 | 2000000 | 2 | 1 | 100000 | 8000000 | 4 | 19 | 100000 | 2000000 | 2 | 9 |
SPI data size select options.
Enumerator |
---|
kSPI_FrameFormatSPI |
Transfer frame format using SPI mode.
|
kSPI_FrameFormatTI |
Transfer frame format using TI mode.
|
kSPI_FrameFormatMicroWire |
Transfer frame format using microwire mode.
|
Enumerator |
---|
kSPI_ClockPolarityActiveHigh |
Active-high SPI clock (idles low).
|
kSPI_ClockPolarityActiveLow |
Active-low SPI clock (idles high).
|
Enumerator |
---|
kSPI_ClockPhaseFirstEdge |
SPI controller captures serial data on the first clock transition of the frame.
|
kSPI_ClockPhaseSecondEdge |
SPI controller captures serial data on the second clock transition of the frame.
|
Enumerator |
---|
kStatus_SPI_Busy |
SPI bus is busy.
|
kStatus_SPI_Idle |
SPI is idle.
|
kStatus_SPI_ReceiveHardwareOverRun |
SPI receive hardware overrun occurred.
|
kStatus_SPI_ReceiveTimeOut |
SPI receive time-out occurred.
|
kStatus_SPI_BaudrateNotSupport |
Baudrate is not support in current clock source.
|
Enumerator |
---|
kSPI_RxOverRunInterruptEnable |
Rx overrun interrupt.
|
kSPI_RxTimeOutInterruptEnable |
Rx time-out interrupt.
|
kSPI_RxFifoHalfFullInterruptEnable |
Rx FIFO half full interrupt.
|
kSPI_TxFifoHalfEmptyInterruptEnable |
Tx FIFO half Empty interrupt.
|
Enumerator |
---|
kSPI_TxFifoEmptyFlag |
TX FIFO empty flag.
|
kSPI_TxFifoNotFullFlag |
TX FIFO not full flag.
|
kSPI_RxFifoNotEmptyFlag |
RX FIFO not empty flag.
|
kSPI_RxFifoFullFlag |
RX FIFO full flag.
|
kSPI_BusyFlag |
SPI busy flag.
|
kSPI_RxOverRunFlag |
Rx overrun flag.
|
kSPI_RxTimeOutFlag |
Rx time-out flag.
|
kSPI_RxFifoHalfFullFlag |
RX FIFO at least half full flag.
|
kSPI_TxFifoHalfEmptyFlag |
TX FIFO at least half empty flag.
|
Enumerator |
---|
kSPI_RxOverRunInterruptFlag |
Rx overrun interrupt flag.
|
kSPI_RxTimeOutInterruptFlag |
Rx time-out interrupt flag.
|
kSPI_RxFifoHalfFullInterruptFlag |
RX FIFO at least half full interrupt flag.
|
kSPI_TxFifoHalfEmptyInterruptFlag |
TX FIFO at least half empty interrupt flag.
|
The purpose of this API is to get the configuration structure initialized for use in SPI_MasterInit(). User may use the initialized structure unchanged in SPI_MasterInit(), or modify some fields of the structure before calling SPI_MasterInit(). After calling this API, the master is ready to transfer. Example:
- Parameters
-
config | pointer to master config structure |
The configuration structure can be filled by user from scratch, or be set with default values by SPI_MasterGetDefaultConfig(). After calling this API, the slave is ready to transfer. Please note that: Current transfer APIs are for SPI format mode, for TI and Micro Wire mode, please use low level API to adapt the real application. Example
- Parameters
-
base | SPI base pointer |
config | pointer to master configuration structure |
srcClock_Hz | Source clock frequency. |
The purpose of this API is to get the configuration structure initialized for use in SPI_SlaveInit(). Modify some fields of the structure before calling SPI_SlaveInit(). Example:
- Parameters
-
config | pointer to slave configuration structure |
The configuration structure can be filled by user from scratch or be set with default values by SPI_SlaveGetDefaultConfig(). After calling this API, the slave is ready to transfer. Example
- Parameters
-
base | SPI base pointer |
config | pointer to slave configuration structure |
void SPI_Deinit |
( |
SPI0_Type * |
base | ) |
|
Calling this API resets the SPI module, gates the SPI clock.
The SPI module can't work unless calling the SPI_MasterInit/SPI_SlaveInit to initialize module.
- Parameters
-
static void SPI_Enable |
( |
SPI0_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPI base pointer |
enable | or disable ( true = enable, false = disable) |
static uint32_t SPI_GetStatusFlags |
( |
SPI0_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- SPI Status, use status flag to AND _spi_status_flags could get the related status.
static uint32_t SPI_GetInterruptStatusFlags |
( |
SPI0_Type * |
base | ) |
|
|
inlinestatic |
When an SPI interrupt occurs, the interrupt service routine should read this register to determine the cause or causes of the interrupt.
- Parameters
-
- Returns
- SPI Status, use status flag to AND _spi_interrupt_status_flags could get the related status.
static void SPI_ClearInterruptStatusFlags |
( |
SPI0_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
Clear the interrupt status flags setting by hardware.Please note that: only RORIC and RTIC can be cleared by software.
- Parameters
-
static void SPI_EnableInterrupts |
( |
SPI0_Type * |
base, |
|
|
uint32_t |
irqs |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPI base pointer |
irqs | SPI interrupt source. The parameter can be any combination of the following values:
- kSPI_RxFifoHalfFullInterruptEnable
- kSPI_TxFifoHalfEmptyInterruptEnable
|
static void SPI_DisableInterrupts |
( |
SPI0_Type * |
base, |
|
|
uint32_t |
irqs |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPI base pointer |
irqs | SPI interrupt source. The parameter can be any combination of the following values:
- kSPI_RxFifoHalfFullInterruptEnable
- kSPI_TxFifoHalfEmptyInterruptEnable
|
status_t SPI_MasterSetBaudRate |
( |
SPI0_Type * |
base, |
|
|
uint32_t |
baudrate_Bps, |
|
|
uint32_t |
srcClock_Hz |
|
) |
| |
This is only used in master.
- Parameters
-
base | SPI base pointer |
baudrate_Bps | baud rate needed in Hz. |
srcClock_Hz | SPI source clock frequency in Hz. |
static void SPI_WriteData |
( |
SPI0_Type * |
base, |
|
|
uint16_t |
data |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPI base pointer |
data | needs to be write. |
static uint16_t SPI_ReadData |
( |
SPI0_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in the register.
- Parameters
-
base | SPI base pointer |
xfer | pointer to spi_xfer_config_t structure |
- Return values
-
kStatus_Success | Successfully start a transfer. |
kStatus_InvalidArgument | Input argument is invalid. |
This function initializes the SPI master handle which can be used for other SPI master transactional APIs. Usually, for a specified SPI instance, call this API once to get the initialized handle.
- Parameters
-
base | SPI peripheral base address. |
handle | SPI handle pointer. |
callback | Callback function. |
userData | User data. |
status_t SPI_MasterTransferNonBlocking |
( |
SPI0_Type * |
base, |
|
|
spi_master_handle_t * |
handle, |
|
|
spi_transfer_t * |
xfer |
|
) |
| |
- Parameters
-
base | SPI peripheral base address. |
handle | pointer to spi_master_handle_t structure which stores the transfer state |
xfer | pointer to spi_xfer_config_t structure |
- Return values
-
kStatus_Success | Successfully start a transfer. |
kStatus_InvalidArgument | Input argument is invalid. |
kStatus_SPI_Busy | SPI is not idle, is running another transfer. |
status_t SPI_MasterTransferGetCount |
( |
SPI0_Type * |
base, |
|
|
spi_master_handle_t * |
handle, |
|
|
size_t * |
count |
|
) |
| |
This function gets the master transfer count.
- Parameters
-
base | SPI peripheral base address. |
handle | Pointer to the spi_master_handle_t structure which stores the transfer state. |
count | The number of bytes transferred by using the non-blocking transaction. |
- Returns
- status of status_t.
void SPI_MasterTransferAbort |
( |
SPI0_Type * |
base, |
|
|
spi_master_handle_t * |
handle |
|
) |
| |
This function aborts a transfer using an interrupt.
- Parameters
-
base | SPI peripheral base address. |
handle | Pointer to the spi_master_handle_t structure which stores the transfer state. |
This function initializes the SPI slave handle which can be used for other SPI slave transactional APIs. Usually, for a specified SPI instance, call this API once to get the initialized handle.
- Parameters
-
base | SPI peripheral base address. |
handle | SPI handle pointer. |
callback | Callback function. |
userData | User data. |
- Note
- The API returns immediately after the transfer initialization is finished.
- Parameters
-
base | SPI peripheral base address. |
handle | pointer to spi_master_handle_t structure which stores the transfer state |
xfer | pointer to spi_xfer_config_t structure |
- Return values
-
kStatus_Success | Successfully start a transfer. |
kStatus_InvalidArgument | Input argument is invalid. |
kStatus_SPI_Busy | SPI is not idle, is running another transfer. |
This function gets the slave transfer count.
- Parameters
-
base | SPI peripheral base address. |
handle | Pointer to the spi_master_handle_t structure which stores the transfer state. |
count | The number of bytes transferred by using the non-blocking transaction. |
- Returns
- status of status_t.
This function aborts a transfer using an interrupt.
- Parameters
-
base | SPI peripheral base address. |
handle | Pointer to the spi_slave_handle_t structure which stores the transfer state. |
- Parameters
-
base | SPI peripheral base address. |
handle | pointer to spi_slave_handle_t structure which stores the transfer state |