This section describes the programming interface of the SPI DMA driver.
|
enum | spi_xfer_option_t {
kSPI_FrameDelay = (SPI_FIFOWR_EOF_MASK),
kSPI_FrameAssert = (SPI_FIFOWR_EOT_MASK)
} |
| SPI transfer option. More...
|
|
enum | spi_shift_direction_t {
kSPI_MsbFirst = 0U,
kSPI_LsbFirst = 1U
} |
| SPI data shifter direction options. More...
|
|
enum | spi_clock_polarity_t {
kSPI_ClockPolarityActiveHigh = 0x0U,
kSPI_ClockPolarityActiveLow
} |
| SPI clock polarity configuration. More...
|
|
enum | spi_clock_phase_t {
kSPI_ClockPhaseFirstEdge = 0x0U,
kSPI_ClockPhaseSecondEdge
} |
| SPI clock phase configuration. More...
|
|
enum | spi_txfifo_watermark_t {
kSPI_TxFifo0 = 0,
kSPI_TxFifo1 = 1,
kSPI_TxFifo2 = 2,
kSPI_TxFifo3 = 3,
kSPI_TxFifo4 = 4,
kSPI_TxFifo5 = 5,
kSPI_TxFifo6 = 6,
kSPI_TxFifo7 = 7
} |
| txFIFO watermark values More...
|
|
enum | spi_rxfifo_watermark_t {
kSPI_RxFifo1 = 0,
kSPI_RxFifo2 = 1,
kSPI_RxFifo3 = 2,
kSPI_RxFifo4 = 3,
kSPI_RxFifo5 = 4,
kSPI_RxFifo6 = 5,
kSPI_RxFifo7 = 6,
kSPI_RxFifo8 = 7
} |
| rxFIFO watermark values More...
|
|
enum | spi_data_width_t {
kSPI_Data4Bits = 3,
kSPI_Data5Bits = 4,
kSPI_Data6Bits = 5,
kSPI_Data7Bits = 6,
kSPI_Data8Bits = 7,
kSPI_Data9Bits = 8,
kSPI_Data10Bits = 9,
kSPI_Data11Bits = 10,
kSPI_Data12Bits = 11,
kSPI_Data13Bits = 12,
kSPI_Data14Bits = 13,
kSPI_Data15Bits = 14,
kSPI_Data16Bits = 15
} |
| Transfer data width. More...
|
|
enum | spi_ssel_t {
kSPI_Ssel0 = 0,
kSPI_Ssel1 = 1,
kSPI_Ssel2 = 2,
kSPI_Ssel3 = 3
} |
| Slave select. More...
|
|
enum | _spi_status {
kStatus_SPI_Busy = MAKE_STATUS(kStatusGroup_LPC_SPI, 0),
kStatus_SPI_Idle = MAKE_STATUS(kStatusGroup_LPC_SPI, 1),
kStatus_SPI_Error = MAKE_STATUS(kStatusGroup_LPC_SPI, 2),
kStatus_SPI_BaudrateNotSupport
} |
| SPI transfer status. More...
|
|
enum | _spi_interrupt_enable {
kSPI_RxLvlIrq = SPI_FIFOINTENSET_RXLVL_MASK,
kSPI_TxLvlIrq = SPI_FIFOINTENSET_TXLVL_MASK
} |
| SPI interrupt sources. More...
|
|
enum | _spi_statusflags {
kSPI_TxEmptyFlag = SPI_FIFOSTAT_TXEMPTY_MASK,
kSPI_TxNotFullFlag = SPI_FIFOSTAT_TXNOTFULL_MASK,
kSPI_RxNotEmptyFlag = SPI_FIFOSTAT_RXNOTEMPTY_MASK,
kSPI_RxFullFlag = SPI_FIFOSTAT_RXFULL_MASK
} |
| SPI status flags. More...
|
|
|
status_t | SPI_MasterTransferCreateHandle (SPI_Type *base, spi_master_handle_t *handle, spi_master_callback_t callback, void *userData) |
| Initializes the SPI master handle. More...
|
|
status_t | SPI_MasterTransferBlocking (SPI_Type *base, spi_transfer_t *xfer) |
| Transfers a block of data using a polling method. More...
|
|
status_t | SPI_MasterTransferNonBlocking (SPI_Type *base, spi_master_handle_t *handle, spi_transfer_t *xfer) |
| Performs a non-blocking SPI interrupt transfer. More...
|
|
status_t | SPI_MasterTransferGetCount (SPI_Type *base, spi_master_handle_t *handle, size_t *count) |
| Gets the master transfer count. More...
|
|
void | SPI_MasterTransferAbort (SPI_Type *base, spi_master_handle_t *handle) |
| SPI master aborts a transfer using an interrupt. More...
|
|
void | SPI_MasterTransferHandleIRQ (SPI_Type *base, spi_master_handle_t *handle) |
| Interrupts the handler for the SPI. More...
|
|
static status_t | SPI_SlaveTransferCreateHandle (SPI_Type *base, spi_slave_handle_t *handle, spi_slave_callback_t callback, void *userData) |
| Initializes the SPI slave handle. More...
|
|
static status_t | SPI_SlaveTransferNonBlocking (SPI_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 (SPI_Type *base, spi_slave_handle_t *handle, size_t *count) |
| Gets the slave transfer count. More...
|
|
static void | SPI_SlaveTransferAbort (SPI_Type *base, spi_slave_handle_t *handle) |
| SPI slave aborts a transfer using an interrupt. More...
|
|
static void | SPI_SlaveTransferHandleIRQ (SPI_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 |
Data Fields |
uint8_t * | txData |
| Send buffer.
|
|
uint8_t * | rxData |
| Receive buffer.
|
|
uint32_t | configFlags |
| Additional option to control transfer.
|
|
size_t | dataSize |
| Transfer bytes.
|
|
struct _spi_master_handle |
Enumerator |
---|
kSPI_FrameDelay |
Delay chip select.
|
kSPI_FrameAssert |
When transfer ends, assert chip select.
|
Enumerator |
---|
kSPI_MsbFirst |
Data transfers start with most significant bit.
|
kSPI_LsbFirst |
Data transfers start with least significant bit.
|
Enumerator |
---|
kSPI_ClockPolarityActiveHigh |
Active-high SPI clock (idles low).
|
kSPI_ClockPolarityActiveLow |
Active-low SPI clock (idles high).
|
Enumerator |
---|
kSPI_ClockPhaseFirstEdge |
First edge on SCK occurs at the middle of the first cycle of a data transfer.
|
kSPI_ClockPhaseSecondEdge |
First edge on SCK occurs at the start of the first cycle of a data transfer.
|
Enumerator |
---|
kSPI_TxFifo0 |
SPI tx watermark is empty.
|
kSPI_TxFifo1 |
SPI tx watermark at 1 item.
|
kSPI_TxFifo2 |
SPI tx watermark at 2 items.
|
kSPI_TxFifo3 |
SPI tx watermark at 3 items.
|
kSPI_TxFifo4 |
SPI tx watermark at 4 items.
|
kSPI_TxFifo5 |
SPI tx watermark at 5 items.
|
kSPI_TxFifo6 |
SPI tx watermark at 6 items.
|
kSPI_TxFifo7 |
SPI tx watermark at 7 items.
|
Enumerator |
---|
kSPI_RxFifo1 |
SPI rx watermark at 1 item.
|
kSPI_RxFifo2 |
SPI rx watermark at 2 items.
|
kSPI_RxFifo3 |
SPI rx watermark at 3 items.
|
kSPI_RxFifo4 |
SPI rx watermark at 4 items.
|
kSPI_RxFifo5 |
SPI rx watermark at 5 items.
|
kSPI_RxFifo6 |
SPI rx watermark at 6 items.
|
kSPI_RxFifo7 |
SPI rx watermark at 7 items.
|
kSPI_RxFifo8 |
SPI rx watermark at 8 items.
|
Enumerator |
---|
kSPI_Data4Bits |
4 bits data width
|
kSPI_Data5Bits |
5 bits data width
|
kSPI_Data6Bits |
6 bits data width
|
kSPI_Data7Bits |
7 bits data width
|
kSPI_Data8Bits |
8 bits data width
|
kSPI_Data9Bits |
9 bits data width
|
kSPI_Data10Bits |
10 bits data width
|
kSPI_Data11Bits |
11 bits data width
|
kSPI_Data12Bits |
12 bits data width
|
kSPI_Data13Bits |
13 bits data width
|
kSPI_Data14Bits |
14 bits data width
|
kSPI_Data15Bits |
15 bits data width
|
kSPI_Data16Bits |
16 bits data width
|
Enumerator |
---|
kSPI_Ssel0 |
Slave select 0.
|
kSPI_Ssel1 |
Slave select 1.
|
kSPI_Ssel2 |
Slave select 2.
|
kSPI_Ssel3 |
Slave select 3.
|
Enumerator |
---|
kStatus_SPI_Busy |
SPI bus is busy.
|
kStatus_SPI_Idle |
SPI is idle.
|
kStatus_SPI_Error |
SPI error.
|
kStatus_SPI_BaudrateNotSupport |
Baudrate is not support in current clock source.
|
Enumerator |
---|
kSPI_RxLvlIrq |
Rx level interrupt.
|
kSPI_TxLvlIrq |
Tx level interrupt.
|
Enumerator |
---|
kSPI_TxEmptyFlag |
txFifo is empty
|
kSPI_TxNotFullFlag |
txFifo is not full
|
kSPI_RxNotEmptyFlag |
rxFIFO is not empty
|
kSPI_RxFullFlag |
rxFIFO is full
|
uint32_t SPI_GetInstance |
( |
SPI_Type * |
base | ) |
|
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. 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
.
polarity = flexSPIClockPolarity_ActiveHigh;
.phase = flexSPIClockPhase_FirstEdge;
.direction = flexSPIMsbFirst;
...
};
- Parameters
-
base | SPI base pointer |
config | pointer to slave configuration structure |
void SPI_Deinit |
( |
SPI_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 |
( |
SPI_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPI base pointer |
enable | or disable ( true = enable, false = disable) |
static uint32_t SPI_GetStatusFlags |
( |
SPI_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- SPI Status, use status flag to AND _spi_statusflags could get the related status.
static void SPI_EnableInterrupts |
( |
SPI_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_RxLvlIrq
- kSPI_TxLvlIrq
|
static void SPI_DisableInterrupts |
( |
SPI_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_RxLvlIrq
- kSPI_TxLvlIrq
|
void SPI_EnableTxDMA |
( |
SPI_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
- Parameters
-
base | SPI base pointer |
enable | True means enable DMA, false means disable DMA |
void SPI_EnableRxDMA |
( |
SPI_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
- Parameters
-
base | SPI base pointer |
enable | True means enable DMA, false means disable DMA |
status_t SPI_MasterSetBaud |
( |
SPI_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. |
void SPI_WriteData |
( |
SPI_Type * |
base, |
|
|
uint16_t |
data, |
|
|
uint32_t |
configFlags |
|
) |
| |
- Parameters
-
base | SPI base pointer |
data | needs to be write. |
configFlags | transfer configuration options spi_xfer_option_t |
static uint32_t SPI_ReadData |
( |
SPI_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in the register.
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. |
- 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. |
status_t SPI_MasterTransferNonBlocking |
( |
SPI_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 |
( |
SPI_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 |
( |
SPI_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. |
void SPI_MasterTransferHandleIRQ |
( |
SPI_Type * |
base, |
|
|
spi_master_handle_t * |
handle |
|
) |
| |
- Parameters
-
base | SPI peripheral base address. |
handle | pointer to 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 |