stm32f4xx_hal_spdifrx.h 24 KB

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