stm32f7xx_hal_spdifrx.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. /**
  2. ******************************************************************************
  3. * @file stm32f7xx_hal_spdifrx.h
  4. * @author MCD Application Team
  5. * @version V1.0.1
  6. * @date 25-June-2015
  7. * @brief Header file of SPDIFRX HAL module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
  12. *
  13. * Redistribution and use in source and binary forms, with or without modification,
  14. * are permitted provided that the following conditions are met:
  15. * 1. Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the following disclaimer.
  17. * 2. Redistributions in binary form must reproduce the above copyright notice,
  18. * this list of conditions and the following disclaimer in the documentation
  19. * and/or other materials provided with the distribution.
  20. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  21. * may be used to endorse or promote products derived from this software
  22. * without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. *
  35. ******************************************************************************
  36. */
  37. /* Define to prevent recursive inclusion -------------------------------------*/
  38. #ifndef __STM32F7xx_HAL_SPDIFRX_H
  39. #define __STM32F7xx_HAL_SPDIFRX_H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. /* Includes ------------------------------------------------------------------*/
  44. #include "stm32f7xx_hal_def.h"
  45. /** @addtogroup STM32F7xx_HAL_Driver
  46. * @{
  47. */
  48. /** @addtogroup SPDIFRX
  49. * @{
  50. */
  51. /* Exported types ------------------------------------------------------------*/
  52. /** @defgroup SPDIFRX_Exported_Types SPDIFRX Exported Types
  53. * @{
  54. */
  55. /**
  56. * @brief SPDIFRX Init structure definition
  57. */
  58. typedef struct
  59. {
  60. uint32_t InputSelection; /*!< Specifies the SPDIF input selection.
  61. This parameter can be a value of @ref SPDIFRX_Input_Selection */
  62. uint32_t Retries; /*!< Specifies the Maximum allowed re-tries during synchronization phase.
  63. This parameter can be a value of @ref SPDIFRX_Max_Retries */
  64. uint32_t WaitForActivity; /*!< Specifies the wait for activity on SPDIF selected input.
  65. This parameter can be a value of @ref SPDIFRX_Wait_For_Activity. */
  66. uint32_t ChannelSelection; /*!< Specifies whether the control flow will take the channel status from channel A or B.
  67. This parameter can be a value of @ref SPDIFRX_Channel_Selection */
  68. uint32_t DataFormat; /*!< Specifies the Data samples format (LSB, MSB, ...).
  69. This parameter can be a value of @ref SPDIFRX_Data_Format */
  70. uint32_t StereoMode; /*!< Specifies whether the peripheral is in stereo or mono mode.
  71. This parameter can be a value of @ref SPDIFRX_Stereo_Mode */
  72. uint32_t PreambleTypeMask; /*!< Specifies whether The preamble type bits are copied or not into the received frame.
  73. This parameter can be a value of @ref SPDIFRX_PT_Mask */
  74. uint32_t ChannelStatusMask; /*!< Specifies whether the channel status and user bits are copied or not into the received frame.
  75. This parameter can be a value of @ref SPDIFRX_ChannelStatus_Mask */
  76. uint32_t ValidityBitMask; /*!< Specifies whether the validity bit is copied or not into the received frame.
  77. This parameter can be a value of @ref SPDIFRX_V_Mask */
  78. uint32_t ParityErrorMask; /*!< Specifies whether the parity error bit is copied or not into the received frame.
  79. This parameter can be a value of @ref SPDIFRX_PE_Mask */
  80. }SPDIFRX_InitTypeDef;
  81. /**
  82. * @brief SPDIFRX SetDataFormat structure definition
  83. */
  84. typedef struct
  85. {
  86. uint32_t DataFormat; /*!< Specifies the Data samples format (LSB, MSB, ...).
  87. This parameter can be a value of @ref SPDIFRX_Data_Format */
  88. uint32_t StereoMode; /*!< Specifies whether the peripheral is in stereo or mono mode.
  89. This parameter can be a value of @ref SPDIFRX_Stereo_Mode */
  90. uint32_t PreambleTypeMask; /*!< Specifies whether The preamble type bits are copied or not into the received frame.
  91. This parameter can be a value of @ref SPDIFRX_PT_Mask */
  92. uint32_t ChannelStatusMask; /*!< Specifies whether the channel status and user bits are copied or not into the received frame.
  93. This parameter can be a value of @ref SPDIFRX_ChannelStatus_Mask */
  94. uint32_t ValidityBitMask; /*!< Specifies whether the validity bit is copied or not into the received frame.
  95. This parameter can be a value of @ref SPDIFRX_V_Mask */
  96. uint32_t ParityErrorMask; /*!< Specifies whether the parity error bit is copied or not into the received frame.
  97. This parameter can be a value of @ref SPDIFRX_PE_Mask */
  98. }SPDIFRX_SetDataFormatTypeDef;
  99. /**
  100. * @brief HAL State structures definition
  101. */
  102. typedef enum
  103. {
  104. HAL_SPDIFRX_STATE_RESET = 0x00, /*!< SPDIFRX not yet initialized or disabled */
  105. HAL_SPDIFRX_STATE_READY = 0x01, /*!< SPDIFRX initialized and ready for use */
  106. HAL_SPDIFRX_STATE_BUSY = 0x02, /*!< SPDIFRX internal process is ongoing */
  107. HAL_SPDIFRX_STATE_BUSY_RX = 0x03, /*!< SPDIFRX internal Data Flow RX process is ongoing */
  108. HAL_SPDIFRX_STATE_BUSY_CX = 0x04, /*!< SPDIFRX internal Control Flow RX process is ongoing */
  109. HAL_SPDIFRX_STATE_ERROR = 0x07 /*!< SPDIFRX error state */
  110. }HAL_SPDIFRX_StateTypeDef;
  111. /**
  112. * @brief SPDIFRX handle Structure definition
  113. */
  114. typedef struct
  115. {
  116. SPDIFRX_TypeDef *Instance; /* SPDIFRX registers base address */
  117. SPDIFRX_InitTypeDef Init; /* SPDIFRX communication parameters */
  118. uint32_t *pRxBuffPtr; /* Pointer to SPDIFRX Rx transfer buffer */
  119. uint32_t *pCsBuffPtr; /* Pointer to SPDIFRX Cx transfer buffer */
  120. __IO uint16_t RxXferSize; /* SPDIFRX Rx transfer size */
  121. __IO uint16_t RxXferCount; /* SPDIFRX Rx transfer counter
  122. (This field is initialized at the
  123. same value as transfer size at the
  124. beginning of the transfer and
  125. decremented when a sample is received.
  126. NbSamplesReceived = RxBufferSize-RxBufferCount) */
  127. __IO uint16_t CsXferSize; /* SPDIFRX Rx transfer size */
  128. __IO uint16_t CsXferCount; /* SPDIFRX Rx transfer counter
  129. (This field is initialized at the
  130. same value as transfer size at the
  131. beginning of the transfer and
  132. decremented when a sample is received.
  133. NbSamplesReceived = RxBufferSize-RxBufferCount) */
  134. DMA_HandleTypeDef *hdmaCsRx; /* SPDIFRX EC60958_channel_status and user_information DMA handle parameters */
  135. DMA_HandleTypeDef *hdmaDrRx; /* SPDIFRX Rx DMA handle parameters */
  136. __IO HAL_LockTypeDef Lock; /* SPDIFRX locking object */
  137. __IO HAL_SPDIFRX_StateTypeDef State; /* SPDIFRX communication state */
  138. __IO uint32_t ErrorCode; /* SPDIFRX Error code */
  139. }SPDIFRX_HandleTypeDef;
  140. /**
  141. * @}
  142. */
  143. /* Exported constants --------------------------------------------------------*/
  144. /** @defgroup SPDIFRX_Exported_Constants SPDIFRX Exported Constants
  145. * @{
  146. */
  147. /** @defgroup SPDIFRX_ErrorCode SPDIFRX Error Code
  148. * @{
  149. */
  150. #define HAL_SPDIFRX_ERROR_NONE ((uint32_t)0x00000000) /*!< No error */
  151. #define HAL_SPDIFRX_ERROR_TIMEOUT ((uint32_t)0x00000001) /*!< Timeout error */
  152. #define HAL_SPDIFRX_ERROR_OVR ((uint32_t)0x00000002) /*!< OVR error */
  153. #define HAL_SPDIFRX_ERROR_PE ((uint32_t)0x00000004) /*!< Parity error */
  154. #define HAL_SPDIFRX_ERROR_DMA ((uint32_t)0x00000008) /*!< DMA transfer error */
  155. #define HAL_SPDIFRX_ERROR_UNKNOWN ((uint32_t)0x00000010) /*!< Unknown Error error */
  156. /**
  157. * @}
  158. */
  159. /** @defgroup SPDIFRX_Input_Selection SPDIFRX Input Selection
  160. * @{
  161. */
  162. #define SPDIFRX_INPUT_IN0 ((uint32_t)0x00000000)
  163. #define SPDIFRX_INPUT_IN1 ((uint32_t)0x00010000)
  164. #define SPDIFRX_INPUT_IN2 ((uint32_t)0x00020000)
  165. #define SPDIFRX_INPUT_IN3 ((uint32_t)0x00030000)
  166. /**
  167. * @}
  168. */
  169. /** @defgroup SPDIFRX_Max_Retries SPDIFRX Maximum Retries
  170. * @{
  171. */
  172. #define SPDIFRX_MAXRETRIES_NONE ((uint32_t)0x00000000)
  173. #define SPDIFRX_MAXRETRIES_3 ((uint32_t)0x00001000)
  174. #define SPDIFRX_MAXRETRIES_15 ((uint32_t)0x00002000)
  175. #define SPDIFRX_MAXRETRIES_63 ((uint32_t)0x00003000)
  176. /**
  177. * @}
  178. */
  179. /** @defgroup SPDIFRX_Wait_For_Activity SPDIFRX Wait For Activity
  180. * @{
  181. */
  182. #define SPDIFRX_WAITFORACTIVITY_OFF ((uint32_t)0x00000000)
  183. #define SPDIFRX_WAITFORACTIVITY_ON ((uint32_t)SPDIFRX_CR_WFA)
  184. /**
  185. * @}
  186. */
  187. /** @defgroup SPDIFRX_PT_Mask SPDIFRX Preamble Type Mask
  188. * @{
  189. */
  190. #define SPDIFRX_PREAMBLETYPEMASK_OFF ((uint32_t)0x00000000)
  191. #define SPDIFRX_PREAMBLETYPEMASK_ON ((uint32_t)SPDIFRX_CR_PTMSK)
  192. /**
  193. * @}
  194. */
  195. /** @defgroup SPDIFRX_ChannelStatus_Mask SPDIFRX Channel Status Mask
  196. * @{
  197. */
  198. #define SPDIFRX_CHANNELSTATUS_OFF ((uint32_t)0x00000000) /* The channel status and user bits are copied into the SPDIF_DR */
  199. #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*/
  200. /**
  201. * @}
  202. */
  203. /** @defgroup SPDIFRX_V_Mask SPDIFRX Validity Mask
  204. * @{
  205. */
  206. #define SPDIFRX_VALIDITYMASK_OFF ((uint32_t)0x00000000)
  207. #define SPDIFRX_VALIDITYMASK_ON ((uint32_t)SPDIFRX_CR_VMSK)
  208. /**
  209. * @}
  210. */
  211. /** @defgroup SPDIFRX_PE_Mask SPDIFRX Parity Error Mask
  212. * @{
  213. */
  214. #define SPDIFRX_PARITYERRORMASK_OFF ((uint32_t)0x00000000)
  215. #define SPDIFRX_PARITYERRORMASK_ON ((uint32_t)SPDIFRX_CR_PMSK)
  216. /**
  217. * @}
  218. */
  219. /** @defgroup SPDIFRX_Channel_Selection SPDIFRX Channel Selection
  220. * @{
  221. */
  222. #define SPDIFRX_CHANNEL_A ((uint32_t)0x00000000)
  223. #define SPDIFRX_CHANNEL_B ((uint32_t)SPDIFRX_CR_CHSEL)
  224. /**
  225. * @}
  226. */
  227. /** @defgroup SPDIFRX_Data_Format SPDIFRX Data Format
  228. * @{
  229. */
  230. #define SPDIFRX_DATAFORMAT_LSB ((uint32_t)0x00000000)
  231. #define SPDIFRX_DATAFORMAT_MSB ((uint32_t)0x00000010)
  232. #define SPDIFRX_DATAFORMAT_32BITS ((uint32_t)0x00000020)
  233. /**
  234. * @}
  235. */
  236. /** @defgroup SPDIFRX_Stereo_Mode SPDIFRX Stereo Mode
  237. * @{
  238. */
  239. #define SPDIFRX_STEREOMODE_DISABLE ((uint32_t)0x00000000)
  240. #define SPDIFRX_STEREOMODE_ENABLE ((uint32_t)SPDIFRX_CR_RXSTEO)
  241. /**
  242. * @}
  243. */
  244. /** @defgroup SPDIFRX_State SPDIFRX State
  245. * @{
  246. */
  247. #define SPDIFRX_STATE_IDLE ((uint32_t)0xFFFFFFFC)
  248. #define SPDIFRX_STATE_SYNC ((uint32_t)0x00000001)
  249. #define SPDIFRX_STATE_RCV ((uint32_t)SPDIFRX_CR_SPDIFEN)
  250. /**
  251. * @}
  252. */
  253. /** @defgroup SPDIFRX_Interrupts_Definition SPDIFRX Interrupts Definition
  254. * @{
  255. */
  256. #define SPDIFRX_IT_RXNE ((uint32_t)SPDIFRX_IMR_RXNEIE)
  257. #define SPDIFRX_IT_CSRNE ((uint32_t)SPDIFRX_IMR_CSRNEIE)
  258. #define SPDIFRX_IT_PERRIE ((uint32_t)SPDIFRX_IMR_PERRIE)
  259. #define SPDIFRX_IT_OVRIE ((uint32_t)SPDIFRX_IMR_OVRIE)
  260. #define SPDIFRX_IT_SBLKIE ((uint32_t)SPDIFRX_IMR_SBLKIE)
  261. #define SPDIFRX_IT_SYNCDIE ((uint32_t)SPDIFRX_IMR_SYNCDIE)
  262. #define SPDIFRX_IT_IFEIE ((uint32_t)SPDIFRX_IMR_IFEIE )
  263. /**
  264. * @}
  265. */
  266. /** @defgroup SPDIFRX_Flags_Definition SPDIFRX Flags Definition
  267. * @{
  268. */
  269. #define SPDIFRX_FLAG_RXNE ((uint32_t)SPDIFRX_SR_RXNE)
  270. #define SPDIFRX_FLAG_CSRNE ((uint32_t)SPDIFRX_SR_CSRNE)
  271. #define SPDIFRX_FLAG_PERR ((uint32_t)SPDIFRX_SR_PERR)
  272. #define SPDIFRX_FLAG_OVR ((uint32_t)SPDIFRX_SR_OVR)
  273. #define SPDIFRX_FLAG_SBD ((uint32_t)SPDIFRX_SR_SBD)
  274. #define SPDIFRX_FLAG_SYNCD ((uint32_t)SPDIFRX_SR_SYNCD)
  275. #define SPDIFRX_FLAG_FERR ((uint32_t)SPDIFRX_SR_FERR)
  276. #define SPDIFRX_FLAG_SERR ((uint32_t)SPDIFRX_SR_SERR)
  277. #define SPDIFRX_FLAG_TERR ((uint32_t)SPDIFRX_SR_TERR)
  278. /**
  279. * @}
  280. */
  281. /**
  282. * @}
  283. */
  284. /* Exported macros -----------------------------------------------------------*/
  285. /** @defgroup SPDIFRX_Exported_macros SPDIFRX Exported Macros
  286. * @{
  287. */
  288. /** @brief Reset SPDIFRX handle state
  289. * @param __HANDLE__: SPDIFRX handle.
  290. * @retval None
  291. */
  292. #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = (uint16_t)SPDIFRX_CR_SPDIFEN)
  293. /** @brief Disable the specified SPDIFRX peripheral (IDLE State).
  294. * @param __HANDLE__: specifies the SPDIFRX Handle.
  295. * @retval None
  296. */
  297. #define __HAL_SPDIFRX_IDLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= SPDIFRX_STATE_IDLE)
  298. /** @brief Enable the specified SPDIFRX peripheral (SYNC State).
  299. * @param __HANDLE__: specifies the SPDIFRX Handle.
  300. * @retval None
  301. */
  302. #define __HAL_SPDIFRX_SYNC(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_SYNC)
  303. /** @brief Enable the specified SPDIFRX peripheral (RCV State).
  304. * @param __HANDLE__: specifies the SPDIFRX Handle.
  305. * @retval None
  306. */
  307. #define __HAL_SPDIFRX_RCV(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_RCV)
  308. /** @brief Enable or disable the specified SPDIFRX interrupts.
  309. * @param __HANDLE__: specifies the SPDIFRX Handle.
  310. * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
  311. * This parameter can be one of the following values:
  312. * @arg SPDIFRX_IT_RXNE
  313. * @arg SPDIFRX_IT_CSRNE
  314. * @arg SPDIFRX_IT_PERRIE
  315. * @arg SPDIFRX_IT_OVRIE
  316. * @arg SPDIFRX_IT_SBLKIE
  317. * @arg SPDIFRX_IT_SYNCDIE
  318. * @arg SPDIFRX_IT_IFEIE
  319. * @retval None
  320. */
  321. #define __HAL_SPDIFRX_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
  322. #define __HAL_SPDIFRX_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR &= (uint16_t)(~(__INTERRUPT__)))
  323. /** @brief Checks if the specified SPDIFRX interrupt source is enabled or disabled.
  324. * @param __HANDLE__: specifies the SPDIFRX Handle.
  325. * @param __INTERRUPT__: specifies the SPDIFRX interrupt source to check.
  326. * This parameter can be one of the following values:
  327. * @arg SPDIFRX_IT_RXNE
  328. * @arg SPDIFRX_IT_CSRNE
  329. * @arg SPDIFRX_IT_PERRIE
  330. * @arg SPDIFRX_IT_OVRIE
  331. * @arg SPDIFRX_IT_SBLKIE
  332. * @arg SPDIFRX_IT_SYNCDIE
  333. * @arg SPDIFRX_IT_IFEIE
  334. * @retval The new state of __IT__ (TRUE or FALSE).
  335. */
  336. #define __HAL_SPDIFRX_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
  337. /** @brief Checks whether the specified SPDIFRX flag is set or not.
  338. * @param __HANDLE__: specifies the SPDIFRX Handle.
  339. * @param __FLAG__: specifies the flag to check.
  340. * This parameter can be one of the following values:
  341. * @arg SPDIFRX_FLAG_RXNE
  342. * @arg SPDIFRX_FLAG_CSRNE
  343. * @arg SPDIFRX_FLAG_PERR
  344. * @arg SPDIFRX_FLAG_OVR
  345. * @arg SPDIFRX_FLAG_SBD
  346. * @arg SPDIFRX_FLAG_SYNCD
  347. * @arg SPDIFRX_FLAG_FERR
  348. * @arg SPDIFRX_FLAG_SERR
  349. * @arg SPDIFRX_FLAG_TERR
  350. * @retval The new state of __FLAG__ (TRUE or FALSE).
  351. */
  352. #define __HAL_SPDIFRX_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
  353. /** @brief Clears the specified SPDIFRX SR flag, in setting the proper IFCR register bit.
  354. * @param __HANDLE__: specifies the USART Handle.
  355. * @param __IT_CLEAR__: specifies the interrupt clear register flag that needs to be set
  356. * to clear the corresponding interrupt
  357. * This parameter can be one of the following values:
  358. * @arg SPDIFRX_FLAG_PERR
  359. * @arg SPDIFRX_FLAG_OVR
  360. * @arg SPDIFRX_SR_SBD
  361. * @arg SPDIFRX_SR_SYNCD
  362. * @retval None
  363. */
  364. #define __HAL_SPDIFRX_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->IFCR = (uint32_t)(__IT_CLEAR__))
  365. /**
  366. * @}
  367. */
  368. /* Exported functions --------------------------------------------------------*/
  369. /** @addtogroup SPDIFRX_Exported_Functions
  370. * @{
  371. */
  372. /** @addtogroup SPDIFRX_Exported_Functions_Group1
  373. * @{
  374. */
  375. /* Initialization/de-initialization functions **********************************/
  376. HAL_StatusTypeDef HAL_SPDIFRX_Init(SPDIFRX_HandleTypeDef *hspdif);
  377. HAL_StatusTypeDef HAL_SPDIFRX_DeInit (SPDIFRX_HandleTypeDef *hspdif);
  378. void HAL_SPDIFRX_MspInit(SPDIFRX_HandleTypeDef *hspdif);
  379. void HAL_SPDIFRX_MspDeInit(SPDIFRX_HandleTypeDef *hspdif);
  380. HAL_StatusTypeDef HAL_SPDIFRX_SetDataFormat(SPDIFRX_HandleTypeDef *hspdif, SPDIFRX_SetDataFormatTypeDef sDataFormat);
  381. /**
  382. * @}
  383. */
  384. /** @addtogroup SPDIFRX_Exported_Functions_Group2
  385. * @{
  386. */
  387. /* I/O operation functions ***************************************************/
  388. /* Blocking mode: Polling */
  389. HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout);
  390. HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout);
  391. /* Non-Blocking mode: Interrupt */
  392. HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
  393. HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
  394. void HAL_SPDIFRX_IRQHandler(SPDIFRX_HandleTypeDef *hspdif);
  395. /* Non-Blocking mode: DMA */
  396. HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
  397. HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
  398. HAL_StatusTypeDef HAL_SPDIFRX_DMAStop(SPDIFRX_HandleTypeDef *hspdif);
  399. /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
  400. void HAL_SPDIFRX_RxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
  401. void HAL_SPDIFRX_RxCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
  402. void HAL_SPDIFRX_ErrorCallback(SPDIFRX_HandleTypeDef *hspdif);
  403. void HAL_SPDIFRX_CxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
  404. void HAL_SPDIFRX_CxCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
  405. /**
  406. * @}
  407. */
  408. /** @addtogroup SPDIFRX_Exported_Functions_Group3
  409. * @{
  410. */
  411. /* Peripheral Control and State functions ************************************/
  412. HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef *hspdif);
  413. uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef *hspdif);
  414. /**
  415. * @}
  416. */
  417. /**
  418. * @}
  419. */
  420. /* Private types -------------------------------------------------------------*/
  421. /* Private variables ---------------------------------------------------------*/
  422. /* Private constants ---------------------------------------------------------*/
  423. /* Private macros ------------------------------------------------------------*/
  424. /** @defgroup SPDIFRX_Private_Macros SPDIFRX Private Macros
  425. * @{
  426. */
  427. #define IS_SPDIFRX_INPUT_SELECT(INPUT) (((INPUT) == SPDIFRX_INPUT_IN1) || \
  428. ((INPUT) == SPDIFRX_INPUT_IN2) || \
  429. ((INPUT) == SPDIFRX_INPUT_IN3) || \
  430. ((INPUT) == SPDIFRX_INPUT_IN0))
  431. #define IS_SPDIFRX_MAX_RETRIES(RET) (((RET) == SPDIFRX_MAXRETRIES_NONE) || \
  432. ((RET) == SPDIFRX_MAXRETRIES_3) || \
  433. ((RET) == SPDIFRX_MAXRETRIES_15) || \
  434. ((RET) == SPDIFRX_MAXRETRIES_63))
  435. #define IS_SPDIFRX_WAIT_FOR_ACTIVITY(VAL) (((VAL) == SPDIFRX_WAITFORACTIVITY_ON) || \
  436. ((VAL) == SPDIFRX_WAITFORACTIVITY_OFF))
  437. #define IS_PREAMBLE_TYPE_MASK(VAL) (((VAL) == SPDIFRX_PREAMBLETYPEMASK_ON) || \
  438. ((VAL) == SPDIFRX_PREAMBLETYPEMASK_OFF))
  439. #define IS_VALIDITY_MASK(VAL) (((VAL) == SPDIFRX_VALIDITYMASK_OFF) || \
  440. ((VAL) == SPDIFRX_VALIDITYMASK_ON))
  441. #define IS_PARITY_ERROR_MASK(VAL) (((VAL) == SPDIFRX_PARITYERRORMASK_OFF) || \
  442. ((VAL) == SPDIFRX_PARITYERRORMASK_ON))
  443. #define IS_SPDIFRX_CHANNEL(CHANNEL) (((CHANNEL) == SPDIFRX_CHANNEL_A) || \
  444. ((CHANNEL) == SPDIFRX_CHANNEL_B))
  445. #define IS_SPDIFRX_DATA_FORMAT(FORMAT) (((FORMAT) == SPDIFRX_DATAFORMAT_LSB) || \
  446. ((FORMAT) == SPDIFRX_DATAFORMAT_MSB) || \
  447. ((FORMAT) == SPDIFRX_DATAFORMAT_32BITS))
  448. #define IS_STEREO_MODE(MODE) (((MODE) == SPDIFRX_STEREOMODE_DISABLE) || \
  449. ((MODE) == SPDIFRX_STEREOMODE_ENABLE))
  450. #define IS_CHANNEL_STATUS_MASK(VAL) (((VAL) == SPDIFRX_CHANNELSTATUS_ON) || \
  451. ((VAL) == SPDIFRX_CHANNELSTATUS_OFF))
  452. /**
  453. * @}
  454. */
  455. /* Private functions ---------------------------------------------------------*/
  456. /** @defgroup SPDIFRX_Private_Functions SPDIFRX Private Functions
  457. * @{
  458. */
  459. /**
  460. * @}
  461. */
  462. /**
  463. * @}
  464. */
  465. /**
  466. * @}
  467. */
  468. #ifdef __cplusplus
  469. }
  470. #endif
  471. #endif /* __STM32F7xx_HAL_SPDIFRX_H */
  472. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/