1  /**
2    ******************************************************************************
3    * @file    stm32h5xx_hal_i2c_ex.h
4    * @author  MCD Application Team
5    * @brief   Header file of I2C HAL Extended module.
6    ******************************************************************************
7    * @attention
8    *
9    * Copyright (c) 2022 STMicroelectronics.
10    * All rights reserved.
11    *
12    * This software is licensed under terms that can be found in the LICENSE file
13    * in the root directory of this software component.
14    * If no LICENSE file comes with this software, it is provided AS-IS.
15    *
16    ******************************************************************************
17    */
18  
19  /* Define to prevent recursive inclusion -------------------------------------*/
20  #ifndef STM32H5xx_HAL_I2C_EX_H
21  #define STM32H5xx_HAL_I2C_EX_H
22  
23  #ifdef __cplusplus
24  extern "C" {
25  #endif
26  
27  /* Includes ------------------------------------------------------------------*/
28  #include "stm32h5xx_hal_def.h"
29  
30  /** @addtogroup STM32H5xx_HAL_Driver
31    * @{
32    */
33  
34  /** @addtogroup I2CEx
35    * @{
36    */
37  
38  /* Exported types ------------------------------------------------------------*/
39  /* Exported constants --------------------------------------------------------*/
40  /** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants
41    * @{
42    */
43  
44  /** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter
45    * @{
46    */
47  #define I2C_ANALOGFILTER_ENABLE         0x00000000U
48  #define I2C_ANALOGFILTER_DISABLE        I2C_CR1_ANFOFF
49  /**
50    * @}
51    */
52  
53  /** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus
54    * @{
55    */
56  #define I2C_FASTMODEPLUS_ENABLE         0x00000000U           /*!< Enable Fast Mode Plus                        */
57  #define I2C_FASTMODEPLUS_DISABLE        0x00000001U           /*!< Disable Fast Mode Plus                       */
58  /**
59    * @}
60    */
61  
62  /**
63    * @}
64    */
65  
66  /* Exported macro ------------------------------------------------------------*/
67  /** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros
68    * @{
69    */
70  
71  /**
72    * @}
73    */
74  
75  /* Exported functions --------------------------------------------------------*/
76  /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions
77    * @{
78    */
79  
80  /** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions
81    * @{
82    */
83  /* Peripheral Control functions  ************************************************/
84  HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);
85  HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);
86  /**
87    * @}
88    */
89  
90  /** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions
91    * @{
92    */
93  HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c);
94  HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c);
95  /**
96    * @}
97    */
98  
99  /** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions
100    * @{
101    */
102  HAL_StatusTypeDef HAL_I2CEx_ConfigFastModePlus(I2C_HandleTypeDef *hi2c, uint32_t FastModePlus);
103  /**
104    * @}
105    */
106  
107  /**
108    * @}
109    */
110  
111  /* Private constants ---------------------------------------------------------*/
112  /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants
113    * @{
114    */
115  
116  /**
117    * @}
118    */
119  
120  /* Private macros ------------------------------------------------------------*/
121  /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros
122    * @{
123    */
124  #define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \
125                                           ((FILTER) == I2C_ANALOGFILTER_DISABLE))
126  
127  #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
128  
129  #define IS_I2C_FASTMODEPLUS(__CONFIG__) (((__CONFIG__) == (I2C_FASTMODEPLUS_ENABLE))   || \
130                                           ((__CONFIG__) == (I2C_FASTMODEPLUS_DISABLE)))
131  /**
132    * @}
133    */
134  
135  /* Private Functions ---------------------------------------------------------*/
136  /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions
137    * @{
138    */
139  /* Private functions are defined in stm32h5xx_hal_i2c_ex.c file */
140  /**
141    * @}
142    */
143  
144  /**
145    * @}
146    */
147  
148  /**
149    * @}
150    */
151  
152  #ifdef __cplusplus
153  }
154  #endif
155  
156  #endif /* STM32H5xx_HAL_I2C_EX_H */
157