S32 SDK
sai_driver.h File Reference
#include <stddef.h>
#include <stdbool.h>
#include "device_registers.h"
#include "clock_manager.h"
#include "interrupt_manager.h"
#include "edma_driver.h"
#include "osif.h"
#include "sai_hw_access.h"

Go to the source code of this file.

Data Structures

struct  sai_xfer_state_t
 Transmit or receive state. More...
 
struct  sai_state_t
 Structure for internal use. This structure is used by the driver for its internal logic. It must be provided by the application through the initialize functions, then it cannot be freed until the driver is de-initialized using Deinit functions. The application should make no assumptions about the content of this structure. More...
 
struct  sai_user_config_t
 User config structure. More...
 

Macros

#define SAI_CHANNEL_0   0x1
 
#define SAI_CHANNEL_1   0x2
 
#define SAI_CHANNEL_2   0x4
 
#define SAI_CHANNEL_3   0x8
 

Typedefs

typedef void(* sai_transfer_callback_t) (uint8_t channel, sai_report_type_t report, status_t status)
 Sai callback function type for nonblock transfer, also called to report events (sai_report_type_t). More...
 

Enumerations

enum  sai_report_type_t { SAI_FRAME_START = 0, SAI_RUN_ERROR, SAI_SYNC_ERROR, SAI_TRANSFER_COMPLETE }
 Report to enable. More...
 
enum  sai_transfer_type_t { SAI_INTERRUPT = 0U, SAI_DMA }
 Transfer type. More...
 
enum  sai_mux_mode_t { SAI_MUX_DISABLED = 0U, SAI_MUX_LINE = 1U, SAI_MUX_MEM = 2U }
 Data mux line or mux memory. More...
 
enum  sai_sync_mode_t { SAI_ASYNC = 0U, SAI_SYNC_WITH_OTHER = 1U }
 SAI run in sync or async mode. More...
 
enum  sai_master_clk_source_t { SAI_BUS_CLK = 0U, SAI_EXTERNAL_CLK = 1U, SAI_SOSC_CLK = 2U }
 Select master clock. More...
 
enum  sai_mask_mode_t { SAI_MASK_TRISTATE = 0U, SAI_MASK_ZERO = 1U }
 Data line state for masked word, or if data line is disabled. More...
 

Functions

SAI Driver
void SAI_DRV_TxInit (uint32_t instNum, const sai_user_config_t *saiUserConfig, sai_state_t *StateAlloc)
 Initialize the transmitter of driver. More...
 
void SAI_DRV_RxInit (uint32_t instNum, const sai_user_config_t *saiUserConfig, sai_state_t *StateAlloc)
 Initialize the receiver of driver. More...
 
void SAI_DRV_TxDeinit (uint32_t instNum)
 De-initialize transmitter. More...
 
void SAI_DRV_RxDeinit (uint32_t instNum)
 De-initialize receiver. More...
 
uint32_t SAI_DRV_TxGetBitClockFreq (uint32_t instNum)
 Return true bit clock frequency of transmitter. More...
 
uint32_t SAI_DRV_RxGetBitClockFreq (uint32_t instNum)
 Return true bit clock frequency of receiver. More...
 
uint32_t SAI_DRV_TxGetBitClockDiv (uint32_t instNum)
 Return true bit clock divisor of transmitter. More...
 
uint32_t SAI_DRV_RxGetBitClockDiv (uint32_t instNum)
 Return true bit clock divisor of receiver. More...
 
void SAI_DRV_TxSetNextMaskWords (uint32_t instNum, uint16_t Words)
 Set masked word index of subsequent frames for transmitter. More...
 
void SAI_DRV_RxSetNextMaskWords (uint32_t instNum, uint16_t Words)
 Set masked word index of subsequent frames for receiver. More...
 
status_t SAI_DRV_SendBlocking (uint32_t instNum, const uint8_t *data[], uint32_t count, uint32_t timeout)
 Send a block of data, return when transfer complete. More...
 
void SAI_DRV_Send (uint32_t instNum, const uint8_t *data[], uint32_t count)
 Send a block of data, return immidiately. More...
 
status_t SAI_DRV_GetSendingStatus (uint32_t instNum, uint32_t *countRemain)
 Get status of a non-blocking transfer. More...
 
void SAI_DRV_AbortSending (uint32_t instNum)
 Abort an ongoing transfer. More...
 
status_t SAI_DRV_ReceiveBlocking (uint32_t instNum, uint8_t *data[], uint32_t count, uint32_t timeout)
 Receive a block of data, return when transfer complete. More...
 
void SAI_DRV_Receive (uint32_t instNum, uint8_t *data[], uint32_t count)
 Receive a block of data, return immidiately. More...
 
status_t SAI_DRV_GetReceivingStatus (uint32_t instNum, uint32_t *countRemain)
 Get status of a non-blocking transfer. More...
 
void SAI_DRV_AbortReceiving (uint32_t instNum)
 Abort an ongoing transfer. More...
 
void SAI_DRV_GetDefaultConfig (sai_user_config_t *uc)
 Get default config structure for I2S standard. Init config structure for I2S interface: Interrupt mode, internal generated bit clock 1.4112 MHz, 16 bit word, 2 channel 1 data line (data line 0),. More...