Subversion Repositories LedShow

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_hal_i2s.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of I2S 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.  
  36. /* Define to prevent recursive inclusion -------------------------------------*/
  37. #ifndef __STM32F1xx_HAL_I2S_H
  38. #define __STM32F1xx_HAL_I2S_H
  39.  
  40. #ifdef __cplusplus
  41.  extern "C" {
  42. #endif
  43.  
  44. #if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC)
  45.  
  46. /* Includes ------------------------------------------------------------------*/
  47. #include "stm32f1xx_hal_def.h"  
  48.  
  49. /** @addtogroup STM32F1xx_HAL_Driver
  50.   * @{
  51.   */
  52.  
  53. /** @addtogroup I2S
  54.   * @{
  55.   */
  56.  
  57. /* Exported types ------------------------------------------------------------*/
  58. /** @defgroup I2S_Exported_Types I2S Exported Types
  59.   * @{
  60.   */
  61.  
  62. /**
  63.   * @brief I2S Init structure definition
  64.   */
  65. typedef struct
  66. {
  67.   uint32_t Mode;            /*!< Specifies the I2S operating mode.
  68.                                  This parameter can be a value of @ref I2S_Mode */
  69.  
  70.   uint32_t Standard;        /*!< Specifies the standard used for the I2S communication.
  71.                                  This parameter can be a value of @ref I2S_Standard */
  72.  
  73.   uint32_t DataFormat;      /*!< Specifies the data format for the I2S communication.
  74.                                  This parameter can be a value of @ref I2S_Data_Format */
  75.  
  76.   uint32_t MCLKOutput;      /*!< Specifies whether the I2S MCLK output is enabled or not.
  77.                                  This parameter can be a value of @ref I2S_MCLK_Output */
  78.  
  79.   uint32_t AudioFreq;       /*!< Specifies the frequency selected for the I2S communication.
  80.                                  This parameter can be a value of @ref I2S_Audio_Frequency */
  81.  
  82.   uint32_t CPOL;            /*!< Specifies the idle state of the I2S clock.
  83.                                  This parameter can be a value of @ref I2S_Clock_Polarity */
  84. }I2S_InitTypeDef;
  85.  
  86. /**
  87.   * @brief  HAL State structures definition
  88.   */
  89. typedef enum
  90. {
  91.   HAL_I2S_STATE_RESET      = 0x00U,  /*!< I2S not yet initialized or disabled                */
  92.   HAL_I2S_STATE_READY      = 0x01U,  /*!< I2S initialized and ready for use                  */
  93.   HAL_I2S_STATE_BUSY       = 0x02U,  /*!< I2S internal process is ongoing                    */
  94.   HAL_I2S_STATE_BUSY_TX    = 0x03U,  /*!< Data Transmission process is ongoing               */
  95.   HAL_I2S_STATE_BUSY_RX    = 0x04U,  /*!< Data Reception process is ongoing                  */
  96.   HAL_I2S_STATE_BUSY_TX_RX = 0x05U,  /*!< Data Transmission and Reception process is ongoing */
  97.   HAL_I2S_STATE_TIMEOUT    = 0x06U,  /*!< I2S timeout state                                  */
  98.   HAL_I2S_STATE_ERROR      = 0x07U   /*!< I2S error state                                    */
  99.  
  100. }HAL_I2S_StateTypeDef;
  101.  
  102. /**
  103.   * @brief I2S handle Structure definition
  104.   */
  105. typedef struct __I2S_HandleTypeDef
  106. {
  107.   SPI_TypeDef                *Instance;    /*!< I2S registers base address        */
  108.  
  109.   I2S_InitTypeDef            Init;         /*!< I2S communication parameters      */
  110.  
  111.   uint16_t                   *pTxBuffPtr;  /*!< Pointer to I2S Tx transfer buffer */
  112.  
  113.   __IO uint16_t              TxXferSize;   /*!< I2S Tx transfer size              */
  114.  
  115.   __IO uint16_t              TxXferCount;  /*!< I2S Tx transfer Counter           */
  116.  
  117.   uint16_t                   *pRxBuffPtr;  /*!< Pointer to I2S Rx transfer buffer */
  118.  
  119.   __IO uint16_t              RxXferSize;   /*!< I2S Rx transfer size              */
  120.  
  121.   __IO uint16_t              RxXferCount;  /*!< I2S 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.  
  128.   void (*IrqHandlerISR)      (struct __I2S_HandleTypeDef *hi2s);   /*!< I2S function pointer on IrqHandler   */
  129.  
  130.   DMA_HandleTypeDef          *hdmatx;      /*!< I2S Tx DMA handle parameters      */
  131.  
  132.   DMA_HandleTypeDef          *hdmarx;      /*!< I2S Rx DMA handle parameters      */
  133.  
  134.   __IO HAL_LockTypeDef       Lock;         /*!< I2S locking object                */
  135.  
  136.   __IO HAL_I2S_StateTypeDef  State;        /*!< I2S communication state           */
  137.  
  138.   __IO uint32_t              ErrorCode;    /*!< I2S Error code
  139.                                               This parameter can be a value of @ref I2S_ErrorCode */
  140.  
  141. }I2S_HandleTypeDef;
  142. /**
  143.   * @}
  144.   */
  145.  
  146. /* Exported constants --------------------------------------------------------*/
  147. /** @defgroup I2S_Exported_Constants I2S Exported Constants
  148.   * @{
  149.   */
  150. /**
  151.   * @defgroup  I2S_ErrorCode I2S Error Code
  152.   * @{
  153.   */
  154. #define HAL_I2S_ERROR_NONE               0x00000000U  /*!< No error                    */
  155. #define HAL_I2S_ERROR_TIMEOUT            0x00000001U  /*!< Timeout error               */
  156. #define HAL_I2S_ERROR_OVR                0x00000002U  /*!< OVR error                   */
  157. #define HAL_I2S_ERROR_UDR                0x00000004U  /*!< UDR error                   */
  158. #define HAL_I2S_ERROR_DMA                0x00000008U  /*!< DMA transfer error          */
  159. #define HAL_I2S_ERROR_PRESCALER          0x00000010U  /*!< Prescaler Calculation error */
  160. /**
  161.   * @}
  162.   */
  163.  
  164. /** @defgroup I2S_Mode I2S Mode
  165.   * @{
  166.   */
  167. #define I2S_MODE_SLAVE_TX                0x00000000U
  168. #define I2S_MODE_SLAVE_RX                ((uint32_t)SPI_I2SCFGR_I2SCFG_0)
  169. #define I2S_MODE_MASTER_TX               ((uint32_t)SPI_I2SCFGR_I2SCFG_1)
  170. #define I2S_MODE_MASTER_RX               ((uint32_t)(SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1))
  171. /**
  172.   * @}
  173.   */
  174.  
  175. /** @defgroup I2S_Standard I2S Standard
  176.   * @{
  177.   */
  178. #define I2S_STANDARD_PHILIPS             0x00000000U
  179. #define I2S_STANDARD_MSB                 ((uint32_t)SPI_I2SCFGR_I2SSTD_0)
  180. #define I2S_STANDARD_LSB                 ((uint32_t)SPI_I2SCFGR_I2SSTD_1)
  181. #define I2S_STANDARD_PCM_SHORT           ((uint32_t)(SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1))
  182. #define I2S_STANDARD_PCM_LONG            ((uint32_t)(SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC))
  183. /**
  184.   * @}
  185.   */
  186.  
  187. /** @defgroup I2S_Data_Format I2S Data Format
  188.   * @{
  189.   */
  190. #define I2S_DATAFORMAT_16B               0x00000000U
  191. #define I2S_DATAFORMAT_16B_EXTENDED      ((uint32_t)SPI_I2SCFGR_CHLEN)
  192. #define I2S_DATAFORMAT_24B               ((uint32_t)(SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0))
  193. #define I2S_DATAFORMAT_32B               ((uint32_t)(SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1))
  194. /**
  195.   * @}
  196.   */
  197.  
  198. /** @defgroup I2S_MCLK_Output I2S Mclk Output
  199.   * @{
  200.   */
  201. #define I2S_MCLKOUTPUT_ENABLE           ((uint32_t)SPI_I2SPR_MCKOE)
  202. #define I2S_MCLKOUTPUT_DISABLE          0x00000000U
  203. /**
  204.   * @}
  205.   */
  206.  
  207. /** @defgroup I2S_Audio_Frequency I2S Audio Frequency
  208.   * @{
  209.   */
  210. #define I2S_AUDIOFREQ_192K               192000U
  211. #define I2S_AUDIOFREQ_96K                96000U
  212. #define I2S_AUDIOFREQ_48K                48000U
  213. #define I2S_AUDIOFREQ_44K                44100U
  214. #define I2S_AUDIOFREQ_32K                32000U
  215. #define I2S_AUDIOFREQ_22K                22050U
  216. #define I2S_AUDIOFREQ_16K                16000U
  217. #define I2S_AUDIOFREQ_11K                11025U
  218. #define I2S_AUDIOFREQ_8K                 8000U
  219. #define I2S_AUDIOFREQ_DEFAULT            2U
  220. /**
  221.   * @}
  222.   */
  223.  
  224. /** @defgroup I2S_Clock_Polarity  I2S Clock Polarity
  225.   * @{
  226.   */
  227. #define I2S_CPOL_LOW                    0x00000000U
  228. #define I2S_CPOL_HIGH                   ((uint32_t)SPI_I2SCFGR_CKPOL)
  229. /**
  230.   * @}
  231.   */
  232.  
  233. /** @defgroup I2S_Interrupts_Definition I2S Interrupts Definition
  234.   * @{
  235.   */
  236. #define I2S_IT_TXE                      SPI_CR2_TXEIE
  237. #define I2S_IT_RXNE                     SPI_CR2_RXNEIE
  238. #define I2S_IT_ERR                      SPI_CR2_ERRIE
  239. /**
  240.   * @}
  241.   */
  242.  
  243. /** @defgroup I2S_Flags_Definition I2S Flags Definition
  244.   * @{
  245.   */
  246. #define I2S_FLAG_TXE                    SPI_SR_TXE
  247. #define I2S_FLAG_RXNE                   SPI_SR_RXNE
  248.  
  249. #define I2S_FLAG_UDR                    SPI_SR_UDR
  250. #define I2S_FLAG_OVR                    SPI_SR_OVR
  251. #define I2S_FLAG_FRE                    SPI_SR_FRE
  252.  
  253. #define I2S_FLAG_CHSIDE                 SPI_SR_CHSIDE
  254. #define I2S_FLAG_BSY                    SPI_SR_BSY
  255. /**
  256.   * @}
  257.   */
  258.  
  259. /**
  260.   * @}
  261.   */
  262.  
  263. /* Exported macro ------------------------------------------------------------*/
  264. /** @defgroup I2S_Exported_Macros I2S Exported Macros
  265.   * @{
  266.   */
  267.  
  268. /** @brief Reset I2S handle state
  269.   * @param  __HANDLE__: specifies the I2S Handle.
  270.   * @retval None
  271.   */
  272. #define __HAL_I2S_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2S_STATE_RESET)
  273.  
  274. /** @brief  Enable the specified SPI peripheral (in I2S mode).
  275.   * @param  __HANDLE__: specifies the I2S Handle.
  276.   * @retval None
  277.   */
  278. #define __HAL_I2S_ENABLE(__HANDLE__)    (SET_BIT((__HANDLE__)->Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
  279.  
  280. /** @brief  Disable the specified SPI peripheral (in I2S mode).
  281.   * @param  __HANDLE__: specifies the I2S Handle.
  282.   * @retval None
  283.   */
  284. #define __HAL_I2S_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
  285.  
  286. /** @brief  Enable the specified I2S interrupts.
  287.   * @param  __HANDLE__: specifies the I2S Handle.
  288.   * @param  __INTERRUPT__: specifies the interrupt source to enable or disable.
  289.   *         This parameter can be one of the following values:
  290.   *            @arg I2S_IT_TXE: Tx buffer empty interrupt enable
  291.   *            @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
  292.   *            @arg I2S_IT_ERR: Error interrupt enable
  293.   * @retval None
  294.   */
  295. #define __HAL_I2S_ENABLE_IT(__HANDLE__, __INTERRUPT__)    (SET_BIT((__HANDLE__)->Instance->CR2,(__INTERRUPT__)))
  296.  
  297. /** @brief  Disable the specified I2S interrupts.
  298.   * @param  __HANDLE__: specifies the I2S Handle.
  299.   * @param  __INTERRUPT__: specifies the interrupt source to enable or disable.
  300.   *         This parameter can be one of the following values:
  301.   *            @arg I2S_IT_TXE: Tx buffer empty interrupt enable
  302.   *            @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
  303.   *            @arg I2S_IT_ERR: Error interrupt enable
  304.   * @retval None
  305.   */
  306. #define __HAL_I2S_DISABLE_IT(__HANDLE__, __INTERRUPT__) (CLEAR_BIT((__HANDLE__)->Instance->CR2,(__INTERRUPT__)))
  307.  
  308. /** @brief  Checks if the specified I2S interrupt source is enabled or disabled.
  309.   * @param  __HANDLE__: specifies the I2S Handle.
  310.   *         This parameter can be I2S where x: 1, 2, or 3 to select the I2S peripheral.
  311.   * @param  __INTERRUPT__: specifies the I2S interrupt source to check.
  312.   *          This parameter can be one of the following values:
  313.   *            @arg I2S_IT_TXE: Tx buffer empty interrupt enable
  314.   *            @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
  315.   *            @arg I2S_IT_ERR: Error interrupt enable
  316.   * @retval The new state of __IT__ (TRUE or FALSE).
  317.   */
  318. #define __HAL_I2S_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
  319.  
  320. /** @brief  Checks whether the specified I2S flag is set or not.
  321.   * @param  __HANDLE__: specifies the I2S Handle.
  322.   * @param  __FLAG__: specifies the flag to check.
  323.   *         This parameter can be one of the following values:
  324.   *            @arg I2S_FLAG_RXNE: Receive buffer not empty flag
  325.   *            @arg I2S_FLAG_TXE: Transmit buffer empty flag
  326.   *            @arg I2S_FLAG_UDR: Underrun flag
  327.   *            @arg I2S_FLAG_OVR: Overrun flag
  328.   *            @arg I2S_FLAG_FRE: Frame error flag
  329.   *            @arg I2S_FLAG_CHSIDE: Channel Side flag
  330.   *            @arg I2S_FLAG_BSY: Busy flag
  331.   * @retval The new state of __FLAG__ (TRUE or FALSE).
  332.   */
  333. #define __HAL_I2S_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
  334.  
  335. /** @brief Clears the I2S OVR pending flag.
  336.   * @param  __HANDLE__: specifies the I2S Handle.
  337.   * @retval None
  338.   */
  339. #define __HAL_I2S_CLEAR_OVRFLAG(__HANDLE__)     \
  340.   do{                                           \
  341.     __IO uint32_t tmpreg = 0x00U;               \
  342.     tmpreg = (__HANDLE__)->Instance->DR;        \
  343.     tmpreg = (__HANDLE__)->Instance->SR;        \
  344.     UNUSED(tmpreg);                             \
  345.   } while(0U)
  346.  
  347. /** @brief Clears the I2S UDR pending flag.
  348.   * @param  __HANDLE__: specifies the I2S Handle.
  349.   * @retval None
  350.   */
  351. #define __HAL_I2S_CLEAR_UDRFLAG(__HANDLE__)     \
  352.   do{                                           \
  353.   __IO uint32_t tmpreg = 0x00U;                 \
  354.   tmpreg = (__HANDLE__)->Instance->SR;          \
  355.   UNUSED(tmpreg);                               \
  356.   } while(0U)
  357. /**
  358.   * @}
  359.   */
  360.  
  361. /* Exported functions --------------------------------------------------------*/
  362. /** @addtogroup I2S_Exported_Functions
  363.   * @{
  364.   */
  365.  
  366. /** @addtogroup I2S_Exported_Functions_Group1
  367.   * @{
  368.   */
  369. /* Initialization/de-initialization functions  ********************************/
  370. HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s);
  371. HAL_StatusTypeDef HAL_I2S_DeInit (I2S_HandleTypeDef *hi2s);
  372. void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s);
  373. void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s);
  374. /**
  375.   * @}
  376.   */
  377.  
  378. /** @addtogroup I2S_Exported_Functions_Group2
  379.   * @{
  380.   */
  381. /* I/O operation functions  ***************************************************/
  382. /* Blocking mode: Polling */
  383. HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
  384. HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
  385.  
  386.  /* Non-Blocking mode: Interrupt */
  387. HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
  388. HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
  389. void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s);
  390.  
  391. /* Non-Blocking mode: DMA */
  392. HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
  393. HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
  394.  
  395. HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s);
  396. HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s);
  397. HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s);
  398.  
  399. /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
  400. void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
  401. void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s);
  402. void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
  403. void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s);
  404. void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s);
  405. /**
  406.   * @}
  407.   */
  408.  
  409. /** @addtogroup I2S_Exported_Functions_Group3
  410.   * @{
  411.   */
  412. /* Peripheral Control and State functions  ************************************/
  413. HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s);
  414. uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s);
  415. /**
  416.   * @}
  417.   */
  418.  
  419. /**
  420.   * @}
  421.   */
  422.  
  423. /* Private types -------------------------------------------------------------*/
  424. /* Private variables ---------------------------------------------------------*/
  425. /* Private constants ---------------------------------------------------------*/
  426. /** @defgroup I2S_Private_Constants I2S Private Constants
  427.   * @{
  428.   */
  429.  
  430. /**
  431.   * @}
  432.   */
  433.  
  434. /* Private macros ------------------------------------------------------------*/
  435. /** @defgroup I2S_Private_Macros I2S Private Macros
  436.   * @{
  437.   */
  438. #define IS_I2S_MODE(MODE) (((MODE) == I2S_MODE_SLAVE_TX)  || \
  439.                            ((MODE) == I2S_MODE_SLAVE_RX)  || \
  440.                            ((MODE) == I2S_MODE_MASTER_TX) || \
  441.                            ((MODE) == I2S_MODE_MASTER_RX))
  442.  
  443. #define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_STANDARD_PHILIPS)   || \
  444.                                    ((STANDARD) == I2S_STANDARD_MSB)       || \
  445.                                    ((STANDARD) == I2S_STANDARD_LSB)       || \
  446.                                    ((STANDARD) == I2S_STANDARD_PCM_SHORT) || \
  447.                                    ((STANDARD) == I2S_STANDARD_PCM_LONG))
  448.  
  449. #define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DATAFORMAT_16B)          || \
  450.                                     ((FORMAT) == I2S_DATAFORMAT_16B_EXTENDED) || \
  451.                                     ((FORMAT) == I2S_DATAFORMAT_24B)          || \
  452.                                     ((FORMAT) == I2S_DATAFORMAT_32B))
  453.  
  454. #define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOUTPUT_ENABLE) || \
  455.                                     ((OUTPUT) == I2S_MCLKOUTPUT_DISABLE))
  456.  
  457. #define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AUDIOFREQ_8K)    && \
  458.                                   ((FREQ) <= I2S_AUDIOFREQ_192K)) || \
  459.                                   ((FREQ) == I2S_AUDIOFREQ_DEFAULT))
  460.  
  461. #define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_LOW) || \
  462.                            ((CPOL) == I2S_CPOL_HIGH))
  463. /**
  464.   * @}
  465.   */
  466.  
  467. /* Private Fonctions ---------------------------------------------------------*/
  468. /** @defgroup I2S_Private_Functions I2S Private Functions
  469.   * @{
  470.   */
  471. /* Private functions are defined in stm32f1xx_hal_i2s.c file */
  472. /**
  473.   * @}
  474.   */
  475.  
  476. /**
  477.   * @}
  478.   */
  479.  
  480. /**
  481.   * @}
  482.   */
  483. #endif /* STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
  484.  
  485. #ifdef __cplusplus
  486. }
  487. #endif
  488.  
  489. #endif /* __STM32F1xx_HAL_I2S_H */
  490.  
  491. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  492.