The KSDK provides a peripheral driver for the Sony/Philips Digital Interface (SPDIF) module of Kinetis devices.
SPDIF driver includes functional APIs and transactional APIs.
Functional APIs target low-level APIs. Functional APIs can be used for SPDIF initialization/configuration/operation for optimization/customization purpose. Using the functional API requires the knowledge of the SPDIF peripheral and how to organize functional APIs to meet the application requirements. All functional API use the peripheral base address as the first parameter. SPDIF functional operation groups provide the functional API set.
Transactional APIs target high-level APIs. Transactional APIs can be used to enable the peripheral and in the application if the code size and performance of transactional APIs satisfy the requirements. If the code size and performance are a critical requirement, see the transactional API implementation and write a custom code. All transactional APIs use the spdif_handle_t as the first parameter. Initialize the handle by calling the SPDIF_TransferTxCreateHandle() or SPDIF_TransferRxCreateHandle() API.
Transactional APIs support asynchronous transfer. This means that the functions SPDIF_TransferSendNonBlocking() and SPDIF_TransferReceiveNonBlocking() set up the interrupt for data transfer. When the transfer completes, the upper layer is notified through a callback function with the kStatus_SPDIF_TxIdle and kStatus_SPDIF_RxIdle status.
Typical use case
SPDIF Send/receive using an interrupt method
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/spdif
SPDIF Send/receive using a DMA method
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/spdif
|
typedef void(* | spdif_transfer_callback_t )(SPDIF_Type *base, spdif_handle_t *handle, status_t status, void *userData) |
| SPDIF transfer callback prototype.
|
|
|
enum | _spdif_status_t {
kStatus_SPDIF_RxDPLLLocked = MAKE_STATUS(kStatusGroup_SPDIF, 0),
kStatus_SPDIF_TxFIFOError = MAKE_STATUS(kStatusGroup_SPDIF, 1),
kStatus_SPDIF_TxFIFOResync = MAKE_STATUS(kStatusGroup_SPDIF, 2),
kStatus_SPDIF_RxCnew = MAKE_STATUS(kStatusGroup_SPDIF, 3),
kStatus_SPDIF_ValidatyNoGood = MAKE_STATUS(kStatusGroup_SPDIF, 4),
kStatus_SPDIF_RxIllegalSymbol = MAKE_STATUS(kStatusGroup_SPDIF, 5),
kStatus_SPDIF_RxParityBitError = MAKE_STATUS(kStatusGroup_SPDIF, 6),
kStatus_SPDIF_UChannelOverrun = MAKE_STATUS(kStatusGroup_SPDIF, 7),
kStatus_SPDIF_QChannelOverrun = MAKE_STATUS(kStatusGroup_SPDIF, 8),
kStatus_SPDIF_UQChannelSync = MAKE_STATUS(kStatusGroup_SPDIF, 9),
kStatus_SPDIF_UQChannelFrameError = MAKE_STATUS(kStatusGroup_SPDIF, 10),
kStatus_SPDIF_RxFIFOError = MAKE_STATUS(kStatusGroup_SPDIF, 11),
kStatus_SPDIF_RxFIFOResync = MAKE_STATUS(kStatusGroup_SPDIF, 12),
kStatus_SPDIF_LockLoss = MAKE_STATUS(kStatusGroup_SPDIF, 13),
kStatus_SPDIF_TxIdle = MAKE_STATUS(kStatusGroup_SPDIF, 14),
kStatus_SPDIF_RxIdle = MAKE_STATUS(kStatusGroup_SPDIF, 15),
kStatus_SPDIF_QueueFull = MAKE_STATUS(kStatusGroup_SPDIF, 16)
} |
| SPDIF return status. More...
|
|
enum | spdif_rxfull_select_t {
kSPDIF_RxFull1Sample = 0x0u,
kSPDIF_RxFull4Samples,
kSPDIF_RxFull8Samples,
kSPDIF_RxFull16Samples
} |
| SPDIF Rx FIFO full falg select, it decides when assert the rx full flag. More...
|
|
enum | spdif_txempty_select_t {
kSPDIF_TxEmpty0Sample = 0x0u,
kSPDIF_TxEmpty4Samples,
kSPDIF_TxEmpty8Samples,
kSPDIF_TxEmpty12Samples
} |
| SPDIF tx FIFO EMPTY falg select, it decides when assert the tx empty flag. More...
|
|
enum | spdif_uchannel_source_t {
kSPDIF_NoUChannel = 0x0U,
kSPDIF_UChannelFromRx = 0x1U,
kSPDIF_UChannelFromTx = 0x3U
} |
| SPDIF U channel source. More...
|
|
enum | spdif_gain_select_t {
kSPDIF_GAIN_24 = 0x0U,
kSPDIF_GAIN_16,
kSPDIF_GAIN_12,
kSPDIF_GAIN_8,
kSPDIF_GAIN_6,
kSPDIF_GAIN_4,
kSPDIF_GAIN_3
} |
| SPDIF clock gain. More...
|
|
enum | spdif_tx_source_t {
kSPDIF_txFromReceiver = 0x1U,
kSPDIF_txNormal = 0x5U
} |
| SPDIF tx data source. More...
|
|
enum | spdif_validity_config_t {
kSPDIF_validityFlagAlwaysSet = 0x0U,
kSPDIF_validityFlagAlwaysClear
} |
| SPDIF tx data source. More...
|
|
enum | _spdif_interrupt_enable_t {
kSPDIF_RxDPLLLocked = SPDIF_SIE_LOCK_MASK,
kSPDIF_TxFIFOError = SPDIF_SIE_TXUNOV_MASK,
kSPDIF_TxFIFOResync = SPDIF_SIE_TXRESYN_MASK,
kSPDIF_RxControlChannelChange = SPDIF_SIE_CNEW_MASK,
kSPDIF_ValidityFlagNoGood = SPDIF_SIE_VALNOGOOD_MASK,
kSPDIF_RxIllegalSymbol = SPDIF_SIE_SYMERR_MASK,
kSPDIF_RxParityBitError = SPDIF_SIE_BITERR_MASK,
kSPDIF_UChannelReceiveRegisterFull = SPDIF_SIE_URXFUL_MASK,
kSPDIF_UChannelReceiveRegisterOverrun = SPDIF_SIE_URXOV_MASK,
kSPDIF_QChannelReceiveRegisterFull = SPDIF_SIE_QRXFUL_MASK,
kSPDIF_QChannelReceiveRegisterOverrun = SPDIF_SIE_QRXOV_MASK,
kSPDIF_UQChannelSync = SPDIF_SIE_UQSYNC_MASK,
kSPDIF_UQChannelFrameError = SPDIF_SIE_UQERR_MASK,
kSPDIF_RxFIFOError = SPDIF_SIE_RXFIFOUNOV_MASK,
kSPDIF_RxFIFOResync = SPDIF_SIE_RXFIFORESYN_MASK,
kSPDIF_LockLoss = SPDIF_SIE_LOCKLOSS_MASK,
kSPDIF_TxFIFOEmpty = SPDIF_SIE_TXEM_MASK,
kSPDIF_RxFIFOFull = SPDIF_SIE_RXFIFOFUL_MASK
} |
| The SPDIF interrupt enable flag. More...
|
|
enum | _spdif_dma_enable_t {
kSPDIF_RxDMAEnable = SPDIF_SCR_DMA_RX_EN_MASK,
kSPDIF_TxDMAEnable = SPDIF_SCR_DMA_TX_EN_MASK
} |
| The DMA request sources. More...
|
|
|
void | SPDIF_TxSetSampleRate (SPDIF_Type *base, uint32_t sampleRate_Hz, uint32_t sourceClockFreq_Hz) |
| Configures the SPDIF Tx sample rate. More...
|
|
uint32_t | SPDIF_GetRxSampleRate (SPDIF_Type *base, uint32_t clockSourceFreq_Hz) |
| Configures the SPDIF Rx audio format. More...
|
|
void | SPDIF_WriteBlocking (SPDIF_Type *base, uint8_t *buffer, uint32_t size) |
| Sends data using a blocking method. More...
|
|
static void | SPDIF_WriteLeftData (SPDIF_Type *base, uint32_t data) |
| Writes data into SPDIF FIFO. More...
|
|
static void | SPDIF_WriteRightData (SPDIF_Type *base, uint32_t data) |
| Writes data into SPDIF FIFO. More...
|
|
static void | SPDIF_WriteChannelStatusHigh (SPDIF_Type *base, uint32_t data) |
| Writes data into SPDIF FIFO. More...
|
|
static void | SPDIF_WriteChannelStatusLow (SPDIF_Type *base, uint32_t data) |
| Writes data into SPDIF FIFO. More...
|
|
void | SPDIF_ReadBlocking (SPDIF_Type *base, uint8_t *buffer, uint32_t size) |
| Receives data using a blocking method. More...
|
|
static uint32_t | SPDIF_ReadLeftData (SPDIF_Type *base) |
| Reads data from the SPDIF FIFO. More...
|
|
static uint32_t | SPDIF_ReadRightData (SPDIF_Type *base) |
| Reads data from the SPDIF FIFO. More...
|
|
static uint32_t | SPDIF_ReadChannelStatusHigh (SPDIF_Type *base) |
| Reads data from the SPDIF FIFO. More...
|
|
static uint32_t | SPDIF_ReadChannelStatusLow (SPDIF_Type *base) |
| Reads data from the SPDIF FIFO. More...
|
|
static uint32_t | SPDIF_ReadQChannel (SPDIF_Type *base) |
| Reads data from the SPDIF FIFO. More...
|
|
static uint32_t | SPDIF_ReadUChannel (SPDIF_Type *base) |
| Reads data from the SPDIF FIFO. More...
|
|
|
void | SPDIF_TransferTxCreateHandle (SPDIF_Type *base, spdif_handle_t *handle, spdif_transfer_callback_t callback, void *userData) |
| Initializes the SPDIF Tx handle. More...
|
|
void | SPDIF_TransferRxCreateHandle (SPDIF_Type *base, spdif_handle_t *handle, spdif_transfer_callback_t callback, void *userData) |
| Initializes the SPDIF Rx handle. More...
|
|
status_t | SPDIF_TransferSendNonBlocking (SPDIF_Type *base, spdif_handle_t *handle, spdif_transfer_t *xfer) |
| Performs an interrupt non-blocking send transfer on SPDIF. More...
|
|
status_t | SPDIF_TransferReceiveNonBlocking (SPDIF_Type *base, spdif_handle_t *handle, spdif_transfer_t *xfer) |
| Performs an interrupt non-blocking receive transfer on SPDIF. More...
|
|
status_t | SPDIF_TransferGetSendCount (SPDIF_Type *base, spdif_handle_t *handle, size_t *count) |
| Gets a set byte count. More...
|
|
status_t | SPDIF_TransferGetReceiveCount (SPDIF_Type *base, spdif_handle_t *handle, size_t *count) |
| Gets a received byte count. More...
|
|
void | SPDIF_TransferAbortSend (SPDIF_Type *base, spdif_handle_t *handle) |
| Aborts the current send. More...
|
|
void | SPDIF_TransferAbortReceive (SPDIF_Type *base, spdif_handle_t *handle) |
| Aborts the the current IRQ receive. More...
|
|
void | SPDIF_TransferTxHandleIRQ (SPDIF_Type *base, spdif_handle_t *handle) |
| Tx interrupt handler. More...
|
|
void | SPDIF_TransferRxHandleIRQ (SPDIF_Type *base, spdif_handle_t *handle) |
| Tx interrupt handler. More...
|
|
Data Fields |
uint8_t * | data |
| Data start address to transfer. More...
|
|
uint8_t * | qdata |
| Data buffer for Q channel.
|
|
uint8_t * | udata |
| Data buffer for C channel.
|
|
size_t | dataSize |
| Transfer size. More...
|
|
uint8_t* spdif_transfer_t::data |
size_t spdif_transfer_t::dataSize |
#define SPDIF_XFER_QUEUE_SIZE (4) |
Enumerator |
---|
kStatus_SPDIF_RxDPLLLocked |
SPDIF Rx PLL locked.
|
kStatus_SPDIF_TxFIFOError |
SPDIF Tx FIFO error.
|
kStatus_SPDIF_TxFIFOResync |
SPDIF Tx left and right FIFO resync.
|
kStatus_SPDIF_RxCnew |
SPDIF Rx status channel value updated.
|
kStatus_SPDIF_ValidatyNoGood |
SPDIF validaty flag not good.
|
kStatus_SPDIF_RxIllegalSymbol |
SPDIF Rx receive illegal symbol.
|
kStatus_SPDIF_RxParityBitError |
SPDIF Rx parity bit error.
|
kStatus_SPDIF_UChannelOverrun |
SPDIF receive U channel overrun.
|
kStatus_SPDIF_QChannelOverrun |
SPDIF receive Q channel overrun.
|
kStatus_SPDIF_UQChannelSync |
SPDIF U/Q channel sync found.
|
kStatus_SPDIF_UQChannelFrameError |
SPDIF U/Q channel frame error.
|
kStatus_SPDIF_RxFIFOError |
SPDIF Rx FIFO error.
|
kStatus_SPDIF_RxFIFOResync |
SPDIF Rx left and right FIFO resync.
|
kStatus_SPDIF_LockLoss |
SPDIF Rx PLL clock lock loss.
|
kStatus_SPDIF_TxIdle |
SPDIF Tx is idle.
|
kStatus_SPDIF_RxIdle |
SPDIF Rx is idle.
|
kStatus_SPDIF_QueueFull |
SPDIF queue full.
|
Enumerator |
---|
kSPDIF_RxFull1Sample |
Rx full at least 1 sample in left and right FIFO.
|
kSPDIF_RxFull4Samples |
Rx full at least 4 sample in left and right FIFO.
|
kSPDIF_RxFull8Samples |
Rx full at least 8 sample in left and right FIFO.
|
kSPDIF_RxFull16Samples |
Rx full at least 16 sample in left and right FIFO.
|
Enumerator |
---|
kSPDIF_TxEmpty0Sample |
Tx empty at most 0 sample in left and right FIFO.
|
kSPDIF_TxEmpty4Samples |
Tx empty at most 4 sample in left and right FIFO.
|
kSPDIF_TxEmpty8Samples |
Tx empty at most 8 sample in left and right FIFO.
|
kSPDIF_TxEmpty12Samples |
Tx empty at most 12 sample in left and right FIFO.
|
Enumerator |
---|
kSPDIF_NoUChannel |
No embedded U channel.
|
kSPDIF_UChannelFromRx |
U channel from receiver, it is CD mode.
|
kSPDIF_UChannelFromTx |
U channel from on chip tx.
|
Enumerator |
---|
kSPDIF_GAIN_24 |
Gain select is 24.
|
kSPDIF_GAIN_16 |
Gain select is 16.
|
kSPDIF_GAIN_12 |
Gain select is 12.
|
kSPDIF_GAIN_8 |
Gain select is 8.
|
kSPDIF_GAIN_6 |
Gain select is 6.
|
kSPDIF_GAIN_4 |
Gain select is 4.
|
kSPDIF_GAIN_3 |
Gain select is 3.
|
Enumerator |
---|
kSPDIF_txFromReceiver |
Tx data directly through SPDIF receiver.
|
kSPDIF_txNormal |
Normal operation, data from processor.
|
Enumerator |
---|
kSPDIF_validityFlagAlwaysSet |
Outgoing validity flags always set.
|
kSPDIF_validityFlagAlwaysClear |
Outgoing validity flags always clear.
|
Enumerator |
---|
kSPDIF_RxDPLLLocked |
SPDIF DPLL locked.
|
kSPDIF_TxFIFOError |
Tx FIFO underrun or overrun.
|
kSPDIF_TxFIFOResync |
Tx FIFO left and right channel resync.
|
kSPDIF_RxControlChannelChange |
SPDIF Rx control channel value changed.
|
kSPDIF_ValidityFlagNoGood |
SPDIF validity flag no good.
|
kSPDIF_RxIllegalSymbol |
SPDIF receiver found illegal symbol.
|
kSPDIF_RxParityBitError |
SPDIF receiver found parity bit error.
|
kSPDIF_UChannelReceiveRegisterFull |
SPDIF U channel revceive register full.
|
kSPDIF_UChannelReceiveRegisterOverrun |
SPDIF U channel receive register overrun.
|
kSPDIF_QChannelReceiveRegisterFull |
SPDIF Q channel receive reigster full.
|
kSPDIF_QChannelReceiveRegisterOverrun |
SPDIF Q channel receive register overrun.
|
kSPDIF_UQChannelSync |
SPDIF U/Q channel sync found.
|
kSPDIF_UQChannelFrameError |
SPDIF U/Q channel frame error.
|
kSPDIF_RxFIFOError |
SPDIF Rx FIFO underrun/overrun.
|
kSPDIF_RxFIFOResync |
SPDIF Rx left and right FIFO resync.
|
kSPDIF_LockLoss |
SPDIF receiver loss of lock.
|
kSPDIF_TxFIFOEmpty |
SPDIF Tx FIFO empty.
|
kSPDIF_RxFIFOFull |
SPDIF Rx FIFO full.
|
Enumerator |
---|
kSPDIF_RxDMAEnable |
Rx FIFO full.
|
kSPDIF_TxDMAEnable |
Tx FIFO empty.
|
Ungates the SPDIF clock, resets the module, and configures SPDIF with a configuration structure. The configuration structure can be custom filled or set with default values by SPDIF_GetDefaultConfig().
- Note
- This API should be called at the beginning of the application to use the SPDIF driver. Otherwise, accessing the SPDIF module can cause a hard fault because the clock is not enabled.
- Parameters
-
base | SPDIF base pointer |
config | SPDIF configuration structure. |
This API initializes the configuration structure for use in SPDIF_Init. The initialized structure can remain unchanged in SPDIF_Init, or it can be modified before calling SPDIF_Init. This is an example.
- Parameters
-
config | pointer to master configuration structure |
void SPDIF_Deinit |
( |
SPDIF_Type * |
base | ) |
|
This API gates the SPDIF clock. The SPDIF module can't operate unless SPDIF_Init is called to enable the clock.
- Parameters
-
static void SPDIF_TxFIFOReset |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
This function makes Tx FIFO in reset mode.
- Parameters
-
static void SPDIF_RxFIFOReset |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
This function enables the software reset and FIFO reset of SPDIF Rx. After reset, clear the reset bit.
- Parameters
-
void SPDIF_TxEnable |
( |
SPDIF_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
- Parameters
-
base | SPDIF base pointer |
enable | True means enable SPDIF Tx, false means disable. |
static void SPDIF_RxEnable |
( |
SPDIF_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer |
enable | True means enable SPDIF Rx, false means disable. |
static uint32_t SPDIF_GetStatusFlag |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- SPDIF status flag value. Use the _spdif_interrupt_enable_t to get the status value needed.
static void SPDIF_ClearStatusFlags |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer |
mask | State mask. It can be a combination of the _spdif_interrupt_enable_t member. Notice these members cannot be included, as these flags cannot be cleared by writing 1 to these bits:
- kSPDIF_UChannelReceiveRegisterFull
- kSPDIF_QChannelReceiveRegisterFull
- kSPDIF_TxFIFOEmpty
- kSPDIF_RxFIFOFull
|
static void SPDIF_EnableInterrupts |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer |
mask | interrupt source The parameter can be a combination of the following sources if defined.
- kSPDIF_WordStartInterruptEnable
- kSPDIF_SyncErrorInterruptEnable
- kSPDIF_FIFOWarningInterruptEnable
- kSPDIF_FIFORequestInterruptEnable
- kSPDIF_FIFOErrorInterruptEnable
|
static void SPDIF_DisableInterrupts |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer |
mask | interrupt source The parameter can be a combination of the following sources if defined.
- kSPDIF_WordStartInterruptEnable
- kSPDIF_SyncErrorInterruptEnable
- kSPDIF_FIFOWarningInterruptEnable
- kSPDIF_FIFORequestInterruptEnable
- kSPDIF_FIFOErrorInterruptEnable
|
static void SPDIF_EnableDMA |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
mask, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer |
mask | SPDIF DMA enable mask, The parameter can be a combination of the following sources if defined
- kSPDIF_RxDMAEnable
- kSPDIF_TxDMAEnable
|
enable | True means enable DMA, false means disable DMA. |
static uint32_t SPDIF_TxGetLeftDataRegisterAddress |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
This API is used to provide a transfer address for the SPDIF DMA transfer configuration.
- Parameters
-
- Returns
- data register address.
static uint32_t SPDIF_TxGetRightDataRegisterAddress |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
This API is used to provide a transfer address for the SPDIF DMA transfer configuration.
- Parameters
-
- Returns
- data register address.
static uint32_t SPDIF_RxGetLeftDataRegisterAddress |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
This API is used to provide a transfer address for the SPDIF DMA transfer configuration.
- Parameters
-
- Returns
- data register address.
static uint32_t SPDIF_RxGetRightDataRegisterAddress |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
This API is used to provide a transfer address for the SPDIF DMA transfer configuration.
- Parameters
-
- Returns
- data register address.
void SPDIF_TxSetSampleRate |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
sampleRate_Hz, |
|
|
uint32_t |
sourceClockFreq_Hz |
|
) |
| |
The audio format can be changed at run-time. This function configures the sample rate.
- Parameters
-
base | SPDIF base pointer. |
sampleRate_Hz | SPDIF sample rate frequency in Hz. |
sourceClockFreq_Hz | SPDIF tx clock source frequency in Hz. |
uint32_t SPDIF_GetRxSampleRate |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
clockSourceFreq_Hz |
|
) |
| |
The audio format can be changed at run-time. This function configures the sample rate and audio data format to be transferred.
- Parameters
-
base | SPDIF base pointer. |
clockSourceFreq_Hz | SPDIF system clock frequency in hz. |
void SPDIF_WriteBlocking |
( |
SPDIF_Type * |
base, |
|
|
uint8_t * |
buffer, |
|
|
uint32_t |
size |
|
) |
| |
- Note
- This function blocks by polling until data is ready to be sent.
- Parameters
-
base | SPDIF base pointer. |
buffer | Pointer to the data to be written. |
size | Bytes to be written. |
static void SPDIF_WriteLeftData |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
data |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer. |
data | Data needs to be written. |
static void SPDIF_WriteRightData |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
data |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer. |
data | Data needs to be written. |
static void SPDIF_WriteChannelStatusHigh |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
data |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer. |
data | Data needs to be written. |
static void SPDIF_WriteChannelStatusLow |
( |
SPDIF_Type * |
base, |
|
|
uint32_t |
data |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | SPDIF base pointer. |
data | Data needs to be written. |
void SPDIF_ReadBlocking |
( |
SPDIF_Type * |
base, |
|
|
uint8_t * |
buffer, |
|
|
uint32_t |
size |
|
) |
| |
- Note
- This function blocks by polling until data is ready to be sent.
- Parameters
-
base | SPDIF base pointer. |
buffer | Pointer to the data to be read. |
size | Bytes to be read. |
static uint32_t SPDIF_ReadLeftData |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in SPDIF FIFO.
static uint32_t SPDIF_ReadRightData |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in SPDIF FIFO.
static uint32_t SPDIF_ReadChannelStatusHigh |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in SPDIF FIFO.
static uint32_t SPDIF_ReadChannelStatusLow |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in SPDIF FIFO.
static uint32_t SPDIF_ReadQChannel |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in SPDIF FIFO.
static uint32_t SPDIF_ReadUChannel |
( |
SPDIF_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
- Returns
- Data in SPDIF FIFO.
void SPDIF_TransferTxCreateHandle |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle, |
|
|
spdif_transfer_callback_t |
callback, |
|
|
void * |
userData |
|
) |
| |
This function initializes the Tx handle for the SPDIF Tx transactional APIs. Call this function once to get the handle initialized.
- Parameters
-
base | SPDIF base pointer |
handle | SPDIF handle pointer. |
callback | Pointer to the user callback function. |
userData | User parameter passed to the callback function |
void SPDIF_TransferRxCreateHandle |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle, |
|
|
spdif_transfer_callback_t |
callback, |
|
|
void * |
userData |
|
) |
| |
This function initializes the Rx handle for the SPDIF Rx transactional APIs. Call this function once to get the handle initialized.
- Parameters
-
base | SPDIF base pointer. |
handle | SPDIF handle pointer. |
callback | Pointer to the user callback function. |
userData | User parameter passed to the callback function. |
status_t SPDIF_TransferSendNonBlocking |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle, |
|
|
spdif_transfer_t * |
xfer |
|
) |
| |
- Note
- This API returns immediately after the transfer initiates. Call the SPDIF_TxGetTransferStatusIRQ to poll the transfer status and check whether the transfer is finished. If the return status is not kStatus_SPDIF_Busy, the transfer is finished.
- Parameters
-
base | SPDIF base pointer. |
handle | Pointer to the spdif_handle_t structure which stores the transfer state. |
xfer | Pointer to the spdif_transfer_t structure. |
- Return values
-
kStatus_Success | Successfully started the data receive. |
kStatus_SPDIF_TxBusy | Previous receive still not finished. |
kStatus_InvalidArgument | The input parameter is invalid. |
status_t SPDIF_TransferReceiveNonBlocking |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle, |
|
|
spdif_transfer_t * |
xfer |
|
) |
| |
- Note
- This API returns immediately after the transfer initiates. Call the SPDIF_RxGetTransferStatusIRQ to poll the transfer status and check whether the transfer is finished. If the return status is not kStatus_SPDIF_Busy, the transfer is finished.
- Parameters
-
base | SPDIF base pointer |
handle | Pointer to the spdif_handle_t structure which stores the transfer state. |
xfer | Pointer to the spdif_transfer_t structure. |
- Return values
-
kStatus_Success | Successfully started the data receive. |
kStatus_SPDIF_RxBusy | Previous receive still not finished. |
kStatus_InvalidArgument | The input parameter is invalid. |
status_t SPDIF_TransferGetSendCount |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle, |
|
|
size_t * |
count |
|
) |
| |
- Parameters
-
base | SPDIF base pointer. |
handle | Pointer to the spdif_handle_t structure which stores the transfer state. |
count | Bytes count sent. |
- Return values
-
kStatus_Success | Succeed get the transfer count. |
kStatus_NoTransferInProgress | There is not a non-blocking transaction currently in progress. |
status_t SPDIF_TransferGetReceiveCount |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle, |
|
|
size_t * |
count |
|
) |
| |
- Parameters
-
base | SPDIF base pointer. |
handle | Pointer to the spdif_handle_t structure which stores the transfer state. |
count | Bytes count received. |
- Return values
-
kStatus_Success | Succeed get the transfer count. |
kStatus_NoTransferInProgress | There is not a non-blocking transaction currently in progress. |
void SPDIF_TransferAbortSend |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle |
|
) |
| |
- Note
- This API can be called any time when an interrupt non-blocking transfer initiates to abort the transfer early.
- Parameters
-
base | SPDIF base pointer. |
handle | Pointer to the spdif_handle_t structure which stores the transfer state. |
void SPDIF_TransferAbortReceive |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle |
|
) |
| |
- Note
- This API can be called when an interrupt non-blocking transfer initiates to abort the transfer early.
- Parameters
-
base | SPDIF base pointer |
handle | Pointer to the spdif_handle_t structure which stores the transfer state. |
void SPDIF_TransferTxHandleIRQ |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle |
|
) |
| |
- Parameters
-
base | SPDIF base pointer. |
handle | Pointer to the spdif_handle_t structure. |
void SPDIF_TransferRxHandleIRQ |
( |
SPDIF_Type * |
base, |
|
|
spdif_handle_t * |
handle |
|
) |
| |
- Parameters
-
base | SPDIF base pointer. |
handle | Pointer to the spdif_handle_t structure. |