263 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/**
 | 
						|
  ******************************************************************************
 | 
						|
  * @file    stm32f4xx_spdifrx.h
 | 
						|
  * @author  MCD Application Team
 | 
						|
  * @version V1.8.0
 | 
						|
  * @date    04-November-2016
 | 
						|
  * @brief   This file contains all the functions prototypes for the SPDIFRX firmware 
 | 
						|
  *          library.
 | 
						|
  ******************************************************************************
 | 
						|
  * @attention
 | 
						|
  *
 | 
						|
  * <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>
 | 
						|
  *
 | 
						|
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
 | 
						|
  * You may not use this file except in compliance with the License.
 | 
						|
  * You may obtain a copy of the License at:
 | 
						|
  *
 | 
						|
  *        http://www.st.com/software_license_agreement_liberty_v2
 | 
						|
  *
 | 
						|
  * Unless required by applicable law or agreed to in writing, software 
 | 
						|
  * distributed under the License is distributed on an "AS IS" BASIS, 
 | 
						|
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
  * See the License for the specific language governing permissions and
 | 
						|
  * limitations under the License.
 | 
						|
  *
 | 
						|
  ******************************************************************************
 | 
						|
  */ 
 | 
						|
 | 
						|
/* Define to prevent recursive inclusion -------------------------------------*/
 | 
						|
#ifndef __STM32F4xx_SPDIFRX_H
 | 
						|
#define __STM32F4xx_SPDIFRX_H
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
 extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/* Includes ------------------------------------------------------------------*/
 | 
						|
#include "stm32f4xx.h"
 | 
						|
 | 
						|
/** @addtogroup STM32F4xx_StdPeriph_Driver
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
 | 
						|
/** @addtogroup SPDIFRX
 | 
						|
  * @{
 | 
						|
  */ 
 | 
						|
#if defined(STM32F446xx)
 | 
						|
/* Exported types ------------------------------------------------------------*/
 | 
						|
/** 
 | 
						|
  * @brief  SPDIFRX Init structure definition  
 | 
						|
  */
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
  uint32_t SPDIFRX_InputSelection;           /*!< Specifies the SPDIFRX input selection.
 | 
						|
                                                This parameter can be a value of @ref SPDIFRX_Input_Selection */
 | 
						|
 | 
						|
  uint32_t SPDIFRX_Retries;                  /*!< Specifies the Maximum allowed re-tries during synchronization phase.
 | 
						|
                                                This parameter can be a value of @ref SPDIFRX_Max_Retries */
 | 
						|
 | 
						|
  uint32_t SPDIFRX_WaitForActivity;          /*!< Specifies the wait for activity on SPDIFRX selected input.
 | 
						|
                                                This parameter can be a value of @ref SPDIFRX_Wait_For_Activity. */
 | 
						|
 | 
						|
  uint32_t SPDIFRX_ChannelSelection;         /*!< Specifies whether the control flow will take the channel status from channel A or B.
 | 
						|
                                                This parameter can be a value of @ref SPDIFRX_Channel_Selection */
 | 
						|
 | 
						|
  uint32_t SPDIFRX_DataFormat;               /*!< Specifies the Data samples format (LSB, MSB, ...).
 | 
						|
                                                This parameter can be a value of @ref SPDIFRX_Data_Format */
 | 
						|
                                               
 | 
						|
  uint32_t SPDIFRX_StereoMode;               /*!< Specifies whether the peripheral is in stereo or mono mode.
 | 
						|
                                                This parameter can be a value of @ref SPDIFRX_Stereo_Mode */ 
 | 
						|
}SPDIFRX_InitTypeDef;
 | 
						|
 | 
						|
 | 
						|
/* Exported constants --------------------------------------------------------*/
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_Exported_Constants
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define IS_SPDIFRX_PERIPH(PERIPH) (((PERIPH) == SPDIFRX)) 
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_Input_Selection SPDIFRX Input Selection
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_Input_IN0               ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_Input_IN1               ((uint32_t)0x00010000)  
 | 
						|
#define SPDIFRX_Input_IN2               ((uint32_t)0x00020000)
 | 
						|
#define SPDIFRX_Input_IN3               ((uint32_t)0x00030000)
 | 
						|
#define IS_SPDIFRX_INPUT_SELECT(INPUT)  (((INPUT) == SPDIFRX_Input_IN1) || \
 | 
						|
                                         ((INPUT) == SPDIFRX_Input_IN2) || \
 | 
						|
                                         ((INPUT) == SPDIFRX_Input_IN3)  || \
 | 
						|
                                         ((INPUT) == SPDIFRX_Input_IN0))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_Max_Retries SPDIFRX Max Retries 
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_1MAX_RETRIES               ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_4MAX_RETRIES               ((uint32_t)0x00001000)  
 | 
						|
#define SPDIFRX_16MAX_RETRIES              ((uint32_t)0x00002000)
 | 
						|
#define SPDIFRX_64MAX_RETRIES              ((uint32_t)0x00003000)
 | 
						|
#define IS_SPDIFRX_MAX_RETRIES(RET)   (((RET) == SPDIFRX_1MAX_RETRIES) || \
 | 
						|
                                       ((RET) == SPDIFRX_4MAX_RETRIES) || \
 | 
						|
                                       ((RET) == SPDIFRX_16MAX_RETRIES)  || \
 | 
						|
                                       ((RET) == SPDIFRX_64MAX_RETRIES))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_Wait_For_Activity SPDIFRX Wait For Activity
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_WaitForActivity_Off                 ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_WaitForActivity_On                  ((uint32_t)SPDIFRX_CR_WFA)
 | 
						|
#define IS_SPDIFRX_WAIT_FOR_ACTIVITY(VAL)    (((VAL) == SPDIFRX_WaitForActivity_On) || \
 | 
						|
                                              ((VAL) == SPDIFRX_WaitForActivity_Off))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_ChannelSelection SPDIFRX Channel Selection
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_Select_Channel_A      ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_Select_Channel_B      ((uint32_t)SPDIFRX_CR_CHSEL)
 | 
						|
#define IS_SPDIFRX_CHANNEL(CHANNEL)   (((CHANNEL) == SPDIFRX_Select_Channel_A) || \
 | 
						|
                                       ((CHANNEL) == SPDIFRX_Select_Channel_B))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_Block_Synchronization SPDIFRX Block Synchronization
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_LSB_DataFormat                   ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_MSB_DataFormat                   ((uint32_t)0x00000010)
 | 
						|
#define SPDIFRX_32BITS_DataFormat                ((uint32_t)0x00000020)
 | 
						|
#define IS_SPDIFRX_DATA_FORMAT(FORMAT)    (((FORMAT) == SPDIFRX_LSB_DataFormat) || \
 | 
						|
                                           ((FORMAT) == SPDIFRX_MSB_DataFormat) || \
 | 
						|
                                           ((FORMAT) == SPDIFRX_32BITS_DataFormat))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */ 
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_StereoMode SPDIFRX StereoMode
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_StereoMode_Disabled          ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_StereoMode_Enabled           ((uint32_t)SPDIFRX_CR_RXSTEO)
 | 
						|
#define IS_STEREO_MODE(MODE)  (((MODE) == SPDIFRX_StereoMode_Disabled) || \
 | 
						|
                               ((MODE) == SPDIFRX_StereoMode_Enabled))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */ 
 | 
						|
 | 
						|
/** @defgroup SPDIFRX_State SPDIFRX State
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_STATE_IDLE    ((uint32_t)0x00000000)
 | 
						|
#define SPDIFRX_STATE_SYNC    ((uint32_t)0x00000001)
 | 
						|
#define SPDIFRX_STATE_RCV     ((uint32_t)SPDIFRX_CR_SPDIFEN)
 | 
						|
#define IS_SPDIFRX_STATE(STATE)    (((STATE) == SPDIFRX_STATE_IDLE) || \
 | 
						|
                                    ((STATE) == SPDIFRX_STATE_SYNC) || \
 | 
						|
                                    ((STATE) == SPDIFRX_STATE_RCV))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
	
 | 
						|
/** @defgroup SPDIFRX_Interrupts_Definition SPDIFRX Interrupts Definition
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_IT_RXNE                       ((uint32_t)SPDIFRX_IMR_RXNEIE)
 | 
						|
#define SPDIFRX_IT_CSRNE                      ((uint32_t)SPDIFRX_IMR_CSRNEIE)
 | 
						|
#define SPDIFRX_IT_PERRIE                     ((uint32_t)SPDIFRX_IMR_PERRIE)
 | 
						|
#define SPDIFRX_IT_OVRIE                      ((uint32_t)SPDIFRX_IMR_OVRIE)
 | 
						|
#define SPDIFRX_IT_SBLKIE                     ((uint32_t)SPDIFRX_IMR_SBLKIE)
 | 
						|
#define SPDIFRX_IT_SYNCDIE                    ((uint32_t)SPDIFRX_IMR_SYNCDIE)
 | 
						|
#define SPDIFRX_IT_IFEIE                      ((uint32_t)SPDIFRX_IMR_IFEIE )
 | 
						|
#define IS_SPDIFRX_CONFIG_IT(IT)    (((IT) == SPDIFRX_IT_RXNE)   || \
 | 
						|
                                     ((IT) == SPDIFRX_IT_CSRNE)   || \
 | 
						|
                                     ((IT) == SPDIFRX_IT_PERRIE)  || \
 | 
						|
                                     ((IT) == SPDIFRX_IT_OVRIE)   || \
 | 
						|
                                     ((IT) == SPDIFRX_IT_SBLKIE)  || \
 | 
						|
                                     ((IT) == SPDIFRX_IT_SYNCDIE) || \
 | 
						|
                                     ((IT) == SPDIFRX_IT_IFEIE))
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
	
 | 
						|
/** @defgroup SPDIFRX_Flags_Definition SPDIFRX Flags Definition
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
#define SPDIFRX_FLAG_RXNE                   ((uint32_t)SPDIFRX_SR_RXNE)
 | 
						|
#define SPDIFRX_FLAG_CSRNE                  ((uint32_t)SPDIFRX_SR_CSRNE)
 | 
						|
#define SPDIFRX_FLAG_PERR                   ((uint32_t)SPDIFRX_SR_PERR)
 | 
						|
#define SPDIFRX_FLAG_OVR                    ((uint32_t)SPDIFRX_SR_OVR)
 | 
						|
#define SPDIFRX_FLAG_SBD                    ((uint32_t)SPDIFRX_SR_SBD)
 | 
						|
#define SPDIFRX_FLAG_SYNCD                  ((uint32_t)SPDIFRX_SR_SYNCD)
 | 
						|
#define SPDIFRX_FLAG_FERR                   ((uint32_t)SPDIFRX_SR_FERR)
 | 
						|
#define SPDIFRX_FLAG_SERR                   ((uint32_t)SPDIFRX_SR_SERR)
 | 
						|
#define SPDIFRX_FLAG_TERR                   ((uint32_t)SPDIFRX_SR_TERR)
 | 
						|
#define IS_SPDIFRX_FLAG(FLAG)    (((FLAG) == SPDIFRX_FLAG_RXNE) || ((FLAG) == SPDIFRX_FLAG_CSRNE) || \
 | 
						|
                                  ((FLAG) == SPDIFRX_FLAG_PERR) || ((FLAG) == SPDIFRX_FLAG_OVR) || \
 | 
						|
                                  ((FLAG) == SPDIFRX_SR_SBD) || ((FLAG) == SPDIFRX_SR_SYNCD) || \
 | 
						|
                                  ((FLAG) == SPDIFRX_SR_FERR) || ((FLAG) == SPDIFRX_SR_SERR) || \
 | 
						|
				  ((FLAG) == SPDIFRX_SR_TERR))  
 | 
						|
#define IS_SPDIFRX_CLEAR_FLAG(FLAG)    (((FLAG) == SPDIFRX_FLAG_PERR) || ((FLAG) == SPDIFRX_FLAG_OVR)   || \
 | 
						|
                                        ((FLAG) == SPDIFRX_SR_SBD) || ((FLAG) == SPDIFRX_SR_SYNCD))  
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 	
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/* Exported macro ------------------------------------------------------------*/
 | 
						|
/* Exported functions --------------------------------------------------------*/ 
 | 
						|
 | 
						|
/*  Function used to set the SPDIFRX configuration to the default reset state *****/ 
 | 
						|
void SPDIFRX_DeInit(void);
 | 
						|
 | 
						|
/* Initialization and Configuration functions *********************************/
 | 
						|
void SPDIFRX_Init(SPDIFRX_InitTypeDef* SPDIFRX_InitStruct);
 | 
						|
void SPDIFRX_StructInit(SPDIFRX_InitTypeDef* SPDIFRX_InitStruct);
 | 
						|
void SPDIFRX_Cmd(uint32_t SPDIFRX_State);
 | 
						|
void SPDIFRX_SetPreambleTypeBit(FunctionalState NewState);
 | 
						|
void SPDIFRX_SetUserDataChannelStatusBits(FunctionalState NewState);
 | 
						|
void SPDIFRX_SetValidityBit(FunctionalState NewState);
 | 
						|
void SPDIFRX_SetParityBit(FunctionalState NewState);
 | 
						|
 | 
						|
/* Data transfers functions ***************************************************/ 
 | 
						|
uint32_t SPDIFRX_ReceiveData(void);
 | 
						|
 | 
						|
/* DMA transfers management functions *****************************************/
 | 
						|
void SPDIFRX_RxDMACmd(FunctionalState NewState);
 | 
						|
void SPDIFRX_CbDMACmd(FunctionalState NewState);
 | 
						|
 | 
						|
/* Interrupts and flags management functions **********************************/
 | 
						|
void SPDIFRX_ITConfig(uint32_t SPDIFRX_IT, FunctionalState NewState);
 | 
						|
FlagStatus SPDIFRX_GetFlagStatus(uint32_t SPDIFRX_FLAG);
 | 
						|
void SPDIFRX_ClearFlag(uint32_t SPDIFRX_FLAG);
 | 
						|
ITStatus SPDIFRX_GetITStatus(uint32_t SPDIFRX_IT);
 | 
						|
void SPDIFRX_ClearITPendingBit(uint32_t SPDIFRX_IT);
 | 
						|
 | 
						|
#endif /* STM32F446xx */
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /*__STM32F4xx_SPDIFRX_H */
 | 
						|
 | 
						|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 |