MCUXpresso SDK API Reference Manual
Rev. 0
NXP Semiconductors
|
Files | |
file | fsl_i2s.h |
Data Structures | |
struct | i2s_config_t |
I2S configuration structure. More... | |
struct | i2s_transfer_t |
Buffer to transfer from or receive audio data into. More... | |
struct | i2s_handle_t |
Members not to be accessed / modified outside of the driver. More... | |
Macros | |
#define | I2S_NUM_BUFFERS (4U) |
Number of buffers . More... | |
Typedefs | |
typedef void(* | i2s_transfer_callback_t )(I2S_Type *base, i2s_handle_t *handle, status_t completionStatus, void *userData) |
Callback function invoked from transactional API on completion of a single buffer transfer. More... | |
Enumerations | |
enum | { kStatus_I2S_BufferComplete, kStatus_I2S_Done = MAKE_STATUS(kStatusGroup_I2S, 1), kStatus_I2S_Busy } |
_i2s_status I2S status codes. More... | |
enum | i2s_flags_t { kI2S_TxErrorFlag = I2S_FIFOINTENSET_TXERR_MASK, kI2S_TxLevelFlag = I2S_FIFOINTENSET_TXLVL_MASK, kI2S_RxErrorFlag = I2S_FIFOINTENSET_RXERR_MASK, kI2S_RxLevelFlag = I2S_FIFOINTENSET_RXLVL_MASK } |
I2S flags. More... | |
enum | i2s_master_slave_t { kI2S_MasterSlaveNormalSlave = 0x0, kI2S_MasterSlaveWsSyncMaster = 0x1, kI2S_MasterSlaveExtSckMaster = 0x2, kI2S_MasterSlaveNormalMaster = 0x3 } |
Master / slave mode. More... | |
enum | i2s_mode_t { kI2S_ModeI2sClassic = 0x0, kI2S_ModeDspWs50 = 0x1, kI2S_ModeDspWsShort = 0x2, kI2S_ModeDspWsLong = 0x3 } |
I2S mode. More... | |
enum | { kI2S_SecondaryChannel1 = 0U, kI2S_SecondaryChannel2 = 1U, kI2S_SecondaryChannel3 = 2U } |
_i2s_secondary_channel I2S secondary channel. More... | |
Driver version | |
#define | FSL_I2S_DRIVER_VERSION (MAKE_VERSION(2, 2, 0)) |
I2S driver version 2.2.0. More... | |
Initialization and deinitialization | |
void | I2S_TxInit (I2S_Type *base, const i2s_config_t *config) |
Initializes the FLEXCOMM peripheral for I2S transmit functionality. More... | |
void | I2S_RxInit (I2S_Type *base, const i2s_config_t *config) |
Initializes the FLEXCOMM peripheral for I2S receive functionality. More... | |
void | I2S_TxGetDefaultConfig (i2s_config_t *config) |
Sets the I2S Tx configuration structure to default values. More... | |
void | I2S_RxGetDefaultConfig (i2s_config_t *config) |
Sets the I2S Rx configuration structure to default values. More... | |
void | I2S_Deinit (I2S_Type *base) |
De-initializes the I2S peripheral. More... | |
void | I2S_SetBitClockRate (I2S_Type *base, uint32_t sourceClockHz, uint32_t sampleRate, uint32_t bitWidth, uint32_t channelNumbers) |
Transmitter/Receiver bit clock rate configurations. More... | |
Non-blocking API | |
void | I2S_TxTransferCreateHandle (I2S_Type *base, i2s_handle_t *handle, i2s_transfer_callback_t callback, void *userData) |
Initializes handle for transfer of audio data. More... | |
status_t | I2S_TxTransferNonBlocking (I2S_Type *base, i2s_handle_t *handle, i2s_transfer_t transfer) |
Begins or queue sending of the given data. More... | |
void | I2S_TxTransferAbort (I2S_Type *base, i2s_handle_t *handle) |
Aborts sending of data. More... | |
void | I2S_RxTransferCreateHandle (I2S_Type *base, i2s_handle_t *handle, i2s_transfer_callback_t callback, void *userData) |
Initializes handle for reception of audio data. More... | |
status_t | I2S_RxTransferNonBlocking (I2S_Type *base, i2s_handle_t *handle, i2s_transfer_t transfer) |
Begins or queue reception of data into given buffer. More... | |
void | I2S_RxTransferAbort (I2S_Type *base, i2s_handle_t *handle) |
Aborts receiving of data. More... | |
status_t | I2S_TransferGetCount (I2S_Type *base, i2s_handle_t *handle, size_t *count) |
Returns number of bytes transferred so far. More... | |
status_t | I2S_TransferGetErrorCount (I2S_Type *base, i2s_handle_t *handle, size_t *count) |
Returns number of buffer underruns or overruns. More... | |
Enable / disable | |
static void | I2S_Enable (I2S_Type *base) |
Enables I2S operation. More... | |
void | I2S_EnableSecondaryChannel (I2S_Type *base, uint32_t channel, bool oneChannel, uint32_t position) |
Enables I2S secondary channel. More... | |
static void | I2S_DisableSecondaryChannel (I2S_Type *base, uint32_t channel) |
Disables I2S secondary channel. More... | |
static void | I2S_Disable (I2S_Type *base) |
Disables I2S operation. More... | |
Interrupts | |
static void | I2S_EnableInterrupts (I2S_Type *base, uint32_t interruptMask) |
Enables I2S FIFO interrupts. More... | |
static void | I2S_DisableInterrupts (I2S_Type *base, uint32_t interruptMask) |
Disables I2S FIFO interrupts. More... | |
static uint32_t | I2S_GetEnabledInterrupts (I2S_Type *base) |
Returns the set of currently enabled I2S FIFO interrupts. More... | |
void | I2S_TxHandleIRQ (I2S_Type *base, i2s_handle_t *handle) |
Invoked from interrupt handler when transmit FIFO level decreases. More... | |
void | I2S_RxHandleIRQ (I2S_Type *base, i2s_handle_t *handle) |
Invoked from interrupt handler when receive FIFO level decreases. More... | |
struct i2s_config_t |
Data Fields | |
i2s_master_slave_t | masterSlave |
Master / slave configuration. | |
i2s_mode_t | mode |
I2S mode. | |
bool | rightLow |
Right channel data in low portion of FIFO. | |
bool | leftJust |
Left justify data in FIFO. | |
bool | pdmData |
Data source is the D-Mic subsystem. | |
bool | sckPol |
SCK polarity. | |
bool | wsPol |
WS polarity. | |
uint16_t | divider |
Flexcomm function clock divider (1 - 4096) | |
bool | oneChannel |
true mono, false stereo | |
uint8_t | dataLength |
Data length (4 - 32) | |
uint16_t | frameLength |
Frame width (4 - 512) | |
uint16_t | position |
Data position in the frame. | |
uint8_t | watermark |
FIFO trigger level. | |
bool | txEmptyZero |
Transmit zero when buffer becomes empty or last item. | |
bool | pack48 |
Packing format for 48-bit data (false - 24 bit values, true - alternating 32-bit and 16-bit values) | |
struct i2s_transfer_t |
struct _i2s_handle |
Transactional state of the intialized transfer or receive I2S operation.
Data Fields | |
uint32_t | state |
State of transfer. | |
i2s_transfer_callback_t | completionCallback |
Callback function pointer. | |
void * | userData |
Application data passed to callback. | |
bool | oneChannel |
true mono, false stereo | |
uint8_t | dataLength |
Data length (4 - 32) | |
bool | pack48 |
Packing format for 48-bit data (false - 24 bit values, true - alternating 32-bit and 16-bit values) | |
uint8_t | watermark |
FIFO trigger level. | |
bool | useFifo48H |
When dataLength 17-24: true use FIFOWR48H, false use FIFOWR. | |
volatile i2s_transfer_t | i2sQueue [I2S_NUM_BUFFERS] |
Transfer queue storing transfer buffers. | |
volatile uint8_t | queueUser |
Queue index where user's next transfer will be stored. | |
volatile uint8_t | queueDriver |
Queue index of buffer actually used by the driver. | |
volatile uint32_t | errorCount |
Number of buffer underruns/overruns. | |
volatile uint32_t | transferCount |
Number of bytes transferred. | |
#define FSL_I2S_DRIVER_VERSION (MAKE_VERSION(2, 2, 0)) |
#define I2S_NUM_BUFFERS (4U) |
typedef void(* i2s_transfer_callback_t)(I2S_Type *base, i2s_handle_t *handle, status_t completionStatus, void *userData) |
base | I2S base pointer. |
handle | pointer to I2S transaction. |
completionStatus | status of the transaction. |
userData | optional pointer to user arguments data. |
anonymous enum |
enum i2s_flags_t |
enum i2s_master_slave_t |
enum i2s_mode_t |
anonymous enum |
void I2S_TxInit | ( | I2S_Type * | base, |
const i2s_config_t * | config | ||
) |
Ungates the FLEXCOMM clock and configures the module for I2S transmission using a configuration structure. The configuration structure can be custom filled or set with default values by I2S_TxGetDefaultConfig().
base | I2S base pointer. |
config | pointer to I2S configuration structure. |
void I2S_RxInit | ( | I2S_Type * | base, |
const i2s_config_t * | config | ||
) |
Ungates the FLEXCOMM clock and configures the module for I2S receive using a configuration structure. The configuration structure can be custom filled or set with default values by I2S_RxGetDefaultConfig().
base | I2S base pointer. |
config | pointer to I2S configuration structure. |
void I2S_TxGetDefaultConfig | ( | i2s_config_t * | config | ) |
This API initializes the configuration structure for use in I2S_TxInit(). The initialized structure can remain unchanged in I2S_TxInit(), or it can be modified before calling I2S_TxInit(). Example:
Default values:
config | pointer to I2S configuration structure. |
void I2S_RxGetDefaultConfig | ( | i2s_config_t * | config | ) |
This API initializes the configuration structure for use in I2S_RxInit(). The initialized structure can remain unchanged in I2S_RxInit(), or it can be modified before calling I2S_RxInit(). Example:
Default values:
config | pointer to I2S configuration structure. |
void I2S_Deinit | ( | I2S_Type * | base | ) |
This API gates the FLEXCOMM clock. The I2S module can't operate unless I2S_TxInit or I2S_RxInit is called to enable the clock.
base | I2S base pointer. |
void I2S_SetBitClockRate | ( | 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 I2S_TxTransferCreateHandle | ( | I2S_Type * | base, |
i2s_handle_t * | handle, | ||
i2s_transfer_callback_t | callback, | ||
void * | userData | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
callback | function to be called back when transfer is done or fails. |
userData | pointer to data passed to callback. |
status_t I2S_TxTransferNonBlocking | ( | I2S_Type * | base, |
i2s_handle_t * | handle, | ||
i2s_transfer_t | transfer | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
transfer | data buffer. |
kStatus_Success | |
kStatus_I2S_Busy | if all queue slots are occupied with unsent buffers. |
void I2S_TxTransferAbort | ( | I2S_Type * | base, |
i2s_handle_t * | handle | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
void I2S_RxTransferCreateHandle | ( | I2S_Type * | base, |
i2s_handle_t * | handle, | ||
i2s_transfer_callback_t | callback, | ||
void * | userData | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
callback | function to be called back when transfer is done or fails. |
userData | pointer to data passed to callback. |
status_t I2S_RxTransferNonBlocking | ( | I2S_Type * | base, |
i2s_handle_t * | handle, | ||
i2s_transfer_t | transfer | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
transfer | data buffer. |
kStatus_Success | |
kStatus_I2S_Busy | if all queue slots are occupied with buffers which are not full. |
void I2S_RxTransferAbort | ( | I2S_Type * | base, |
i2s_handle_t * | handle | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
status_t I2S_TransferGetCount | ( | I2S_Type * | base, |
i2s_handle_t * | handle, | ||
size_t * | count | ||
) |
base | I2S base pointer. | |
handle | pointer to handle structure. | |
[out] | count | number of bytes transferred so far by the non-blocking transaction. |
kStatus_Success | |
kStatus_NoTransferInProgress | there is no non-blocking transaction currently in progress. |
status_t I2S_TransferGetErrorCount | ( | I2S_Type * | base, |
i2s_handle_t * | handle, | ||
size_t * | count | ||
) |
base | I2S base pointer. | |
handle | pointer to handle structure. | |
[out] | count | number of transmit errors encountered so far by the non-blocking transaction. |
kStatus_Success | |
kStatus_NoTransferInProgress | there is no non-blocking transaction currently in progress. |
|
inlinestatic |
base | I2S base pointer. |
void I2S_EnableSecondaryChannel | ( | I2S_Type * | base, |
uint32_t | channel, | ||
bool | oneChannel, | ||
uint32_t | position | ||
) |
base | I2S base pointer. |
channel | seondary channel channel number, reference _i2s_secondary_channel. |
oneChannel | true is treated as single channel, functionality left channel for this pair. |
position | define the location within the frame of the data, should not bigger than 0x1FFU. |
|
inlinestatic |
base | I2S base pointer. |
channel | seondary channel channel number, reference _i2s_secondary_channel. |
|
inlinestatic |
base | I2S base pointer. |
|
inlinestatic |
base | I2S base pointer. |
interruptMask | bit mask of interrupts to enable. See i2s_flags_t for the set of constants that should be OR'd together to form the bit mask. |
|
inlinestatic |
base | I2S base pointer. |
interruptMask | bit mask of interrupts to enable. See i2s_flags_t for the set of constants that should be OR'd together to form the bit mask. |
|
inlinestatic |
base | I2S base pointer. |
void I2S_TxHandleIRQ | ( | I2S_Type * | base, |
i2s_handle_t * | handle | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |
void I2S_RxHandleIRQ | ( | I2S_Type * | base, |
i2s_handle_t * | handle | ||
) |
base | I2S base pointer. |
handle | pointer to handle structure. |