Data Structures | |
struct | I2SControlTable |
A structure that defines an audio control table. Note: Memory for this structure must be initialized by user application. See detailed description! More... | |
Functions | |
void | I2SEnable (uint32_t ui32Base) |
Enables the I2S module for operation. More... | |
static void | I2SDisable (uint32_t ui32Base) |
Disables the I2S module for operation. More... | |
void | I2SAudioFormatConfigure (uint32_t ui32Base, uint32_t ui32FmtCfg, uint32_t ui32BitClkDelay) |
Configures the I2S module. More... | |
void | I2SChannelConfigure (uint32_t ui32Base, uint32_t ui32Chan0Cfg, uint32_t ui32Chan1Cfg, uint32_t ui32Chan2Cfg) |
Setup the audio channel configuration. More... | |
static void | I2SClockConfigure (uint32_t ui32Base, uint32_t ui32ClkConfig) |
Configure the I2S frame clock. More... | |
void | I2SBufferConfig (uint32_t ui32Base, uint32_t ui32InBufBase, uint32_t ui32OutBufBase, uint16_t ui16DMABufSize, uint16_t ui16ChanBufSize) |
Set the input buffer pointers. More... | |
void | I2SPointerUpdate (uint32_t ui32Base, bool bInput) |
Update the buffer pointers. More... | |
void | I2SPointerSet (uint32_t ui32Base, bool bInput, void *pNextPointer) |
Set a buffer pointer (input or output) directly. More... | |
static void | I2SIntRegister (uint32_t ui32Base, void(*pfnHandler)(void)) |
Registers an interrupt handler for an I2S interrupt. More... | |
static void | I2SIntUnregister (uint32_t ui32Base) |
Unregisters an interrupt handler for a I2S interrupt. More... | |
static void | I2SIntEnable (uint32_t ui32Base, uint32_t ui32IntFlags) |
Enables individual I2S interrupt sources. More... | |
static void | I2SIntDisable (uint32_t ui32Base, uint32_t ui32IntFlags) |
Disables individual I2S interrupt sources. More... | |
static uint32_t | I2SIntStatus (uint32_t ui32Base, bool bMasked) |
Gets the current interrupt status. More... | |
static void | I2SIntClear (uint32_t ui32Base, uint32_t ui32IntFlags) |
Clears I2S interrupt sources. More... | |
static void | I2SSampleStampEnable (uint32_t ui32Base) |
Enable the Sample Stamp generator. More... | |
static void | I2SSampleStampDisable (uint32_t ui32Base) |
Disable the Sample Stamp generator. More... | |
void | I2SSampleStampConfigure (uint32_t ui32Base, bool bInput, bool bOutput) |
Configure the sample stamp generator. More... | |
uint32_t | I2SSampleStampGet (uint32_t ui32Base, uint32_t ui32Channel) |
Get the current value of a sample stamp counter. More... | |
Variables | |
I2SControlTable * | g_pControlTable |
void I2SAudioFormatConfigure | ( | uint32_t | ui32Base, |
uint32_t | ui32FmtCfg, | ||
uint32_t | ui32BitClkDelay | ||
) |
Configures the I2S module.
The word length defines the size of the word transmitted on the data lines. For single phased formats I2S_WORD_LENGTH_x
is the exact number of bits per word. In dual phased format this is the maximum number of bits per word. The size is set using I2S_WORD_LENGTH_8, I2S_WORD_LENGTH_16 or I2S_WORD_LENGTH_24.
ui32Base | is the I2S module base address. |
ui32FmtCfg | is the bitwise OR of several options:
|
ui32BitClkDelay | defines the bit clock delay by setting the number of bit clock periods between the positive word clock edge and the MSB of the first word in a phase. The bit clock delay is determined by the ratio between the bit clock and the frame clock and the chosen audio format. The bit clock delay must be configured depending on the chosen audio format:
|
void I2SBufferConfig | ( | uint32_t | ui32Base, |
uint32_t | ui32InBufBase, | ||
uint32_t | ui32OutBufBase, | ||
uint16_t | ui16DMABufSize, | ||
uint16_t | ui16ChanBufSize | ||
) |
Set the input buffer pointers.
The next pointer should always be written while the DMA is using the previous written pointer. If not written in time an I2S_INT_PTR_ERR will occur and all outputs will be disabled.
ui32Base | is the base address of the I2S module. |
ui32InBufBase | is the address of the input buffer. |
ui32OutBufBase | is the address of the output buffer. |
ui16DMABufSize | is the size of the DMA buffers. Must be greater than 0! |
ui16ChanBufSize | is the size of the channel buffers. |
void I2SChannelConfigure | ( | uint32_t | ui32Base, |
uint32_t | ui32Chan0Cfg, | ||
uint32_t | ui32Chan1Cfg, | ||
uint32_t | ui32Chan2Cfg | ||
) |
Setup the audio channel configuration.
The channel configuration is a bitwise OR of the input/output mode of each data line and the active audio channels within a specific audio frame.
Setting up the input/output mode use one of:
For dual phased audio (LJF,RJF,I2S) only mono and stereo modes are allowed. For single phased audio format (DSP) up to 8 active channels are allowed on a single data line. For setting up the active channels in a frame use:
ui32Base | is base address of the I2S module. |
ui32Chan0Cfg | defines the channel configuration for data line 0. |
ui32Chan1Cfg | defines the channel configuration for data line 1. |
ui32Chan2Cfg | defines the channel configuration for data line 2. |
|
inlinestatic |
Configure the I2S frame clock.
Configure I2S clock to be either internal or external and either normal or inverted.
ui32Base | is the base address of the I2S module. |
ui32ClkConfig | is the clock configuration parameter. Bitwise OR'ed combination of clock source and clock polarity:
|
|
inlinestatic |
Disables the I2S module for operation.
This function will immediately disable the I2S module. To ensure that all buffer operations are completed before shutting down, the correct procedure is:
ui32Base | is the I2S module base address. |
void I2SEnable | ( | uint32_t | ui32Base | ) |
Enables the I2S module for operation.
ui32Base | is the I2S module base address. |
|
inlinestatic |
Clears I2S interrupt sources.
The specified I2S interrupt sources are cleared, so that they no longer assert. This function must be called in the interrupt handler to keep the interrupt from being recognized again immediately upon exit.
ui32Base | is the base address of the I2S port. |
ui32IntFlags | is a bit mask of the interrupt sources to be cleared. The parameter is the bitwise OR of any of the following:
|
|
inlinestatic |
Disables individual I2S interrupt sources.
This function disables the indicated I2S interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor.
ui32Base | is the base address of the I2S port. |
ui32IntFlags | is the bit mask of the interrupt sources to be disabled. The parameter is the bitwise OR of any of the following:
|
|
inlinestatic |
Enables individual I2S interrupt sources.
This function enables the indicated I2S interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor.
ui32Base | is the base address of the I2S port. |
ui32IntFlags | is the bit mask of the interrupt sources to be enabled. The parameter is the bitwise OR of any of the following:
|
|
inlinestatic |
Registers an interrupt handler for an I2S interrupt.
This function does the actual registering of the interrupt handler. This function enables the global interrupt in the interrupt controller; specific I2S interrupts must be enabled via I2SIntEnable(). It is the interrupt handler's responsibility to clear the interrupt source.
ui32Base | is the base address of the I2S port. |
pfnHandler | is a pointer to the function to be called when the I2S interrupt occurs. |
Definition at line 528 of file i2s.h.
|
inlinestatic |
Gets the current interrupt status.
This function returns the interrupt status for the specified I2S. Either the raw interrupt status or the status of interrupts that are allowed to reflect to the processor can be returned.
ui32Base | is the base address of the I2S port |
bMasked | selects between raw and masked interrupt status:
|
|
inlinestatic |
Unregisters an interrupt handler for a I2S interrupt.
This function does the actual unregistering of the interrupt handler. It clears the handler to be called when an I2S interrupt occurs. This function also masks off the interrupt in the interrupt controller so that the interrupt handler no longer is called.
ui32Base | is the base address of the I2S port. |
Definition at line 564 of file i2s.h.
void I2SPointerSet | ( | uint32_t | ui32Base, |
bool | bInput, | ||
void * | pNextPointer | ||
) |
Set a buffer pointer (input or output) directly.
This function allows bypassing of the pointers in the global control table.
The next pointer should always be written while the DMA is using the previous written pointer. If not written in time an I2S_INT_PTR_ERR will occur and all outputs will be disabled. Nothing is preventing the pointers from being identical, but this function relies on both pointers (input or output pointers) are pointing to a valid address.
ui32Base | is the base address of the I2S module. |
bInput | determines whether to update input or output pointer.
|
pNextPointer | is a void pointer to user defined buffer. |
Set a buffer pointer (input or output) directly.
void I2SPointerUpdate | ( | uint32_t | ui32Base, |
bool | bInput | ||
) |
Update the buffer pointers.
The next pointer should always be written while the DMA is using the previous written pointer. If not written in time an I2S_INT_PTR_ERR will occur and all outputs will be disabled. Nothing is preventing the pointers from being identical, but this function relies on both pointers (input or output pointers) are pointing to a valid address.
ui32Base | is the base address of the I2S module. |
bInput | determines whether to update input or output pointer.
|
void I2SSampleStampConfigure | ( | uint32_t | ui32Base, |
bool | bInput, | ||
bool | bOutput | ||
) |
Configure the sample stamp generator.
Use this function to configure the sample stamp generator.
ui32Base | is the base address of the I2S module. |
bInput | enables triggering of the sample stamp generator on input. |
bOutput | enables triggering of the sample stamp generator on output. |
|
inlinestatic |
|
inlinestatic |
Enable the Sample Stamp generator.
Use this function to enable the sample stamp generators.
uint32_t I2SSampleStampGet | ( | uint32_t | ui32Base, |
uint32_t | ui32Channel | ||
) |
#define I2S_CHAN_CFG_MASK 0x0000FF00 |
Definition at line 186 of file i2s.h.
Referenced by I2SChannelConfigure().
#define I2S_LINE_INPUT 0x00000001 |
Definition at line 167 of file i2s.h.
Referenced by I2SChannelConfigure().
#define I2S_LINE_MASK 0x00000003 |
Definition at line 169 of file i2s.h.
Referenced by I2SChannelConfigure().
#define I2S_LINE_OUTPUT 0x00000002 |
Definition at line 168 of file i2s.h.
Referenced by I2SChannelConfigure().
#define I2S_MEM_LENGTH_24 0x00000080 |
Definition at line 194 of file i2s.h.
Referenced by I2SAudioFormatConfigure().
#define I2S_STMP_SATURATION 0x0000FFFF |
Definition at line 210 of file i2s.h.
Referenced by I2SSampleStampGet().
I2SControlTable* g_pControlTable |