MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages

Overview

This section describes the programming interface of the DSPI Peripheral driver. The DSPI driver configures DSPI module and provides the functional and transactional interfaces to build the DSPI application.

Data Structures

struct  dspi_master_dma_handle_t
 DSPI master DMA transfer handle structure used for transactional API. More...
 
struct  dspi_slave_dma_handle_t
 DSPI slave DMA transfer handle structure used for transactional API. More...
 

Typedefs

typedef void(* dspi_master_dma_transfer_callback_t )(SPI_Type *base, dspi_master_dma_handle_t *handle, status_t status, void *userData)
 Completion callback function pointer type. More...
 
typedef void(* dspi_slave_dma_transfer_callback_t )(SPI_Type *base, dspi_slave_dma_handle_t *handle, status_t status, void *userData)
 Completion callback function pointer type. More...
 

Functions

void DSPI_MasterTransferCreateHandleDMA (SPI_Type *base, dspi_master_dma_handle_t *handle, dspi_master_dma_transfer_callback_t callback, void *userData, dma_handle_t *dmaRxRegToRxDataHandle, dma_handle_t *dmaTxDataToIntermediaryHandle, dma_handle_t *dmaIntermediaryToTxRegHandle)
 Initializes the DSPI master DMA handle. More...
 
status_t DSPI_MasterTransferDMA (SPI_Type *base, dspi_master_dma_handle_t *handle, dspi_transfer_t *transfer)
 DSPI master transfers data using DMA. More...
 
void DSPI_MasterTransferAbortDMA (SPI_Type *base, dspi_master_dma_handle_t *handle)
 DSPI master aborts a transfer which is using DMA. More...
 
status_t DSPI_MasterTransferGetCountDMA (SPI_Type *base, dspi_master_dma_handle_t *handle, size_t *count)
 Gets the master DMA transfer remaining bytes. More...
 
void DSPI_SlaveTransferCreateHandleDMA (SPI_Type *base, dspi_slave_dma_handle_t *handle, dspi_slave_dma_transfer_callback_t callback, void *userData, dma_handle_t *dmaRxRegToRxDataHandle, dma_handle_t *dmaTxDataToTxRegHandle)
 Initializes the DSPI slave DMA handle. More...
 
status_t DSPI_SlaveTransferDMA (SPI_Type *base, dspi_slave_dma_handle_t *handle, dspi_transfer_t *transfer)
 DSPI slave transfers data using DMA. More...
 
void DSPI_SlaveTransferAbortDMA (SPI_Type *base, dspi_slave_dma_handle_t *handle)
 DSPI slave aborts a transfer which is using DMA. More...
 
status_t DSPI_SlaveTransferGetCountDMA (SPI_Type *base, dspi_slave_dma_handle_t *handle, size_t *count)
 Gets the slave DMA transfer remaining bytes. More...
 

Data Structure Documentation

struct _dspi_master_dma_handle

Forward declaration of the DSPI DMA master handle typedefs.

Data Fields

uint32_t bitsPerFrame
 The desired number of bits per frame. More...
 
volatile uint32_t command
 The desired data command. More...
 
volatile uint32_t lastCommand
 The desired last data command. More...
 
uint8_t fifoSize
 FIFO dataSize. More...
 
volatile bool isPcsActiveAfterTransfer
 Indicates whether the PCS signal keeps active after the last frame transfer. More...
 
volatile bool isThereExtraByte
 Indicates whether there is an extra byte. More...
 
uint8_t *volatile txData
 Send buffer. More...
 
uint8_t *volatile rxData
 Receive buffer. More...
 
volatile size_t remainingSendByteCount
 A number of bytes remaining to send. More...
 
volatile size_t remainingReceiveByteCount
 A number of bytes remaining to receive. More...
 
size_t totalByteCount
 A number of transfer bytes.
 
uint32_t rxBuffIfNull
 Used if there is not rxData for DMA purpose. More...
 
uint32_t txBuffIfNull
 Used if there is not txData for DMA purpose. More...
 
volatile uint8_t state
 DSPI transfer state, see _dspi_transfer_state. More...
 
dspi_master_dma_transfer_callback_t callback
 Completion callback. More...
 
void * userData
 Callback user data. More...
 
dma_handle_t * dmaRxRegToRxDataHandle
 dma_handle_t handle point used for RxReg to RxData buff
 
dma_handle_t * dmaTxDataToIntermediaryHandle
 dma_handle_t handle point used for TxData to Intermediary
 
dma_handle_t * dmaIntermediaryToTxRegHandle
 dma_handle_t handle point used for Intermediary to TxReg
 

Field Documentation

uint32_t dspi_master_dma_handle_t::bitsPerFrame
volatile uint32_t dspi_master_dma_handle_t::command
volatile uint32_t dspi_master_dma_handle_t::lastCommand
uint8_t dspi_master_dma_handle_t::fifoSize
volatile bool dspi_master_dma_handle_t::isPcsActiveAfterTransfer
volatile bool dspi_master_dma_handle_t::isThereExtraByte
uint8_t* volatile dspi_master_dma_handle_t::txData
uint8_t* volatile dspi_master_dma_handle_t::rxData
volatile size_t dspi_master_dma_handle_t::remainingSendByteCount
volatile size_t dspi_master_dma_handle_t::remainingReceiveByteCount
uint32_t dspi_master_dma_handle_t::rxBuffIfNull
uint32_t dspi_master_dma_handle_t::txBuffIfNull
volatile uint8_t dspi_master_dma_handle_t::state
dspi_master_dma_transfer_callback_t dspi_master_dma_handle_t::callback
void* dspi_master_dma_handle_t::userData
struct _dspi_slave_dma_handle

Forward declaration of the DSPI DMA slave handle typedefs.

Data Fields

uint32_t bitsPerFrame
 Desired number of bits per frame. More...
 
volatile bool isThereExtraByte
 Indicates whether there is an extra byte. More...
 
uint8_t *volatile txData
 A send buffer. More...
 
uint8_t *volatile rxData
 A receive buffer. More...
 
volatile size_t remainingSendByteCount
 A number of bytes remaining to send. More...
 
volatile size_t remainingReceiveByteCount
 A number of bytes remaining to receive. More...
 
size_t totalByteCount
 A number of transfer bytes.
 
uint32_t rxBuffIfNull
 Used if there is not rxData for DMA purpose. More...
 
uint32_t txBuffIfNull
 Used if there is not txData for DMA purpose. More...
 
uint32_t txLastData
 Used if there is an extra byte when 16 bits per frame for DMA purpose. More...
 
volatile uint8_t state
 DSPI transfer state. More...
 
uint32_t errorCount
 Error count for the slave transfer. More...
 
dspi_slave_dma_transfer_callback_t callback
 Completion callback. More...
 
void * userData
 Callback user data. More...
 
dma_handle_t * dmaRxRegToRxDataHandle
 dma_handle_t handle point used for RxReg to RxData buff
 
dma_handle_t * dmaTxDataToTxRegHandle
 dma_handle_t handle point used for TxData to TxReg
 

Field Documentation

uint32_t dspi_slave_dma_handle_t::bitsPerFrame
volatile bool dspi_slave_dma_handle_t::isThereExtraByte
uint8_t* volatile dspi_slave_dma_handle_t::txData
uint8_t* volatile dspi_slave_dma_handle_t::rxData
volatile size_t dspi_slave_dma_handle_t::remainingSendByteCount
volatile size_t dspi_slave_dma_handle_t::remainingReceiveByteCount
uint32_t dspi_slave_dma_handle_t::rxBuffIfNull
uint32_t dspi_slave_dma_handle_t::txBuffIfNull
uint32_t dspi_slave_dma_handle_t::txLastData
volatile uint8_t dspi_slave_dma_handle_t::state
uint32_t dspi_slave_dma_handle_t::errorCount
dspi_slave_dma_transfer_callback_t dspi_slave_dma_handle_t::callback
void* dspi_slave_dma_handle_t::userData

Typedef Documentation

typedef void(* dspi_master_dma_transfer_callback_t)(SPI_Type *base, dspi_master_dma_handle_t *handle, status_t status, void *userData)
Parameters
baseDSPI peripheral base address.
handlePointer to the handle for the DSPI master.
statusSuccess or error code describing whether the transfer completed.
userDataArbitrary pointer-dataSized value passed from the application.
typedef void(* dspi_slave_dma_transfer_callback_t)(SPI_Type *base, dspi_slave_dma_handle_t *handle, status_t status, void *userData)
Parameters
baseDSPI peripheral base address.
handlePointer to the handle for the DSPI slave.
statusSuccess or error code describing whether the transfer completed.
userDataArbitrary pointer-dataSized value passed from the application.

Function Documentation

void DSPI_MasterTransferCreateHandleDMA ( SPI_Type *  base,
dspi_master_dma_handle_t *  handle,
dspi_master_dma_transfer_callback_t  callback,
void *  userData,
dma_handle_t *  dmaRxRegToRxDataHandle,
dma_handle_t *  dmaTxDataToIntermediaryHandle,
dma_handle_t *  dmaIntermediaryToTxRegHandle 
)

This function initializes the DSPI DMA handle which can be used for other DSPI transactional APIs. Usually, for a specified DSPI instance, call this API once to get the initialized handle.

Note that DSPI DMA has a separated (Rx and Tx as two sources) or shared (Rx and Tx is the same source) DMA request source. (1) For a separated DMA request source, enable and set the Rx DMAMUX source for dmaRxRegToRxDataHandle and Tx DMAMUX source for dmaIntermediaryToTxRegHandle. (2) For a shared DMA request source, enable and set the Rx/Rx DMAMUX source for dmaRxRegToRxDataHandle.

Parameters
baseDSPI peripheral base address.
handleDSPI handle pointer to dspi_master_dma_handle_t.
callbackDSPI callback.
userDataA callback function parameter.
dmaRxRegToRxDataHandledmaRxRegToRxDataHandle pointer to dma_handle_t.
dmaTxDataToIntermediaryHandledmaTxDataToIntermediaryHandle pointer to dma_handle_t.
dmaIntermediaryToTxRegHandledmaIntermediaryToTxRegHandle pointer to dma_handle_t.
status_t DSPI_MasterTransferDMA ( SPI_Type *  base,
dspi_master_dma_handle_t *  handle,
dspi_transfer_t transfer 
)

This function transfers data using DMA. This is a non-blocking function, which returns right away. When all data is transferred, the callback function is called.

Note that the master DMA transfer does not support the transfer_size of 1 when the bitsPerFrame is greater than 8.

Parameters
baseDSPI peripheral base address.
handleA pointer to the dspi_master_dma_handle_t structure which stores the transfer state.
transferA pointer to the dspi_transfer_t structure.
Returns
status of status_t.
void DSPI_MasterTransferAbortDMA ( SPI_Type *  base,
dspi_master_dma_handle_t *  handle 
)

This function aborts a transfer which is using DMA.

Parameters
baseDSPI peripheral base address.
handleA pointer to the dspi_master_dma_handle_t structure which stores the transfer state.
status_t DSPI_MasterTransferGetCountDMA ( SPI_Type *  base,
dspi_master_dma_handle_t *  handle,
size_t *  count 
)

This function gets the master DMA transfer remaining bytes.

Parameters
baseDSPI peripheral base address.
handleA pointer to the dspi_master_dma_handle_t structure which stores the transfer state.
countA number of bytes transferred by the non-blocking transaction.
Returns
status of status_t.
void DSPI_SlaveTransferCreateHandleDMA ( SPI_Type *  base,
dspi_slave_dma_handle_t *  handle,
dspi_slave_dma_transfer_callback_t  callback,
void *  userData,
dma_handle_t *  dmaRxRegToRxDataHandle,
dma_handle_t *  dmaTxDataToTxRegHandle 
)

This function initializes the DSPI DMA handle which can be used for other DSPI transactional APIs. Usually, for a specified DSPI instance, call this API once to get the initialized handle.

Note that DSPI DMA has a separated (Rx and Tx as two sources) or shared (Rx and Tx is the same source) DMA request source. (1) For a separated DMA request source, enable and set the Rx DMAMUX source for dmaRxRegToRxDataHandle and Tx DMAMUX source for dmaTxDataToTxRegHandle. (2) For a shared DMA request source, enable and set the Rx/Rx DMAMUX source for dmaRxRegToRxDataHandle.

Parameters
baseDSPI peripheral base address.
handleDSPI handle pointer to dspi_slave_dma_handle_t.
callbackDSPI callback.
userDataA callback function parameter.
dmaRxRegToRxDataHandledmaRxRegToRxDataHandle pointer to dma_handle_t.
dmaTxDataToTxRegHandledmaTxDataToTxRegHandle pointer to dma_handle_t.
status_t DSPI_SlaveTransferDMA ( SPI_Type *  base,
dspi_slave_dma_handle_t *  handle,
dspi_transfer_t transfer 
)

This function transfers data using DMA. This is a non-blocking function, which returns right away. When all data is transferred, the callback function is called.

Note that the slave DMA transfer does not support the transfer_size of 1 when the bitsPerFrame is greater than eight.

Parameters
baseDSPI peripheral base address.
handleA pointer to the dspi_slave_dma_handle_t structure which stores the transfer state.
transferA pointer to the dspi_transfer_t structure.
Returns
status of status_t.
void DSPI_SlaveTransferAbortDMA ( SPI_Type *  base,
dspi_slave_dma_handle_t *  handle 
)

This function aborts a transfer which is using DMA.

Parameters
baseDSPI peripheral base address.
handleA pointer to the dspi_slave_dma_handle_t structure which stores the transfer state.
status_t DSPI_SlaveTransferGetCountDMA ( SPI_Type *  base,
dspi_slave_dma_handle_t *  handle,
size_t *  count 
)

This function gets the slave DMA transfer remaining bytes.

Parameters
baseDSPI peripheral base address.
handleA pointer to the dspi_slave_dma_handle_t structure which stores the transfer state.
countA number of bytes transferred by the non-blocking transaction.
Returns
status of status_t.