178 #ifdef HAL_SAI_MODULE_ENABLED 198 #define SAI_FIFO_SIZE 8 199 #define SAI_DEFAULT_TIMEOUT 4 200 #define SAI_xCR2_MUTECNT_OFFSET POSITION_VAL(SAI_xCR2_MUTECNT) 297 status = SAI_InitI2S(hsai, protocol, datasize, nbslot);
301 status = SAI_InitPCM(hsai, protocol, datasize, nbslot);
325 uint32_t tmpregisterGCR = 0;
326 uint32_t ckstr_bits = 0;
327 uint32_t syncen_bits = 0;
427 SAI1->GCR = tmpregisterGCR;
431 SAI2->GCR = tmpregisterGCR;
457 if((tmpval % 10) > 8)
482 ckstr_bits | syncen_bits | \
484 hsai->Init.NoDivider | (hsai->
Init.
Mckdiv << 20));
654 if((pData ==
NULL ) || (Size == 0))
754 if((pData ==
NULL ) || (Size == 0))
849 if((pData ==
NULL) || (Size == 0))
911 if((pData ==
NULL) || (Size == 0))
1112 if((pData ==
NULL) || (Size == 0))
1182 if((pData ==
NULL) || (Size == 0))
1293 SET_BIT(hsai->
Instance->
CR2, (uint32_t)((uint32_t)counter << SAI_xCR2_MUTECNT_OFFSET));
1382 else if(hsai->
hdmarx != NULL)
1406 if((cr1config & SAI_xCR1_DMAEN) == SAI_xCR1_DMAEN)
1416 else if(hsai->
hdmarx != NULL)
1447 else if(hsai->
hdmarx != NULL)
1652 if((nbslot & 0x1) != 0 )
1827 if(mode == SAI_MODE_IT)
1858 register uint32_t count = SAI_DEFAULT_TIMEOUT * (
SystemCoreClock /7/1000);
2047 hsai->
Instance->
CR1 &= (uint32_t)(~SAI_xCR1_DMAEN);
2082 hsai->
Instance->
CR1 &= (uint32_t)(~SAI_xCR1_DMAEN);
#define CLEAR_BIT(REG, BIT)
#define IS_SAI_BLOCK_SLOT_NUMBER(NUMBER)
SAI_SlotInitTypeDef SlotInit
#define __HAL_SAI_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable or disable the specified SAI interrupts.
#define SAI_SLOTACTIVE_ALL
#define SAI_FS_ACTIVE_HIGH
#define HAL_SAI_ERROR_LFSDET
#define IS_SAI_BLOCK_DATASIZE(DATASIZE)
HAL_StatusTypeDef HAL_SAI_Transmit_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
#define IS_SAI_BLOCK_CLOCK_STROBING(CLOCK)
#define IS_SAI_MONO_STEREO_MODE(MODE)
#define SAI_MODEMASTER_RX
HAL_StatusTypeDef HAL_SAI_Receive(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout)
#define SAI_CLOCKSTROBING_FALLINGEDGE
#define SAI_PROTOCOL_DATASIZE_32BIT
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
#define IS_SAI_SUPPORTED_PROTOCOL(PROTOCOL)
#define HAL_SAI_ERROR_NONE
#define assert_param(expr)
Include module's header file.
HAL_StatusTypeDef HAL_SAI_Receive_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
DMA_HandleTypeDef * hdmarx
#define IS_SAI_BLOCK_FS_OFFSET(OFFSET)
#define SAI_SYNCEXT_OUTBLOCKA_ENABLE
HAL_StatusTypeDef HAL_SAI_DisableTxMuteMode(SAI_HandleTypeDef *hsai)
uint32_t ActiveFrameLength
void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai)
Reception complete callback.
HAL_StatusTypeDef HAL_SAI_Transmit(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout)
#define IS_SAI_BLOCK_SYNCHRO(SYNCHRO)
#define IS_SAI_BLOCK_FRAME_LENGTH(LENGTH)
HAL_StatusTypeDef HAL_SAI_DMAResume(SAI_HandleTypeDef *hsai)
#define __HAL_UNLOCK(__HANDLE__)
HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai)
Half reception complete callback.
#define IS_SAI_BLOCK_SLOT_SIZE(SIZE)
void HAL_SAI_IRQHandler(SAI_HandleTypeDef *hsai)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
#define SAI_xSLOTR_SLOTEN
#define IS_SAI_BLOCK_SYNCEXT(STATE)
#define IS_SAI_BLOCK_ACTIVE_FRAME(LENGTH)
#define IS_SAI_BLOCK_FIRST_BIT(BIT)
SAI_Block_TypeDef * Instance
void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai)
Tx Transfer completed callbacks.
HAL_StatusTypeDef HAL_SAI_DMAPause(SAI_HandleTypeDef *hsai)
#define IS_SAI_ALL_INSTANCE(__PERIPH__)
#define IS_SAI_BLOCK_MUTE_COUNTER(COUNTER)
#define SAI_PROTOCOL_DATASIZE_24BIT
#define SAI_xSLOTR_SLOTSZ
#define SAI_SYNCHRONOUS_EXT_SAI2
HAL_SAI_StateTypeDef
HAL State structures definition.
#define __HAL_SAI_ENABLE(__HANDLE__)
HAL_StatusTypeDef HAL_SAI_Abort(SAI_HandleTypeDef *hsai)
void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai)
#define SAI_xCR1_SYNCEN_0
#define SAI_AUDIO_FREQUENCY_MCKDIV
#define SAI_PROTOCOL_DATASIZE_16BIT
uint32_t HAL_SAI_GetError(SAI_HandleTypeDef *hsai)
HAL_SAI_StateTypeDef HAL_SAI_GetState(SAI_HandleTypeDef *hsai)
#define IS_SAI_BLOCK_FIFO_THRESHOLD(THRESHOLD)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
#define __HAL_LOCK(__HANDLE__)
HAL_StatusTypeDef HAL_SAI_InitProtocol(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize, uint32_t nbslot)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_SAI_EnableRxMuteMode(SAI_HandleTypeDef *hsai, SAIcallback callback, uint16_t counter)
DMA_HandleTypeDef * hdmatx
#define SAI_I2S_MSBJUSTIFIED
void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai)
SAI error callbacks.
#define SAI_SYNCEXT_DISABLE
#define SAI_FS_ACTIVE_LOW
HAL_StatusTypeDef HAL_SAI_DeInit(SAI_HandleTypeDef *hsai)
#define IS_SAI_BLOCK_MUTE_VALUE(VALUE)
__IO HAL_SAI_StateTypeDef State
#define SAI_FS_STARTFRAME
#define SAI_FREE_PROTOCOL
#define SAI_SYNCHRONOUS_EXT_SAI1
This file contains all the functions prototypes for the HAL module driver.
DMA_Stream_TypeDef * Instance
#define SAI_PROTOCOL_DATASIZE_16BITEXTENDED
#define HAL_SAI_ERROR_DMA
#define IS_SAI_BLOCK_OUTPUT_DRIVE(DRIVE)
SAI_FrameInitTypeDef FrameInit
#define HAL_SAI_ERROR_WCKCFG
#define IS_SAI_BLOCK_NODIVIDER(NODIVIDER)
HAL_StatusTypeDef HAL_SAI_EnableTxMuteMode(SAI_HandleTypeDef *hsai, uint16_t val)
#define SAI_MODEMASTER_TX
#define SAI_CLOCKSTROBING_RISINGEDGE
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
#define HAL_SAI_ERROR_TIMEOUT
#define IS_SAI_SLOT_ACTIVE(ACTIVE)
#define SAI_FIFOSTATUS_FULL
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai)
Tx Half Transfer completed callbacks.
#define SAI_xCR1_SYNCEN_1
#define SAI_FIFOSTATUS_EMPTY
#define RCC_PERIPHCLK_SAI2
#define IS_SAI_BLOCK_MODE(MODE)
#define SET_BIT(REG, BIT)
#define IS_SAI_BLOCK_COMPANDING_MODE(MODE)
#define IS_SAI_AUDIO_FREQUENCY(AUDIO)
HAL_StatusTypeDef HAL_SAI_Transmit_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
#define SAI_SYNCEXT_OUTBLOCKB_ENABLE
#define HAL_SAI_ERROR_UDR
HAL_StatusTypeDef HAL_SAI_DMAStop(SAI_HandleTypeDef *hsai)
#define __HAL_SAI_DISABLE(__HANDLE__)
DMA handle Structure definition.
#define IS_SAI_BLOCK_FS_DEFINITION(DEFINITION)
#define SAI_FS_BEFOREFIRSTBIT
uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)
void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai)
SAI MSP Init.
#define SAI_FS_CHANNEL_IDENTIFICATION
#define SAI_I2S_LSBJUSTIFIED
#define __HAL_SAI_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the specified SAI pending flag.
#define SAI_GCR_SYNCOUT_0
#define HAL_SAI_ERROR_AFSDET
void(* SAIcallback)(void)
SAI Callback prototype.
#define IS_SAI_PROTOCOL_DATASIZE(DATASIZE)
#define HAL_SAI_ERROR_CNREADY
#define RCC_PERIPHCLK_SAI1
HAL_StatusTypeDef HAL_SAI_DisableRxMuteMode(SAI_HandleTypeDef *hsai)
HAL_StatusTypeDef
HAL Status structures definition.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
void(* InterruptServiceRoutine)(struct __SAI_HandleTypeDef *hsai)
#define IS_SAI_BLOCK_PROTOCOL(PROTOCOL)
#define HAL_SAI_ERROR_OVR
#define SAI_GCR_SYNCOUT_1
#define __HAL_SAI_DISABLE_IT(__HANDLE__, __INTERRUPT__)
#define IS_SAI_BLOCK_FS_POLARITY(POLARITY)
#define IS_SAI_BLOCK_FIRSTBIT_OFFSET(OFFSET)
HAL_StatusTypeDef HAL_SAI_Init(SAI_HandleTypeDef *hsai)
#define IS_SAI_BLOCK_TRISTATE_MANAGEMENT(STATE)
#define SAI_AC97_PROTOCOL