MCUXpresso SDK API Reference Manual
Rev. 0
NXP Semiconductors
|
Data Structures | |
struct | sai_config_t |
SAI user configuration structure. More... | |
struct | sai_transfer_format_t |
sai transfer format More... | |
struct | sai_fifo_t |
sai fifo configurations More... | |
struct | sai_bit_clock_t |
sai bit clock configurations More... | |
struct | sai_frame_sync_t |
sai frame sync configurations More... | |
struct | sai_serial_data_t |
sai serial data configurations More... | |
struct | sai_transceiver_t |
sai transceiver configurations More... | |
struct | sai_transfer_t |
SAI transfer structure. More... | |
struct | sai_handle_t |
SAI handle structure. More... | |
Macros | |
#define | SAI_XFER_QUEUE_SIZE (4U) |
SAI transfer queue size, user can refine it according to use case. More... | |
#define | FSL_SAI_HAS_FIFO_EXTEND_FEATURE 1 |
sai fifo feature | |
Typedefs | |
typedef void(* | sai_transfer_callback_t )(I2S_Type *base, sai_handle_t *handle, status_t status, void *userData) |
SAI transfer callback prototype. | |
Driver version | |
#define | FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 3, 2)) |
Version 2.3.2. | |
Initialization and deinitialization | |
void | SAI_TxInit (I2S_Type *base, const sai_config_t *config) |
Initializes the SAI Tx peripheral. More... | |
void | SAI_RxInit (I2S_Type *base, const sai_config_t *config) |
Initializes the SAI Rx peripheral. More... | |
void | SAI_TxGetDefaultConfig (sai_config_t *config) |
Sets the SAI Tx configuration structure to default values. More... | |
void | SAI_RxGetDefaultConfig (sai_config_t *config) |
Sets the SAI Rx configuration structure to default values. More... | |
void | SAI_Init (I2S_Type *base) |
Initializes the SAI peripheral. More... | |
void | SAI_Deinit (I2S_Type *base) |
De-initializes the SAI peripheral. More... | |
void | SAI_TxReset (I2S_Type *base) |
Resets the SAI Tx. More... | |
void | SAI_RxReset (I2S_Type *base) |
Resets the SAI Rx. More... | |
void | SAI_TxEnable (I2S_Type *base, bool enable) |
Enables/disables the SAI Tx. More... | |
void | SAI_RxEnable (I2S_Type *base, bool enable) |
Enables/disables the SAI Rx. More... | |
static void | SAI_TxSetBitClockDirection (I2S_Type *base, sai_master_slave_t masterSlave) |
Set Rx bit clock direction. More... | |
static void | SAI_RxSetBitClockDirection (I2S_Type *base, sai_master_slave_t masterSlave) |
Set Rx bit clock direction. More... | |
static void | SAI_RxSetFrameSyncDirection (I2S_Type *base, sai_master_slave_t masterSlave) |
Set Rx frame sync direction. More... | |
static void | SAI_TxSetFrameSyncDirection (I2S_Type *base, sai_master_slave_t masterSlave) |
Set Tx frame sync direction. More... | |
void | SAI_TxSetBitClockRate (I2S_Type *base, uint32_t sourceClockHz, uint32_t sampleRate, uint32_t bitWidth, uint32_t channelNumbers) |
Transmitter bit clock rate configurations. More... | |
void | SAI_RxSetBitClockRate (I2S_Type *base, uint32_t sourceClockHz, uint32_t sampleRate, uint32_t bitWidth, uint32_t channelNumbers) |
Receiver bit clock rate configurations. More... | |
void | SAI_TxSetBitclockConfig (I2S_Type *base, sai_master_slave_t masterSlave, sai_bit_clock_t *config) |
Transmitter Bit clock configurations. More... | |
void | SAI_RxSetBitclockConfig (I2S_Type *base, sai_master_slave_t masterSlave, sai_bit_clock_t *config) |
Receiver Bit clock configurations. More... | |
void | SAI_TxSetFifoConfig (I2S_Type *base, sai_fifo_t *config) |
SAI transmitter fifo configurations. More... | |
void | SAI_RxSetFifoConfig (I2S_Type *base, sai_fifo_t *config) |
SAI receiver fifo configurations. More... | |
void | SAI_TxSetFrameSyncConfig (I2S_Type *base, sai_master_slave_t masterSlave, sai_frame_sync_t *config) |
SAI transmitter Frame sync configurations. More... | |
void | SAI_RxSetFrameSyncConfig (I2S_Type *base, sai_master_slave_t masterSlave, sai_frame_sync_t *config) |
SAI receiver Frame sync configurations. More... | |
void | SAI_TxSetSerialDataConfig (I2S_Type *base, sai_serial_data_t *config) |
SAI transmitter Serial data configurations. More... | |
void | SAI_RxSetSerialDataConfig (I2S_Type *base, sai_serial_data_t *config) |
SAI receiver Serial data configurations. More... | |
void | SAI_TxSetConfig (I2S_Type *base, sai_transceiver_t *config) |
SAI transmitter configurations. More... | |
void | SAI_RxSetConfig (I2S_Type *base, sai_transceiver_t *config) |
SAI receiver configurations. More... | |
void | SAI_GetClassicI2SConfig (sai_transceiver_t *config, sai_word_width_t bitWidth, sai_mono_stereo_t mode, uint32_t saiChannelMask) |
Get classic I2S mode configurations. More... | |
void | SAI_GetLeftJustifiedConfig (sai_transceiver_t *config, sai_word_width_t bitWidth, sai_mono_stereo_t mode, uint32_t saiChannelMask) |
Get left justified mode configurations. More... | |
void | SAI_GetRightJustifiedConfig (sai_transceiver_t *config, sai_word_width_t bitWidth, sai_mono_stereo_t mode, uint32_t saiChannelMask) |
Get right justified mode configurations. More... | |
void | SAI_GetTDMConfig (sai_transceiver_t *config, sai_frame_sync_len_t frameSyncWidth, sai_word_width_t bitWidth, uint32_t dataWordNum, uint32_t saiChannelMask) |
Get TDM mode configurations. More... | |
void | SAI_GetDSPConfig (sai_transceiver_t *config, sai_frame_sync_len_t frameSyncWidth, sai_word_width_t bitWidth, sai_mono_stereo_t mode, uint32_t saiChannelMask) |
Get DSP mode configurations. More... | |
Status | |
static uint32_t | SAI_TxGetStatusFlag (I2S_Type *base) |
Gets the SAI Tx status flag state. More... | |
static void | SAI_TxClearStatusFlags (I2S_Type *base, uint32_t mask) |
Clears the SAI Tx status flag state. More... | |
static uint32_t | SAI_RxGetStatusFlag (I2S_Type *base) |
Gets the SAI Tx status flag state. More... | |
static void | SAI_RxClearStatusFlags (I2S_Type *base, uint32_t mask) |
Clears the SAI Rx status flag state. More... | |
void | SAI_TxSoftwareReset (I2S_Type *base, sai_reset_type_t type) |
Do software reset or FIFO reset . More... | |
void | SAI_RxSoftwareReset (I2S_Type *base, sai_reset_type_t type) |
Do software reset or FIFO reset . More... | |
void | SAI_TxSetChannelFIFOMask (I2S_Type *base, uint8_t mask) |
Set the Tx channel FIFO enable mask. More... | |
void | SAI_RxSetChannelFIFOMask (I2S_Type *base, uint8_t mask) |
Set the Rx channel FIFO enable mask. More... | |
void | SAI_TxSetDataOrder (I2S_Type *base, sai_data_order_t order) |
Set the Tx data order. More... | |
void | SAI_RxSetDataOrder (I2S_Type *base, sai_data_order_t order) |
Set the Rx data order. More... | |
void | SAI_TxSetBitClockPolarity (I2S_Type *base, sai_clock_polarity_t polarity) |
Set the Tx data order. More... | |
void | SAI_RxSetBitClockPolarity (I2S_Type *base, sai_clock_polarity_t polarity) |
Set the Rx data order. More... | |
void | SAI_TxSetFrameSyncPolarity (I2S_Type *base, sai_clock_polarity_t polarity) |
Set the Tx data order. More... | |
void | SAI_RxSetFrameSyncPolarity (I2S_Type *base, sai_clock_polarity_t polarity) |
Set the Rx data order. More... | |
void | SAI_TxSetFIFOPacking (I2S_Type *base, sai_fifo_packing_t pack) |
Set Tx FIFO packing feature. More... | |
void | SAI_RxSetFIFOPacking (I2S_Type *base, sai_fifo_packing_t pack) |
Set Rx FIFO packing feature. More... | |
static void | SAI_TxSetFIFOErrorContinue (I2S_Type *base, bool isEnabled) |
Set Tx FIFO error continue. More... | |
static void | SAI_RxSetFIFOErrorContinue (I2S_Type *base, bool isEnabled) |
Set Rx FIFO error continue. More... | |
Interrupts | |
static void | SAI_TxEnableInterrupts (I2S_Type *base, uint32_t mask) |
Enables the SAI Tx interrupt requests. More... | |
static void | SAI_RxEnableInterrupts (I2S_Type *base, uint32_t mask) |
Enables the SAI Rx interrupt requests. More... | |
static void | SAI_TxDisableInterrupts (I2S_Type *base, uint32_t mask) |
Disables the SAI Tx interrupt requests. More... | |
static void | SAI_RxDisableInterrupts (I2S_Type *base, uint32_t mask) |
Disables the SAI Rx interrupt requests. More... | |
DMA Control | |
static void | SAI_TxEnableDMA (I2S_Type *base, uint32_t mask, bool enable) |
Enables/disables the SAI Tx DMA requests. More... | |
static void | SAI_RxEnableDMA (I2S_Type *base, uint32_t mask, bool enable) |
Enables/disables the SAI Rx DMA requests. More... | |
static uint32_t | SAI_TxGetDataRegisterAddress (I2S_Type *base, uint32_t channel) |
Gets the SAI Tx data register address. More... | |
static uint32_t | SAI_RxGetDataRegisterAddress (I2S_Type *base, uint32_t channel) |
Gets the SAI Rx data register address. More... | |
Bus Operations | |
void | SAI_TxSetFormat (I2S_Type *base, sai_transfer_format_t *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz) |
Configures the SAI Tx audio format. More... | |
void | SAI_RxSetFormat (I2S_Type *base, sai_transfer_format_t *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz) |
Configures the SAI Rx audio format. More... | |
void | SAI_WriteBlocking (I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size) |
Sends data using a blocking method. More... | |
void | SAI_WriteMultiChannelBlocking (I2S_Type *base, uint32_t channel, uint32_t channelMask, uint32_t bitWidth, uint8_t *buffer, uint32_t size) |
Sends data to multi channel using a blocking method. More... | |
static void | SAI_WriteData (I2S_Type *base, uint32_t channel, uint32_t data) |
Writes data into SAI FIFO. More... | |
void | SAI_ReadBlocking (I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size) |
Receives data using a blocking method. More... | |
void | SAI_ReadMultiChannelBlocking (I2S_Type *base, uint32_t channel, uint32_t channelMask, uint32_t bitWidth, uint8_t *buffer, uint32_t size) |
Receives multi channel data using a blocking method. More... | |
static uint32_t | SAI_ReadData (I2S_Type *base, uint32_t channel) |
Reads data from the SAI FIFO. More... | |
Transactional | |
void | SAI_TransferTxCreateHandle (I2S_Type *base, sai_handle_t *handle, sai_transfer_callback_t callback, void *userData) |
Initializes the SAI Tx handle. More... | |
void | SAI_TransferRxCreateHandle (I2S_Type *base, sai_handle_t *handle, sai_transfer_callback_t callback, void *userData) |
Initializes the SAI Rx handle. More... | |
void | SAI_TransferTxSetConfig (I2S_Type *base, sai_handle_t *handle, sai_transceiver_t *config) |
SAI transmitter transfer configurations. More... | |
void | SAI_TransferRxSetConfig (I2S_Type *base, sai_handle_t *handle, sai_transceiver_t *config) |
SAI receiver transfer configurations. More... | |
status_t | SAI_TransferTxSetFormat (I2S_Type *base, sai_handle_t *handle, sai_transfer_format_t *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz) |
Configures the SAI Tx audio format. More... | |
status_t | SAI_TransferRxSetFormat (I2S_Type *base, sai_handle_t *handle, sai_transfer_format_t *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz) |
Configures the SAI Rx audio format. More... | |
status_t | SAI_TransferSendNonBlocking (I2S_Type *base, sai_handle_t *handle, sai_transfer_t *xfer) |
Performs an interrupt non-blocking send transfer on SAI. More... | |
status_t | SAI_TransferReceiveNonBlocking (I2S_Type *base, sai_handle_t *handle, sai_transfer_t *xfer) |
Performs an interrupt non-blocking receive transfer on SAI. More... | |
status_t | SAI_TransferGetSendCount (I2S_Type *base, sai_handle_t *handle, size_t *count) |
Gets a set byte count. More... | |
status_t | SAI_TransferGetReceiveCount (I2S_Type *base, sai_handle_t *handle, size_t *count) |
Gets a received byte count. More... | |
void | SAI_TransferAbortSend (I2S_Type *base, sai_handle_t *handle) |
Aborts the current send. More... | |
void | SAI_TransferAbortReceive (I2S_Type *base, sai_handle_t *handle) |
Aborts the current IRQ receive. More... | |
void | SAI_TransferTerminateSend (I2S_Type *base, sai_handle_t *handle) |
Terminate all SAI send. More... | |
void | SAI_TransferTerminateReceive (I2S_Type *base, sai_handle_t *handle) |
Terminate all SAI receive. More... | |
void | SAI_TransferTxHandleIRQ (I2S_Type *base, sai_handle_t *handle) |
Tx interrupt handler. More... | |
void | SAI_TransferRxHandleIRQ (I2S_Type *base, sai_handle_t *handle) |
Tx interrupt handler. More... | |
struct sai_config_t |
Data Fields | |
sai_protocol_t | protocol |
Audio bus protocol in SAI. | |
sai_sync_mode_t | syncMode |
SAI sync mode, control Tx/Rx clock sync. | |
sai_bclk_source_t | bclkSource |
Bit Clock source. | |
sai_master_slave_t | masterSlave |
Master or slave. | |
struct sai_transfer_format_t |
Data Fields | |
uint32_t | sampleRate_Hz |
Sample rate of audio data. | |
uint32_t | bitWidth |
Data length of audio data, usually 8/16/24/32 bits. | |
sai_mono_stereo_t | stereo |
Mono or stereo. | |
uint8_t | watermark |
Watermark value. | |
uint8_t | channel |
Transfer start channel. | |
uint8_t | channelMask |
enabled channel mask value, reference _sai_channel_mask | |
uint8_t | endChannel |
end channel number | |
uint8_t | channelNums |
Total enabled channel numbers. | |
sai_protocol_t | protocol |
Which audio protocol used. | |
bool | isFrameSyncCompact |
True means Frame sync length is configurable according to bitWidth, false means frame sync length is 64 times of bit clock. More... | |
bool sai_transfer_format_t::isFrameSyncCompact |
struct sai_fifo_t |
Data Fields | |
bool | fifoContinueOneError |
fifo continues when error occur | |
sai_fifo_packing_t | fifoPacking |
fifo packing mode | |
uint8_t | fifoWatermark |
fifo watermark | |
struct sai_bit_clock_t |
Data Fields | |
bool | bclkSrcSwap |
bit clock source swap | |
bool | bclkInputDelay |
bit clock actually used by the transmitter is delayed by the pad output delay, this has effect of decreasing the data input setup time, but increasing the data output valid time . More... | |
sai_clock_polarity_t | bclkPolarity |
bit clock polarity | |
sai_bclk_source_t | bclkSource |
bit Clock source | |
bool sai_bit_clock_t::bclkInputDelay |
struct sai_frame_sync_t |
Data Fields | |
uint8_t | frameSyncWidth |
frame sync width in number of bit clocks | |
bool | frameSyncEarly |
TRUE is frame sync assert one bit before the first bit of frame FALSE is frame sync assert with the first bit of the frame. | |
sai_clock_polarity_t | frameSyncPolarity |
frame sync polarity | |
struct sai_serial_data_t |
Data Fields | |
sai_data_pin_state_t | dataMode |
sai data pin state when slots masked or channel disabled | |
sai_data_order_t | dataOrder |
configure whether the LSB or MSB is transmitted first | |
uint8_t | dataWord0Length |
configure the number of bits in the first word in each frame | |
uint8_t | dataWordNLength |
configure the number of bits in the each word in each frame, except the first word | |
uint8_t | dataWordLength |
used to record the data length for dma transfer | |
uint8_t | dataFirstBitShifted |
Configure the bit index for the first bit transmitted for each word in the frame. | |
uint8_t | dataWordNum |
configure the number of words in each frame | |
uint32_t | dataMaskedWord |
configure whether the transmit word is masked | |
struct sai_transceiver_t |
Data Fields | |
sai_serial_data_t | serialData |
serial data configurations | |
sai_frame_sync_t | frameSync |
ws configurations | |
sai_bit_clock_t | bitClock |
bit clock configurations | |
sai_fifo_t | fifo |
fifo configurations | |
sai_master_slave_t | masterSlave |
transceiver is master or slave | |
sai_sync_mode_t | syncMode |
transceiver sync mode | |
uint8_t | startChannel |
Transfer start channel. | |
uint8_t | channelMask |
enabled channel mask value, reference _sai_channel_mask | |
uint8_t | endChannel |
end channel number | |
uint8_t | channelNums |
Total enabled channel numbers. | |
struct sai_transfer_t |
struct _sai_handle |
Data Fields | |
I2S_Type * | base |
base address | |
uint32_t | state |
Transfer status. | |
sai_transfer_callback_t | callback |
Callback function called at transfer event. | |
void * | userData |
Callback parameter passed to callback function. | |
uint8_t | bitWidth |
Bit width for transfer, 8/16/24/32 bits. | |
uint8_t | channel |
Transfer start channel. | |
uint8_t | channelMask |
enabled channel mask value, refernece _sai_channel_mask | |
uint8_t | endChannel |
end channel number | |
uint8_t | channelNums |
Total enabled channel numbers. | |
sai_transfer_t | saiQueue [SAI_XFER_QUEUE_SIZE] |
Transfer queue storing queued transfer. | |
size_t | transferSize [SAI_XFER_QUEUE_SIZE] |
Data bytes need to transfer. | |
volatile uint8_t | queueUser |
Index for user to queue transfer. | |
volatile uint8_t | queueDriver |
Index for driver to get the transfer data and size. | |
uint8_t | watermark |
Watermark value. | |
#define SAI_XFER_QUEUE_SIZE (4U) |
anonymous enum |
anonymous enum |
enum sai_protocol_t |
enum sai_master_slave_t |
enum sai_mono_stereo_t |
enum sai_data_order_t |
enum sai_clock_polarity_t |
enum sai_sync_mode_t |
enum sai_bclk_source_t |
anonymous enum |
anonymous enum |
anonymous enum |
enum sai_reset_type_t |
enum sai_fifo_packing_t |
enum sai_sample_rate_t |
enum sai_word_width_t |
enum sai_data_pin_state_t |
enum sai_frame_sync_len_t |
void SAI_TxInit | ( | I2S_Type * | base, |
const sai_config_t * | config | ||
) |
Ungates the SAI clock, resets the module, and configures SAI Tx with a configuration structure. The configuration structure can be custom filled or set with default values by SAI_TxGetDefaultConfig().
base | SAI base pointer |
config | SAI configuration structure. |
void SAI_RxInit | ( | I2S_Type * | base, |
const sai_config_t * | config | ||
) |
Ungates the SAI clock, resets the module, and configures the SAI Rx with a configuration structure. The configuration structure can be custom filled or set with default values by SAI_RxGetDefaultConfig().
base | SAI base pointer |
config | SAI configuration structure. |
void SAI_TxGetDefaultConfig | ( | sai_config_t * | config | ) |
This API initializes the configuration structure for use in SAI_TxConfig(). The initialized structure can remain unchanged in SAI_TxConfig(), or it can be modified before calling SAI_TxConfig(). This is an example.
config | pointer to master configuration structure |
void SAI_RxGetDefaultConfig | ( | sai_config_t * | config | ) |
This API initializes the configuration structure for use in SAI_RxConfig(). The initialized structure can remain unchanged in SAI_RxConfig() or it can be modified before calling SAI_RxConfig(). This is an example.
config | pointer to master configuration structure |
void SAI_Init | ( | I2S_Type * | base | ) |
This API gates the SAI clock. The SAI module can't operate unless SAI_Init is called to enable the clock.
base | SAI base pointer. |
void SAI_Deinit | ( | I2S_Type * | base | ) |
This API gates the SAI clock. The SAI module can't operate unless SAI_TxInit or SAI_RxInit is called to enable the clock.
base | SAI base pointer. |
void SAI_TxReset | ( | I2S_Type * | base | ) |
This function enables the software reset and FIFO reset of SAI Tx. After reset, clear the reset bit.
base | SAI base pointer |
void SAI_RxReset | ( | I2S_Type * | base | ) |
This function enables the software reset and FIFO reset of SAI Rx. After reset, clear the reset bit.
base | SAI base pointer |
void SAI_TxEnable | ( | I2S_Type * | base, |
bool | enable | ||
) |
base | SAI base pointer. |
enable | True means enable SAI Tx, false means disable. |
void SAI_RxEnable | ( | I2S_Type * | base, |
bool | enable | ||
) |
base | SAI base pointer. |
enable | True means enable SAI Rx, false means disable. |
|
inlinestatic |
Select bit clock direction, master or slave.
base | SAI base pointer. |
masterSlave | reference sai_master_slave_t. |
|
inlinestatic |
Select bit clock direction, master or slave.
base | SAI base pointer. |
masterSlave | reference sai_master_slave_t. |
|
inlinestatic |
Select frame sync direction, master or slave.
base | SAI base pointer. |
masterSlave | reference sai_master_slave_t. |
|
inlinestatic |
Select frame sync direction, master or slave.
base | SAI base pointer. |
masterSlave | reference sai_master_slave_t. |
void SAI_TxSetBitClockRate | ( | I2S_Type * | base, |
uint32_t | sourceClockHz, | ||
uint32_t | sampleRate, | ||
uint32_t | bitWidth, | ||
uint32_t | channelNumbers | ||
) |
base | SAI base pointer. |
sourceClockHz | Bit clock source frequency. |
sampleRate | Audio data sample rate. |
bitWidth | Audio data bitWidth. |
channelNumbers | Audio channel numbers. |
void SAI_RxSetBitClockRate | ( | I2S_Type * | base, |
uint32_t | sourceClockHz, | ||
uint32_t | sampleRate, | ||
uint32_t | bitWidth, | ||
uint32_t | channelNumbers | ||
) |
base | SAI base pointer. |
sourceClockHz | Bit clock source frequency. |
sampleRate | Audio data sample rate. |
bitWidth | Audio data bitWidth. |
channelNumbers | Audio channel numbers. |
void SAI_TxSetBitclockConfig | ( | I2S_Type * | base, |
sai_master_slave_t | masterSlave, | ||
sai_bit_clock_t * | config | ||
) |
base | SAI base pointer. |
masterSlave | master or slave. |
config | bit clock other configurations, can be NULL in slave mode. |
void SAI_RxSetBitclockConfig | ( | I2S_Type * | base, |
sai_master_slave_t | masterSlave, | ||
sai_bit_clock_t * | config | ||
) |
base | SAI base pointer. |
masterSlave | master or slave. |
config | bit clock other configurations, can be NULL in slave mode. |
void SAI_TxSetFifoConfig | ( | I2S_Type * | base, |
sai_fifo_t * | config | ||
) |
base | SAI base pointer. |
config | fifo configurations. |
void SAI_RxSetFifoConfig | ( | I2S_Type * | base, |
sai_fifo_t * | config | ||
) |
base | SAI base pointer. |
config | fifo configurations. |
void SAI_TxSetFrameSyncConfig | ( | I2S_Type * | base, |
sai_master_slave_t | masterSlave, | ||
sai_frame_sync_t * | config | ||
) |
base | SAI base pointer. |
masterSlave | master or slave. |
config | frame sync configurations, can be NULL in slave mode. |
void SAI_RxSetFrameSyncConfig | ( | I2S_Type * | base, |
sai_master_slave_t | masterSlave, | ||
sai_frame_sync_t * | config | ||
) |
base | SAI base pointer. |
masterSlave | master or slave. |
config | frame sync configurations, can be NULL in slave mode. |
void SAI_TxSetSerialDataConfig | ( | I2S_Type * | base, |
sai_serial_data_t * | config | ||
) |
base | SAI base pointer. |
config | serial data configurations. |
void SAI_RxSetSerialDataConfig | ( | I2S_Type * | base, |
sai_serial_data_t * | config | ||
) |
base | SAI base pointer. |
config | serial data configurations. |
void SAI_TxSetConfig | ( | I2S_Type * | base, |
sai_transceiver_t * | config | ||
) |
base | SAI base pointer. |
config | transmitter configurations. |
void SAI_RxSetConfig | ( | I2S_Type * | base, |
sai_transceiver_t * | config | ||
) |
base | SAI base pointer. |
config | receiver configurations. |
void SAI_GetClassicI2SConfig | ( | sai_transceiver_t * | config, |
sai_word_width_t | bitWidth, | ||
sai_mono_stereo_t | mode, | ||
uint32_t | saiChannelMask | ||
) |
config | transceiver configurations. |
bitWidth | audio data bitWidth. |
mode | audio data channel. |
saiChannelMask | mask value of the channel to be enable. |
void SAI_GetLeftJustifiedConfig | ( | sai_transceiver_t * | config, |
sai_word_width_t | bitWidth, | ||
sai_mono_stereo_t | mode, | ||
uint32_t | saiChannelMask | ||
) |
config | transceiver configurations. |
bitWidth | audio data bitWidth. |
mode | audio data channel. |
saiChannelMask | mask value of the channel to be enable. |
void SAI_GetRightJustifiedConfig | ( | sai_transceiver_t * | config, |
sai_word_width_t | bitWidth, | ||
sai_mono_stereo_t | mode, | ||
uint32_t | saiChannelMask | ||
) |
config | transceiver configurations. |
bitWidth | audio data bitWidth. |
mode | audio data channel. |
saiChannelMask | mask value of the channel to be enable. |
void SAI_GetTDMConfig | ( | sai_transceiver_t * | config, |
sai_frame_sync_len_t | frameSyncWidth, | ||
sai_word_width_t | bitWidth, | ||
uint32_t | dataWordNum, | ||
uint32_t | saiChannelMask | ||
) |
config | transceiver configurations. |
frameSyncWidth | length of frame sync. |
bitWidth | audio data word width. |
dataWordNum | word number in one frame. |
saiChannelMask | mask value of the channel to be enable. |
void SAI_GetDSPConfig | ( | sai_transceiver_t * | config, |
sai_frame_sync_len_t | frameSyncWidth, | ||
sai_word_width_t | bitWidth, | ||
sai_mono_stereo_t | mode, | ||
uint32_t | saiChannelMask | ||
) |
DSP/PCM MODE B configuration flow for TX. RX is similiar but uses SAI_RxSetConfig instead of SAI_TxSetConfig:
config | transceiver configurations. |
frameSyncWidth | length of frame sync. |
bitWidth | audio data bitWidth. |
mode | audio data channel. |
saiChannelMask | mask value of the channel to enable. |
|
inlinestatic |
base | SAI base pointer |
|
inlinestatic |
base | SAI base pointer |
mask | State mask. It can be a combination of the following source if defined:
|
|
inlinestatic |
base | SAI base pointer |
|
inlinestatic |
base | SAI base pointer |
mask | State mask. It can be a combination of the following sources if defined.
|
void SAI_TxSoftwareReset | ( | I2S_Type * | base, |
sai_reset_type_t | type | ||
) |
FIFO reset means clear all the data in the FIFO, and make the FIFO pointer both to 0. Software reset means clear the Tx internal logic, including the bit clock, frame count etc. But software reset will not clear any configuration registers like TCR1~TCR5. This function will also clear all the error flags such as FIFO error, sync error etc.
base | SAI base pointer |
type | Reset type, FIFO reset or software reset |
void SAI_RxSoftwareReset | ( | I2S_Type * | base, |
sai_reset_type_t | type | ||
) |
FIFO reset means clear all the data in the FIFO, and make the FIFO pointer both to 0. Software reset means clear the Rx internal logic, including the bit clock, frame count etc. But software reset will not clear any configuration registers like RCR1~RCR5. This function will also clear all the error flags such as FIFO error, sync error etc.
base | SAI base pointer |
type | Reset type, FIFO reset or software reset |
void SAI_TxSetChannelFIFOMask | ( | I2S_Type * | base, |
uint8_t | mask | ||
) |
base | SAI base pointer |
mask | Channel enable mask, 0 means all channel FIFO disabled, 1 means channel 0 enabled, 3 means both channel 0 and channel 1 enabled. |
void SAI_RxSetChannelFIFOMask | ( | I2S_Type * | base, |
uint8_t | mask | ||
) |
base | SAI base pointer |
mask | Channel enable mask, 0 means all channel FIFO disabled, 1 means channel 0 enabled, 3 means both channel 0 and channel 1 enabled. |
void SAI_TxSetDataOrder | ( | I2S_Type * | base, |
sai_data_order_t | order | ||
) |
base | SAI base pointer |
order | Data order MSB or LSB |
void SAI_RxSetDataOrder | ( | I2S_Type * | base, |
sai_data_order_t | order | ||
) |
base | SAI base pointer |
order | Data order MSB or LSB |
void SAI_TxSetBitClockPolarity | ( | I2S_Type * | base, |
sai_clock_polarity_t | polarity | ||
) |
base | SAI base pointer |
polarity |
void SAI_RxSetBitClockPolarity | ( | I2S_Type * | base, |
sai_clock_polarity_t | polarity | ||
) |
base | SAI base pointer |
polarity |
void SAI_TxSetFrameSyncPolarity | ( | I2S_Type * | base, |
sai_clock_polarity_t | polarity | ||
) |
base | SAI base pointer |
polarity |
void SAI_RxSetFrameSyncPolarity | ( | I2S_Type * | base, |
sai_clock_polarity_t | polarity | ||
) |
base | SAI base pointer |
polarity |
void SAI_TxSetFIFOPacking | ( | I2S_Type * | base, |
sai_fifo_packing_t | pack | ||
) |
base | SAI base pointer. |
pack | FIFO pack type. It is element of sai_fifo_packing_t. |
void SAI_RxSetFIFOPacking | ( | I2S_Type * | base, |
sai_fifo_packing_t | pack | ||
) |
base | SAI base pointer. |
pack | FIFO pack type. It is element of sai_fifo_packing_t. |
|
inlinestatic |
FIFO error continue mode means SAI will keep running while FIFO error occurred. If this feature not enabled, SAI will hang and users need to clear FEF flag in TCSR register.
base | SAI base pointer. |
isEnabled | Is FIFO error continue enabled, true means enable, false means disable. |
|
inlinestatic |
FIFO error continue mode means SAI will keep running while FIFO error occurred. If this feature not enabled, SAI will hang and users need to clear FEF flag in RCSR register.
base | SAI base pointer. |
isEnabled | Is FIFO error continue enabled, true means enable, false means disable. |
|
inlinestatic |
base | SAI base pointer |
mask | interrupt source The parameter can be a combination of the following sources if defined.
|
|
inlinestatic |
base | SAI base pointer |
mask | interrupt source The parameter can be a combination of the following sources if defined.
|
|
inlinestatic |
base | SAI base pointer |
mask | interrupt source The parameter can be a combination of the following sources if defined.
|
|
inlinestatic |
base | SAI base pointer |
mask | interrupt source The parameter can be a combination of the following sources if defined.
|
|
inlinestatic |
base | SAI base pointer |
mask | DMA source The parameter can be combination of the following sources if defined.
|
enable | True means enable DMA, false means disable DMA. |
|
inlinestatic |
base | SAI base pointer |
mask | DMA source The parameter can be a combination of the following sources if defined.
|
enable | True means enable DMA, false means disable DMA. |
|
inlinestatic |
This API is used to provide a transfer address for the SAI DMA transfer configuration.
base | SAI base pointer. |
channel | Which data channel used. |
|
inlinestatic |
This API is used to provide a transfer address for the SAI DMA transfer configuration.
base | SAI base pointer. |
channel | Which data channel used. |
void SAI_TxSetFormat | ( | I2S_Type * | base, |
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.
base | SAI base pointer. |
format | Pointer to the SAI audio data format structure. |
mclkSourceClockHz | SAI master clock source frequency in Hz. |
bclkSourceClockHz | SAI bit clock source frequency in Hz. If the bit clock source is a master clock, this value should equal the masterClockHz. |
void SAI_RxSetFormat | ( | I2S_Type * | base, |
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.
base | SAI base pointer. |
format | Pointer to the SAI audio data format structure. |
mclkSourceClockHz | SAI master clock source frequency in Hz. |
bclkSourceClockHz | SAI bit clock source frequency in Hz. If the bit clock source is a master clock, this value should equal the masterClockHz. |
void SAI_WriteBlocking | ( | I2S_Type * | base, |
uint32_t | channel, | ||
uint32_t | bitWidth, | ||
uint8_t * | buffer, | ||
uint32_t | size | ||
) |
base | SAI base pointer. |
channel | Data channel used. |
bitWidth | How many bits in an audio word; usually 8/16/24/32 bits. |
buffer | Pointer to the data to be written. |
size | Bytes to be written. |
void SAI_WriteMultiChannelBlocking | ( | I2S_Type * | base, |
uint32_t | channel, | ||
uint32_t | channelMask, | ||
uint32_t | bitWidth, | ||
uint8_t * | buffer, | ||
uint32_t | size | ||
) |
base | SAI base pointer. |
channel | Data channel used. |
channelMask | channel mask. |
bitWidth | How many bits in an audio word; usually 8/16/24/32 bits. |
buffer | Pointer to the data to be written. |
size | Bytes to be written. |
|
inlinestatic |
base | SAI base pointer. |
channel | Data channel used. |
data | Data needs to be written. |
void SAI_ReadBlocking | ( | I2S_Type * | base, |
uint32_t | channel, | ||
uint32_t | bitWidth, | ||
uint8_t * | buffer, | ||
uint32_t | size | ||
) |
base | SAI base pointer. |
channel | Data channel used. |
bitWidth | How many bits in an audio word; usually 8/16/24/32 bits. |
buffer | Pointer to the data to be read. |
size | Bytes to be read. |
void SAI_ReadMultiChannelBlocking | ( | I2S_Type * | base, |
uint32_t | channel, | ||
uint32_t | channelMask, | ||
uint32_t | bitWidth, | ||
uint8_t * | buffer, | ||
uint32_t | size | ||
) |
base | SAI base pointer. |
channel | Data channel used. |
channelMask | channel mask. |
bitWidth | How many bits in an audio word; usually 8/16/24/32 bits. |
buffer | Pointer to the data to be read. |
size | Bytes to be read. |
|
inlinestatic |
base | SAI base pointer. |
channel | Data channel used. |
void SAI_TransferTxCreateHandle | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
sai_transfer_callback_t | callback, | ||
void * | userData | ||
) |
This function initializes the Tx handle for the SAI Tx transactional APIs. Call this function once to get the handle initialized.
base | SAI base pointer |
handle | SAI handle pointer. |
callback | Pointer to the user callback function. |
userData | User parameter passed to the callback function |
void SAI_TransferRxCreateHandle | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
sai_transfer_callback_t | callback, | ||
void * | userData | ||
) |
This function initializes the Rx handle for the SAI Rx transactional APIs. Call this function once to get the handle initialized.
base | SAI base pointer. |
handle | SAI handle pointer. |
callback | Pointer to the user callback function. |
userData | User parameter passed to the callback function. |
void SAI_TransferTxSetConfig | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
sai_transceiver_t * | config | ||
) |
This function initializes the Tx, include bit clock, frame sync, master clock, serial data and fifo configurations.
base | SAI base pointer. |
handle | SAI handle pointer. |
config | tranmitter configurations. |
void SAI_TransferRxSetConfig | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
sai_transceiver_t * | config | ||
) |
This function initializes the Rx, include bit clock, frame sync, master clock, serial data and fifo configurations.
base | SAI base pointer. |
handle | SAI handle pointer. |
config | receiver configurations. |
status_t SAI_TransferTxSetFormat | ( | I2S_Type * | base, |
sai_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.
base | SAI base pointer. |
handle | SAI handle pointer. |
format | Pointer to the SAI audio data format structure. |
mclkSourceClockHz | SAI master clock source frequency in Hz. |
bclkSourceClockHz | SAI bit clock source frequency in Hz. If a bit clock source is a master clock, this value should equal the masterClockHz in format. |
status_t SAI_TransferRxSetFormat | ( | I2S_Type * | base, |
sai_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.
base | SAI base pointer. |
handle | SAI handle pointer. |
format | Pointer to the SAI audio data format structure. |
mclkSourceClockHz | SAI master clock source frequency in Hz. |
bclkSourceClockHz | SAI bit clock source frequency in Hz. If a bit clock source is a master clock, this value should equal the masterClockHz in format. |
status_t SAI_TransferSendNonBlocking | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
sai_transfer_t * | xfer | ||
) |
base | SAI base pointer. |
handle | Pointer to the sai_handle_t structure which stores the transfer state. |
xfer | Pointer to the sai_transfer_t structure. |
kStatus_Success | Successfully started the data receive. |
kStatus_SAI_TxBusy | Previous receive still not finished. |
kStatus_InvalidArgument | The input parameter is invalid. |
status_t SAI_TransferReceiveNonBlocking | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
sai_transfer_t * | xfer | ||
) |
base | SAI base pointer |
handle | Pointer to the sai_handle_t structure which stores the transfer state. |
xfer | Pointer to the sai_transfer_t structure. |
kStatus_Success | Successfully started the data receive. |
kStatus_SAI_RxBusy | Previous receive still not finished. |
kStatus_InvalidArgument | The input parameter is invalid. |
status_t SAI_TransferGetSendCount | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
size_t * | count | ||
) |
base | SAI base pointer. |
handle | Pointer to the sai_handle_t structure which stores the transfer state. |
count | Bytes count sent. |
kStatus_Success | Succeed get the transfer count. |
kStatus_NoTransferInProgress | There is not a non-blocking transaction currently in progress. |
status_t SAI_TransferGetReceiveCount | ( | I2S_Type * | base, |
sai_handle_t * | handle, | ||
size_t * | count | ||
) |
base | SAI base pointer. |
handle | Pointer to the sai_handle_t structure which stores the transfer state. |
count | Bytes count received. |
kStatus_Success | Succeed get the transfer count. |
kStatus_NoTransferInProgress | There is not a non-blocking transaction currently in progress. |
void SAI_TransferAbortSend | ( | I2S_Type * | base, |
sai_handle_t * | handle | ||
) |
base | SAI base pointer. |
handle | Pointer to the sai_handle_t structure which stores the transfer state. |
void SAI_TransferAbortReceive | ( | I2S_Type * | base, |
sai_handle_t * | handle | ||
) |
base | SAI base pointer |
handle | Pointer to the sai_handle_t structure which stores the transfer state. |
void SAI_TransferTerminateSend | ( | I2S_Type * | base, |
sai_handle_t * | handle | ||
) |
This function will clear all transfer slots buffered in the sai queue. If users only want to abort the current transfer slot, please call SAI_TransferAbortSend.
base | SAI base pointer. |
handle | SAI eDMA handle pointer. |
void SAI_TransferTerminateReceive | ( | I2S_Type * | base, |
sai_handle_t * | handle | ||
) |
This function will clear all transfer slots buffered in the sai queue. If users only want to abort the current transfer slot, please call SAI_TransferAbortReceive.
base | SAI base pointer. |
handle | SAI eDMA handle pointer. |
void SAI_TransferTxHandleIRQ | ( | I2S_Type * | base, |
sai_handle_t * | handle | ||
) |
base | SAI base pointer. |
handle | Pointer to the sai_handle_t structure. |
void SAI_TransferRxHandleIRQ | ( | I2S_Type * | base, |
sai_handle_t * | handle | ||
) |
base | SAI base pointer. |
handle | Pointer to the sai_handle_t structure. |