stm32f4xx_hal_spdifrx.h 23 KB

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