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

Overview

Data Structures

struct  sai_sdma_handle_t
 SAI DMA transfer handle, users should not touch the content of the handle. More...
 

Typedefs

typedef void(* sai_sdma_callback_t )(I2S_Type *base, sai_sdma_handle_t *handle, status_t status, void *userData)
 SAI SDMA transfer callback function for finish and error.
 

Driver version

#define FSL_SAI_SDMA_DRIVER_VERSION   (MAKE_VERSION(2, 1, 5))
 Version 2.1.5.
 

SDMA Transactional

void SAI_TransferTxCreateHandleSDMA (I2S_Type *base, sai_sdma_handle_t *handle, sai_sdma_callback_t callback, void *userData, sdma_handle_t *dmaHandle, uint32_t eventSource)
 Initializes the SAI SDMA handle. More...
 
void SAI_TransferRxCreateHandleSDMA (I2S_Type *base, sai_sdma_handle_t *handle, sai_sdma_callback_t callback, void *userData, sdma_handle_t *dmaHandle, uint32_t eventSource)
 Initializes the SAI Rx SDMA handle. More...
 
void SAI_TransferTxSetFormatSDMA (I2S_Type *base, sai_sdma_handle_t *handle, sai_transfer_format_t *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz)
 Configures the SAI Tx audio format. More...
 
void SAI_TransferRxSetFormatSDMA (I2S_Type *base, sai_sdma_handle_t *handle, sai_transfer_format_t *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz)
 Configures the SAI Rx audio format. More...
 
status_t SAI_TransferSendSDMA (I2S_Type *base, sai_sdma_handle_t *handle, sai_transfer_t *xfer)
 Performs a non-blocking SAI transfer using DMA. More...
 
status_t SAI_TransferReceiveSDMA (I2S_Type *base, sai_sdma_handle_t *handle, sai_transfer_t *xfer)
 Performs a non-blocking SAI receive using SDMA. More...
 
void SAI_TransferAbortSendSDMA (I2S_Type *base, sai_sdma_handle_t *handle)
 Aborts a SAI transfer using SDMA. More...
 
void SAI_TransferAbortReceiveSDMA (I2S_Type *base, sai_sdma_handle_t *handle)
 Aborts a SAI receive using SDMA. More...
 

Data Structure Documentation

struct _sai_sdma_handle

Data Fields

sdma_handle_t * dmaHandle
 DMA handler for SAI send.
 
uint8_t bytesPerFrame
 Bytes in a frame.
 
uint8_t channel
 start data channel
 
uint8_t channelNums
 total transfer channel numbers, used for multififo
 
uint8_t channelMask
 enabled channel mask value, refernece _sai_channel_mask
 
uint8_t fifoOffset
 fifo address offset between multifo
 
uint8_t count
 The transfer data count in a DMA request.
 
uint32_t state
 Internal state for SAI SDMA transfer.
 
uint32_t eventSource
 SAI event source number.
 
sai_sdma_callback_t callback
 Callback for users while transfer finish or error occurs.
 
void * userData
 User callback parameter.
 
sdma_buffer_descriptor_t bdPool [SAI_XFER_QUEUE_SIZE]
 BD pool for SDMA transfer. More...
 
sai_transfer_t saiQueue [SAI_XFER_QUEUE_SIZE]
 Transfer queue storing queued transfer. More...
 
size_t transferSize [SAI_XFER_QUEUE_SIZE]
 Data bytes need to transfer.
 
volatile uint8_t queueUser
 Index for user to queue transfer. More...
 
volatile uint8_t queueDriver
 Index for driver to get the transfer data and size.
 

Field Documentation

sdma_buffer_descriptor_t sai_sdma_handle_t::bdPool[SAI_XFER_QUEUE_SIZE]
sai_transfer_t sai_sdma_handle_t::saiQueue[SAI_XFER_QUEUE_SIZE]
volatile uint8_t sai_sdma_handle_t::queueUser

Function Documentation

void SAI_TransferTxCreateHandleSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle,
sai_sdma_callback_t  callback,
void *  userData,
sdma_handle_t *  dmaHandle,
uint32_t  eventSource 
)

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

Parameters
baseSAI base pointer.
handleSAI SDMA handle pointer.
baseSAI peripheral base address.
callbackPointer to user callback function.
userDataUser parameter passed to the callback function.
dmaHandleSDMA handle pointer, this handle shall be static allocated by users.
void SAI_TransferRxCreateHandleSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle,
sai_sdma_callback_t  callback,
void *  userData,
sdma_handle_t *  dmaHandle,
uint32_t  eventSource 
)

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

Parameters
baseSAI base pointer.
handleSAI SDMA handle pointer.
baseSAI peripheral base address.
callbackPointer to user callback function.
userDataUser parameter passed to the callback function.
dmaHandleSDMA handle pointer, this handle shall be static allocated by users.
void SAI_TransferTxSetFormatSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle,
sai_transfer_format_t format,
uint32_t  mclkSourceClockHz,
uint32_t  bclkSourceClockHz 
)

The audio format can be changed at run-time. This function configures the sample rate and audio data format to be transferred. This function also sets the SDMA parameter according to formatting requirements.

Parameters
baseSAI base pointer.
handleSAI SDMA handle pointer.
formatPointer to SAI audio data format structure.
mclkSourceClockHzSAI master clock source frequency in Hz.
bclkSourceClockHzSAI bit clock source frequency in Hz. If bit clock source is master clock, this value should equals to masterClockHz in format.
Return values
kStatus_SuccessAudio format set successfully.
kStatus_InvalidArgumentThe input argument is invalid.
void SAI_TransferRxSetFormatSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle,
sai_transfer_format_t format,
uint32_t  mclkSourceClockHz,
uint32_t  bclkSourceClockHz 
)

The audio format can be changed at run-time. This function configures the sample rate and audio data format to be transferred. This function also sets the SDMA parameter according to formatting requirements.

Parameters
baseSAI base pointer.
handleSAI SDMA handle pointer.
formatPointer to SAI audio data format structure.
mclkSourceClockHzSAI master clock source frequency in Hz.
bclkSourceClockHzSAI bit clock source frequency in Hz. If a bit clock source is the master clock, this value should equal to masterClockHz in format.
Return values
kStatus_SuccessAudio format set successfully.
kStatus_InvalidArgumentThe input argument is invalid.
status_t SAI_TransferSendSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle,
sai_transfer_t xfer 
)
Note
This interface returns immediately after the transfer initiates. Call SAI_GetTransferStatus to poll the transfer status and check whether the SAI transfer is finished.
Parameters
baseSAI base pointer.
handleSAI SDMA handle pointer.
xferPointer to the DMA transfer structure.
Return values
kStatus_SuccessStart a SAI SDMA send successfully.
kStatus_InvalidArgumentThe input argument is invalid.
kStatus_TxBusySAI is busy sending data.
status_t SAI_TransferReceiveSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle,
sai_transfer_t xfer 
)
Note
This interface returns immediately after the transfer initiates. Call the SAI_GetReceiveRemainingBytes to poll the transfer status and check whether the SAI transfer is finished.
Parameters
baseSAI base pointer
handleSAI SDMA handle pointer.
xferPointer to DMA transfer structure.
Return values
kStatus_SuccessStart a SAI SDMA receive successfully.
kStatus_InvalidArgumentThe input argument is invalid.
kStatus_RxBusySAI is busy receiving data.
void SAI_TransferAbortSendSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle 
)
Parameters
baseSAI base pointer.
handleSAI SDMA handle pointer.
void SAI_TransferAbortReceiveSDMA ( I2S_Type *  base,
sai_sdma_handle_t *  handle 
)
Parameters
baseSAI base pointer
handleSAI SDMA handle pointer.