STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
stm32f7xx_hal_spdifrx.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F7xx_HAL_SPDIFRX_H
40 #define __STM32F7xx_HAL_SPDIFRX_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f7xx_hal_def.h"
48 
57 /* Exported types ------------------------------------------------------------*/
65 typedef struct
66 {
67  uint32_t InputSelection;
70  uint32_t Retries;
73  uint32_t WaitForActivity;
76  uint32_t ChannelSelection;
79  uint32_t DataFormat;
82  uint32_t StereoMode;
85  uint32_t PreambleTypeMask;
88  uint32_t ChannelStatusMask;
91  uint32_t ValidityBitMask;
94  uint32_t ParityErrorMask;
98 
102 typedef struct
103 {
104  uint32_t DataFormat;
107  uint32_t StereoMode;
110  uint32_t PreambleTypeMask;
113  uint32_t ChannelStatusMask;
116  uint32_t ValidityBitMask;
119  uint32_t ParityErrorMask;
123 
127 typedef enum
128 {
136 
140 typedef struct
141 {
142  SPDIFRX_TypeDef *Instance; /* SPDIFRX registers base address */
143 
144  SPDIFRX_InitTypeDef Init; /* SPDIFRX communication parameters */
145 
146  uint32_t *pRxBuffPtr; /* Pointer to SPDIFRX Rx transfer buffer */
147 
148  uint32_t *pCsBuffPtr; /* Pointer to SPDIFRX Cx transfer buffer */
149 
150  __IO uint16_t RxXferSize; /* SPDIFRX Rx transfer size */
151 
152  __IO uint16_t RxXferCount; /* SPDIFRX Rx transfer counter
153  (This field is initialized at the
154  same value as transfer size at the
155  beginning of the transfer and
156  decremented when a sample is received.
157  NbSamplesReceived = RxBufferSize-RxBufferCount) */
158 
159  __IO uint16_t CsXferSize; /* SPDIFRX Rx transfer size */
160 
161  __IO uint16_t CsXferCount; /* SPDIFRX Rx transfer counter
162  (This field is initialized at the
163  same value as transfer size at the
164  beginning of the transfer and
165  decremented when a sample is received.
166  NbSamplesReceived = RxBufferSize-RxBufferCount) */
167 
168  DMA_HandleTypeDef *hdmaCsRx; /* SPDIFRX EC60958_channel_status and user_information DMA handle parameters */
169 
170  DMA_HandleTypeDef *hdmaDrRx; /* SPDIFRX Rx DMA handle parameters */
171 
172  __IO HAL_LockTypeDef Lock; /* SPDIFRX locking object */
173 
174  __IO HAL_SPDIFRX_StateTypeDef State; /* SPDIFRX communication state */
175 
176  __IO uint32_t ErrorCode; /* SPDIFRX Error code */
177 
183 /* Exported constants --------------------------------------------------------*/
190 #define HAL_SPDIFRX_ERROR_NONE ((uint32_t)0x00000000U)
191 #define HAL_SPDIFRX_ERROR_TIMEOUT ((uint32_t)0x00000001U)
192 #define HAL_SPDIFRX_ERROR_OVR ((uint32_t)0x00000002U)
193 #define HAL_SPDIFRX_ERROR_PE ((uint32_t)0x00000004U)
194 #define HAL_SPDIFRX_ERROR_DMA ((uint32_t)0x00000008U)
195 #define HAL_SPDIFRX_ERROR_UNKNOWN ((uint32_t)0x00000010U)
203 #define SPDIFRX_INPUT_IN0 ((uint32_t)0x00000000U)
204 #define SPDIFRX_INPUT_IN1 ((uint32_t)0x00010000U)
205 #define SPDIFRX_INPUT_IN2 ((uint32_t)0x00020000U)
206 #define SPDIFRX_INPUT_IN3 ((uint32_t)0x00030000U)
207 
214 #define SPDIFRX_MAXRETRIES_NONE ((uint32_t)0x00000000U)
215 #define SPDIFRX_MAXRETRIES_3 ((uint32_t)0x00001000U)
216 #define SPDIFRX_MAXRETRIES_15 ((uint32_t)0x00002000U)
217 #define SPDIFRX_MAXRETRIES_63 ((uint32_t)0x00003000U)
218 
225 #define SPDIFRX_WAITFORACTIVITY_OFF ((uint32_t)0x00000000U)
226 #define SPDIFRX_WAITFORACTIVITY_ON ((uint32_t)SPDIFRX_CR_WFA)
227 
234 #define SPDIFRX_PREAMBLETYPEMASK_OFF ((uint32_t)0x00000000U)
235 #define SPDIFRX_PREAMBLETYPEMASK_ON ((uint32_t)SPDIFRX_CR_PTMSK)
236 
243 #define SPDIFRX_CHANNELSTATUS_OFF ((uint32_t)0x00000000U) /* The channel status and user bits are copied into the SPDIF_DR */
244 #define SPDIFRX_CHANNELSTATUS_ON ((uint32_t)SPDIFRX_CR_CUMSK) /* The channel status and user bits are not copied into the SPDIF_DR, zeros are written instead*/
245 
252 #define SPDIFRX_VALIDITYMASK_OFF ((uint32_t)0x00000000U)
253 #define SPDIFRX_VALIDITYMASK_ON ((uint32_t)SPDIFRX_CR_VMSK)
254 
261 #define SPDIFRX_PARITYERRORMASK_OFF ((uint32_t)0x00000000U)
262 #define SPDIFRX_PARITYERRORMASK_ON ((uint32_t)SPDIFRX_CR_PMSK)
263 
270 #define SPDIFRX_CHANNEL_A ((uint32_t)0x00000000U)
271 #define SPDIFRX_CHANNEL_B ((uint32_t)SPDIFRX_CR_CHSEL)
272 
279 #define SPDIFRX_DATAFORMAT_LSB ((uint32_t)0x00000000U)
280 #define SPDIFRX_DATAFORMAT_MSB ((uint32_t)0x00000010U)
281 #define SPDIFRX_DATAFORMAT_32BITS ((uint32_t)0x00000020U)
282 
289 #define SPDIFRX_STEREOMODE_DISABLE ((uint32_t)0x00000000U)
290 #define SPDIFRX_STEREOMODE_ENABLE ((uint32_t)SPDIFRX_CR_RXSTEO)
291 
299 #define SPDIFRX_STATE_IDLE ((uint32_t)0xFFFFFFFCU)
300 #define SPDIFRX_STATE_SYNC ((uint32_t)0x00000001U)
301 #define SPDIFRX_STATE_RCV ((uint32_t)SPDIFRX_CR_SPDIFEN)
302 
309 #define SPDIFRX_IT_RXNE ((uint32_t)SPDIFRX_IMR_RXNEIE)
310 #define SPDIFRX_IT_CSRNE ((uint32_t)SPDIFRX_IMR_CSRNEIE)
311 #define SPDIFRX_IT_PERRIE ((uint32_t)SPDIFRX_IMR_PERRIE)
312 #define SPDIFRX_IT_OVRIE ((uint32_t)SPDIFRX_IMR_OVRIE)
313 #define SPDIFRX_IT_SBLKIE ((uint32_t)SPDIFRX_IMR_SBLKIE)
314 #define SPDIFRX_IT_SYNCDIE ((uint32_t)SPDIFRX_IMR_SYNCDIE)
315 #define SPDIFRX_IT_IFEIE ((uint32_t)SPDIFRX_IMR_IFEIE )
316 
323 #define SPDIFRX_FLAG_RXNE ((uint32_t)SPDIFRX_SR_RXNE)
324 #define SPDIFRX_FLAG_CSRNE ((uint32_t)SPDIFRX_SR_CSRNE)
325 #define SPDIFRX_FLAG_PERR ((uint32_t)SPDIFRX_SR_PERR)
326 #define SPDIFRX_FLAG_OVR ((uint32_t)SPDIFRX_SR_OVR)
327 #define SPDIFRX_FLAG_SBD ((uint32_t)SPDIFRX_SR_SBD)
328 #define SPDIFRX_FLAG_SYNCD ((uint32_t)SPDIFRX_SR_SYNCD)
329 #define SPDIFRX_FLAG_FERR ((uint32_t)SPDIFRX_SR_FERR)
330 #define SPDIFRX_FLAG_SERR ((uint32_t)SPDIFRX_SR_SERR)
331 #define SPDIFRX_FLAG_TERR ((uint32_t)SPDIFRX_SR_TERR)
332 
340 /* Exported macros -----------------------------------------------------------*/
349 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = (uint16_t)SPDIFRX_CR_SPDIFEN)
350 
355 #define __HAL_SPDIFRX_IDLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= SPDIFRX_STATE_IDLE)
356 
361 #define __HAL_SPDIFRX_SYNC(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_SYNC)
362 
363 
368 #define __HAL_SPDIFRX_RCV(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_RCV)
369 
370 
384 #define __HAL_SPDIFRX_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
385 #define __HAL_SPDIFRX_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR &= (uint16_t)(~(__INTERRUPT__)))
386 
400 #define __HAL_SPDIFRX_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
401 
417 #define __HAL_SPDIFRX_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
418 
430 #define __HAL_SPDIFRX_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->IFCR = (uint32_t)(__IT_CLEAR__))
431 
436 /* Exported functions --------------------------------------------------------*/
444 /* Initialization/de-initialization functions **********************************/
457 /* I/O operation functions ***************************************************/
458  /* Blocking mode: Polling */
459 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout);
460 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout);
461 
462  /* Non-Blocking mode: Interrupt */
466 
467 /* Non-Blocking mode: DMA */
470 
472 
473 /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
486 /* Peripheral Control and State functions ************************************/
487 HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef *hspdif);
496 /* Private types -------------------------------------------------------------*/
497 /* Private variables ---------------------------------------------------------*/
498 /* Private constants ---------------------------------------------------------*/
499 /* Private macros ------------------------------------------------------------*/
503 #define IS_SPDIFRX_INPUT_SELECT(INPUT) (((INPUT) == SPDIFRX_INPUT_IN1) || \
504  ((INPUT) == SPDIFRX_INPUT_IN2) || \
505  ((INPUT) == SPDIFRX_INPUT_IN3) || \
506  ((INPUT) == SPDIFRX_INPUT_IN0))
507 #define IS_SPDIFRX_MAX_RETRIES(RET) (((RET) == SPDIFRX_MAXRETRIES_NONE) || \
508  ((RET) == SPDIFRX_MAXRETRIES_3) || \
509  ((RET) == SPDIFRX_MAXRETRIES_15) || \
510  ((RET) == SPDIFRX_MAXRETRIES_63))
511 #define IS_SPDIFRX_WAIT_FOR_ACTIVITY(VAL) (((VAL) == SPDIFRX_WAITFORACTIVITY_ON) || \
512  ((VAL) == SPDIFRX_WAITFORACTIVITY_OFF))
513 #define IS_PREAMBLE_TYPE_MASK(VAL) (((VAL) == SPDIFRX_PREAMBLETYPEMASK_ON) || \
514  ((VAL) == SPDIFRX_PREAMBLETYPEMASK_OFF))
515 #define IS_VALIDITY_MASK(VAL) (((VAL) == SPDIFRX_VALIDITYMASK_OFF) || \
516  ((VAL) == SPDIFRX_VALIDITYMASK_ON))
517 #define IS_PARITY_ERROR_MASK(VAL) (((VAL) == SPDIFRX_PARITYERRORMASK_OFF) || \
518  ((VAL) == SPDIFRX_PARITYERRORMASK_ON))
519 #define IS_SPDIFRX_CHANNEL(CHANNEL) (((CHANNEL) == SPDIFRX_CHANNEL_A) || \
520  ((CHANNEL) == SPDIFRX_CHANNEL_B))
521 #define IS_SPDIFRX_DATA_FORMAT(FORMAT) (((FORMAT) == SPDIFRX_DATAFORMAT_LSB) || \
522  ((FORMAT) == SPDIFRX_DATAFORMAT_MSB) || \
523  ((FORMAT) == SPDIFRX_DATAFORMAT_32BITS))
524 #define IS_STEREO_MODE(MODE) (((MODE) == SPDIFRX_STEREOMODE_DISABLE) || \
525  ((MODE) == SPDIFRX_STEREOMODE_ENABLE))
526 
527 #define IS_CHANNEL_STATUS_MASK(VAL) (((VAL) == SPDIFRX_CHANNELSTATUS_ON) || \
528  ((VAL) == SPDIFRX_CHANNELSTATUS_OFF))
529 
533 /* Private functions ---------------------------------------------------------*/
549 #ifdef __cplusplus
550 }
551 #endif
552 
553 
554 #endif /* __STM32F7xx_HAL_SPDIFRX_H */
555 
556 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
SPDIFRX handle Structure definition.
void HAL_SPDIFRX_CxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
__IO HAL_SPDIFRX_StateTypeDef State
uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef *hspdif)
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
SPDIF-RX Interface.
Definition: stm32f745xx.h:797
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout)
HAL_SPDIFRX_StateTypeDef
HAL State structures definition.
HAL_StatusTypeDef HAL_SPDIFRX_DMAStop(SPDIFRX_HandleTypeDef *hspdif)
HAL_LockTypeDef
HAL Lock structures definition.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
DMA_HandleTypeDef * hdmaCsRx
DMA_HandleTypeDef * hdmaDrRx
void HAL_SPDIFRX_IRQHandler(SPDIFRX_HandleTypeDef *hspdif)
SPDIFRX_HandleTypeDef hspdif
Definition: main.c:74
#define __IO
Definition: core_cm0.h:213
SPDIFRX Init structure definition.
void HAL_SPDIFRX_RxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
void HAL_SPDIFRX_ErrorCallback(SPDIFRX_HandleTypeDef *hspdif)
SPDIFRX SetDataFormat structure definition.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
void HAL_SPDIFRX_MspInit(SPDIFRX_HandleTypeDef *hspdif)
SPDIFRX MSP Init.
void HAL_SPDIFRX_CxCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
void HAL_SPDIFRX_RxCpltCallback(SPDIFRX_HandleTypeDef *hspdif)
DMA handle Structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
SPDIFRX_InitTypeDef Init
void HAL_SPDIFRX_MspDeInit(SPDIFRX_HandleTypeDef *hspdif)
HAL_StatusTypeDef
HAL Status structures definition.
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size)
__IO HAL_LockTypeDef Lock
HAL_StatusTypeDef HAL_SPDIFRX_DeInit(SPDIFRX_HandleTypeDef *hspdif)
HAL_StatusTypeDef HAL_SPDIFRX_SetDataFormat(SPDIFRX_HandleTypeDef *hspdif, SPDIFRX_SetDataFormatTypeDef sDataFormat)
HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef *hspdif)
HAL_StatusTypeDef HAL_SPDIFRX_Init(SPDIFRX_HandleTypeDef *hspdif)