20 #ifndef STM32F4xx_HAL_SPDIFRX_H
21 #define STM32F4xx_HAL_SPDIFRX_H
30 #if defined(STM32F446xx)
129 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
130 typedef struct __SPDIFRX_HandleTypeDef
135 SPDIFRX_TypeDef *Instance;
139 uint32_t *pRxBuffPtr;
141 uint32_t *pCsBuffPtr;
143 __IO uint16_t RxXferSize;
145 __IO uint16_t RxXferCount;
152 __IO uint16_t CsXferSize;
154 __IO uint16_t CsXferCount;
170 __IO uint32_t ErrorCode;
172 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
173 void (*RxHalfCpltCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
175 void (*RxCpltCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
176 void (*CxHalfCpltCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
178 void (*CxCpltCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
179 void (*ErrorCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
180 void (* MspInitCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
181 void (* MspDeInitCallback)(
struct __SPDIFRX_HandleTypeDef *hspdif);
186 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
217 #define HAL_SPDIFRX_ERROR_NONE ((uint32_t)0x00000000U)
218 #define HAL_SPDIFRX_ERROR_TIMEOUT ((uint32_t)0x00000001U)
219 #define HAL_SPDIFRX_ERROR_OVR ((uint32_t)0x00000002U)
220 #define HAL_SPDIFRX_ERROR_PE ((uint32_t)0x00000004U)
221 #define HAL_SPDIFRX_ERROR_DMA ((uint32_t)0x00000008U)
222 #define HAL_SPDIFRX_ERROR_UNKNOWN ((uint32_t)0x00000010U)
223 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
224 #define HAL_SPDIFRX_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)
233 #define SPDIFRX_INPUT_IN0 ((uint32_t)0x00000000U)
234 #define SPDIFRX_INPUT_IN1 ((uint32_t)0x00010000U)
235 #define SPDIFRX_INPUT_IN2 ((uint32_t)0x00020000U)
236 #define SPDIFRX_INPUT_IN3 ((uint32_t)0x00030000U)
244 #define SPDIFRX_MAXRETRIES_NONE ((uint32_t)0x00000000U)
245 #define SPDIFRX_MAXRETRIES_3 ((uint32_t)0x00001000U)
246 #define SPDIFRX_MAXRETRIES_15 ((uint32_t)0x00002000U)
247 #define SPDIFRX_MAXRETRIES_63 ((uint32_t)0x00003000U)
255 #define SPDIFRX_WAITFORACTIVITY_OFF ((uint32_t)0x00000000U)
256 #define SPDIFRX_WAITFORACTIVITY_ON ((uint32_t)SPDIFRX_CR_WFA)
264 #define SPDIFRX_PREAMBLETYPEMASK_OFF ((uint32_t)0x00000000U)
265 #define SPDIFRX_PREAMBLETYPEMASK_ON ((uint32_t)SPDIFRX_CR_PTMSK)
273 #define SPDIFRX_CHANNELSTATUS_OFF ((uint32_t)0x00000000U)
275 #define SPDIFRX_CHANNELSTATUS_ON ((uint32_t)SPDIFRX_CR_CUMSK)
284 #define SPDIFRX_VALIDITYMASK_OFF ((uint32_t)0x00000000U)
285 #define SPDIFRX_VALIDITYMASK_ON ((uint32_t)SPDIFRX_CR_VMSK)
293 #define SPDIFRX_PARITYERRORMASK_OFF ((uint32_t)0x00000000U)
294 #define SPDIFRX_PARITYERRORMASK_ON ((uint32_t)SPDIFRX_CR_PMSK)
302 #define SPDIFRX_CHANNEL_A ((uint32_t)0x00000000U)
303 #define SPDIFRX_CHANNEL_B ((uint32_t)SPDIFRX_CR_CHSEL)
311 #define SPDIFRX_DATAFORMAT_LSB ((uint32_t)0x00000000U)
312 #define SPDIFRX_DATAFORMAT_MSB ((uint32_t)0x00000010U)
313 #define SPDIFRX_DATAFORMAT_32BITS ((uint32_t)0x00000020U)
321 #define SPDIFRX_STEREOMODE_DISABLE ((uint32_t)0x00000000U)
322 #define SPDIFRX_STEREOMODE_ENABLE ((uint32_t)SPDIFRX_CR_RXSTEO)
331 #define SPDIFRX_STATE_IDLE ((uint32_t)0xFFFFFFFCU)
332 #define SPDIFRX_STATE_SYNC ((uint32_t)0x00000001U)
333 #define SPDIFRX_STATE_RCV ((uint32_t)SPDIFRX_CR_SPDIFEN)
341 #define SPDIFRX_IT_RXNE ((uint32_t)SPDIFRX_IMR_RXNEIE)
342 #define SPDIFRX_IT_CSRNE ((uint32_t)SPDIFRX_IMR_CSRNEIE)
343 #define SPDIFRX_IT_PERRIE ((uint32_t)SPDIFRX_IMR_PERRIE)
344 #define SPDIFRX_IT_OVRIE ((uint32_t)SPDIFRX_IMR_OVRIE)
345 #define SPDIFRX_IT_SBLKIE ((uint32_t)SPDIFRX_IMR_SBLKIE)
346 #define SPDIFRX_IT_SYNCDIE ((uint32_t)SPDIFRX_IMR_SYNCDIE)
347 #define SPDIFRX_IT_IFEIE ((uint32_t)SPDIFRX_IMR_IFEIE )
355 #define SPDIFRX_FLAG_RXNE ((uint32_t)SPDIFRX_SR_RXNE)
356 #define SPDIFRX_FLAG_CSRNE ((uint32_t)SPDIFRX_SR_CSRNE)
357 #define SPDIFRX_FLAG_PERR ((uint32_t)SPDIFRX_SR_PERR)
358 #define SPDIFRX_FLAG_OVR ((uint32_t)SPDIFRX_SR_OVR)
359 #define SPDIFRX_FLAG_SBD ((uint32_t)SPDIFRX_SR_SBD)
360 #define SPDIFRX_FLAG_SYNCD ((uint32_t)SPDIFRX_SR_SYNCD)
361 #define SPDIFRX_FLAG_FERR ((uint32_t)SPDIFRX_SR_FERR)
362 #define SPDIFRX_FLAG_SERR ((uint32_t)SPDIFRX_SR_SERR)
363 #define SPDIFRX_FLAG_TERR ((uint32_t)SPDIFRX_SR_TERR)
381 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
382 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) do{\
383 (__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET;\
384 (__HANDLE__)->MspInitCallback = NULL;\
385 (__HANDLE__)->MspDeInitCallback = NULL;\
388 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET)
395 #define __HAL_SPDIFRX_IDLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= SPDIFRX_STATE_IDLE)
401 #define __HAL_SPDIFRX_SYNC(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_SYNC)
408 #define __HAL_SPDIFRX_RCV(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_RCV)
424 #define __HAL_SPDIFRX_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
425 #define __HAL_SPDIFRX_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR\
426 &= (uint16_t)(~(__INTERRUPT__)))
441 #define __HAL_SPDIFRX_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR\
442 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
459 #define __HAL_SPDIFRX_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR)\
460 & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
473 #define __HAL_SPDIFRX_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->IFCR = (uint32_t)(__IT_CLEAR__))
495 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
555 #define IS_SPDIFRX_INPUT_SELECT(INPUT) (((INPUT) == SPDIFRX_INPUT_IN1) || \
556 ((INPUT) == SPDIFRX_INPUT_IN2) || \
557 ((INPUT) == SPDIFRX_INPUT_IN3) || \
558 ((INPUT) == SPDIFRX_INPUT_IN0))
560 #define IS_SPDIFRX_MAX_RETRIES(RET) (((RET) == SPDIFRX_MAXRETRIES_NONE) || \
561 ((RET) == SPDIFRX_MAXRETRIES_3) || \
562 ((RET) == SPDIFRX_MAXRETRIES_15) || \
563 ((RET) == SPDIFRX_MAXRETRIES_63))
565 #define IS_SPDIFRX_WAIT_FOR_ACTIVITY(VAL) (((VAL) == SPDIFRX_WAITFORACTIVITY_ON) || \
566 ((VAL) == SPDIFRX_WAITFORACTIVITY_OFF))
568 #define IS_PREAMBLE_TYPE_MASK(VAL) (((VAL) == SPDIFRX_PREAMBLETYPEMASK_ON) || \
569 ((VAL) == SPDIFRX_PREAMBLETYPEMASK_OFF))
571 #define IS_VALIDITY_MASK(VAL) (((VAL) == SPDIFRX_VALIDITYMASK_OFF) || \
572 ((VAL) == SPDIFRX_VALIDITYMASK_ON))
574 #define IS_PARITY_ERROR_MASK(VAL) (((VAL) == SPDIFRX_PARITYERRORMASK_OFF) || \
575 ((VAL) == SPDIFRX_PARITYERRORMASK_ON))
577 #define IS_SPDIFRX_CHANNEL(CHANNEL) (((CHANNEL) == SPDIFRX_CHANNEL_A) || \
578 ((CHANNEL) == SPDIFRX_CHANNEL_B))
580 #define IS_SPDIFRX_DATA_FORMAT(FORMAT) (((FORMAT) == SPDIFRX_DATAFORMAT_LSB) || \
581 ((FORMAT) == SPDIFRX_DATAFORMAT_MSB) || \
582 ((FORMAT) == SPDIFRX_DATAFORMAT_32BITS))
584 #define IS_STEREO_MODE(MODE) (((MODE) == SPDIFRX_STEREOMODE_DISABLE) || \
585 ((MODE) == SPDIFRX_STEREOMODE_ENABLE))
587 #define IS_CHANNEL_STATUS_MASK(VAL) (((VAL) == SPDIFRX_CHANNELSTATUS_ON) || \
588 ((VAL) == SPDIFRX_CHANNELSTATUS_OFF))
ADC handle Structure definition.
HAL_StatusTypeDef HAL_SPDIFRX_UnRegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID)
Unregister a SPDIFRX Callback SPDIFRX callback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_SPDIFRX_RegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID, pSPDIFRX_CallbackTypeDef pCallback)
Register a User SPDIFRX Callback To be used instead of the weak predefined callback.
void HAL_SPDIFRX_MspDeInit(SPDIFRX_HandleTypeDef *hspdif)
SPDIFRX MSP DeInit.
void HAL_SPDIFRX_MspInit(SPDIFRX_HandleTypeDef *hspdif)
SPDIFRX MSP Init.
HAL_StatusTypeDef HAL_SPDIFRX_SetDataFormat(SPDIFRX_HandleTypeDef *hspdif, SPDIFRX_SetDataFormatTypeDef sDataFormat)
Set the SPDIFRX data format according to the specified parameters in the SPDIFRX_InitTypeDef.
HAL_StatusTypeDef HAL_SPDIFRX_Init(SPDIFRX_HandleTypeDef *hspdif)
Initializes the SPDIFRX according to the specified parameters in the SPDIFRX_InitTypeDef and create t...
HAL_StatusTypeDef HAL_SPDIFRX_DeInit(SPDIFRX_HandleTypeDef *hspdif)
DeInitializes the SPDIFRX peripheral.
void HAL_SPDIFRX_RxCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
Rx Transfer (Data flow) completed callbacks.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout)
Receives an amount of data (Data Flow) in blocking mode.
void HAL_SPDIFRX_ErrorCallback(SPDIFRX_HandleTypeDef *hspdif)
SPDIFRX error callbacks.
HAL_StatusTypeDef HAL_SPDIFRX_DMAStop(SPDIFRX_HandleTypeDef *hspdif)
stop the audio stream receive from the Media.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
Receive an amount of data (Control Flow) with DMA.
void HAL_SPDIFRX_CxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
Rx (Control flow) Transfer half completed callbacks.
void HAL_SPDIFRX_RxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
Rx Transfer (Data flow) half completed callbacks.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
Receive an amount of data (Data Flow) in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
Receive an amount of data (Data Flow) mode with DMA.
void HAL_SPDIFRX_CxCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
Rx Transfer (Control flow) completed callbacks.
void HAL_SPDIFRX_IRQHandler(SPDIFRX_HandleTypeDef *hspdif)
This function handles SPDIFRX interrupt request.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
Receive an amount of data (Control Flow) with Interrupt.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout)
Receives an amount of data (Control Flow) in blocking mode.
uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef const *const hspdif)
Return the SPDIFRX error code.
HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef const *const hspdif)
Return the SPDIFRX state.
uint32_t ChannelStatusMask
uint32_t PreambleTypeMask
uint32_t ChannelStatusMask
uint32_t PreambleTypeMask
uint32_t ChannelSelection
HAL_SPDIFRX_StateTypeDef
HAL State structures definition.
struct __SPDIFRX_HandleTypeDef else typedef struct endif SPDIFRX_HandleTypeDef
SPDIFRX handle Structure definition.
void(* pSPDIFRX_CallbackTypeDef)(SPDIFRX_HandleTypeDef *hspdif)
HAL SPDIFRX Callback pointer definition.
HAL_SPDIFRX_CallbackIDTypeDef
HAL SPDIFRX Callback ID enumeration definition.
@ HAL_SPDIFRX_STATE_RESET
@ HAL_SPDIFRX_STATE_BUSY_RX
@ HAL_SPDIFRX_STATE_ERROR
@ HAL_SPDIFRX_STATE_READY
@ HAL_SPDIFRX_STATE_BUSY_CX
@ HAL_SPDIFRX_RX_HALF_CB_ID
@ HAL_SPDIFRX_RX_CPLT_CB_ID
@ HAL_SPDIFRX_MSPDEINIT_CB_ID
@ HAL_SPDIFRX_MSPINIT_CB_ID
@ HAL_SPDIFRX_CX_CPLT_CB_ID
@ HAL_SPDIFRX_ERROR_CB_ID
@ HAL_SPDIFRX_CX_HALF_CB_ID
SPDIFRX Init structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_LockTypeDef
HAL Lock structures definition
DMA handle Structure definition.