xref: /btstack/port/stm32-l073rz-nucleo-em9304/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h (revision e838079242074edcbcbb400962776e15fe6ca6cb)
1 /**
2   ******************************************************************************
3   * @file    stm32l0xx_hal_i2c_ex.h
4   * @author  MCD Application Team
5   * @brief   Header file of I2C HAL Extended module.
6   ******************************************************************************
7   * @attention
8   *
9   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10   * All rights reserved.</center></h2>
11   *
12   * This software component is licensed by ST under BSD 3-Clause license,
13   * the "License"; You may not use this file except in compliance with the
14   * License. You may obtain a copy of the License at:
15   *                        opensource.org/licenses/BSD-3-Clause
16   *
17   ******************************************************************************
18   */
19 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L0xx_HAL_I2C_EX_H
22 #define STM32L0xx_HAL_I2C_EX_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l0xx_hal_def.h"
30 
31 /** @addtogroup STM32L0xx_HAL_Driver
32   * @{
33   */
34 
35 /** @addtogroup I2CEx
36   * @{
37   */
38 
39 /* Exported types ------------------------------------------------------------*/
40 /* Exported constants --------------------------------------------------------*/
41 
42 /** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants
43   * @{
44   */
45 
46 /** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter
47   * @{
48   */
49 #define I2C_ANALOGFILTER_ENABLE         0x00000000U
50 #define I2C_ANALOGFILTER_DISABLE        I2C_CR1_ANFOFF
51 /**
52   * @}
53   */
54 
55 /** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus
56   * @{
57   */
58 #define I2C_FMP_NOT_SUPPORTED           0xAAAA0000U                                     /*!< Fast Mode Plus not supported       */
59 #if defined(SYSCFG_CFGR2_I2C_PB6_FMP)
60 #define I2C_FASTMODEPLUS_PB6            SYSCFG_CFGR2_I2C_PB6_FMP                        /*!< Enable Fast Mode Plus on PB6       */
61 #define I2C_FASTMODEPLUS_PB7            SYSCFG_CFGR2_I2C_PB7_FMP                        /*!< Enable Fast Mode Plus on PB7       */
62 #else
63 #define I2C_FASTMODEPLUS_PB6            (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported   */
64 #define I2C_FASTMODEPLUS_PB7            (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported   */
65 #endif
66 #if defined(SYSCFG_CFGR2_I2C_PB8_FMP)
67 #define I2C_FASTMODEPLUS_PB8            SYSCFG_CFGR2_I2C_PB8_FMP                        /*!< Enable Fast Mode Plus on PB8       */
68 #define I2C_FASTMODEPLUS_PB9            SYSCFG_CFGR2_I2C_PB9_FMP                        /*!< Enable Fast Mode Plus on PB9       */
69 #else
70 #define I2C_FASTMODEPLUS_PB8            (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported   */
71 #define I2C_FASTMODEPLUS_PB9            (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported   */
72 #endif
73 #if defined(SYSCFG_CFGR2_I2C1_FMP)
74 #define I2C_FASTMODEPLUS_I2C1           SYSCFG_CFGR2_I2C1_FMP                           /*!< Enable Fast Mode Plus on I2C1 pins */
75 #else
76 #define I2C_FASTMODEPLUS_I2C1           (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported  */
77 #endif
78 #if defined(SYSCFG_CFGR2_I2C2_FMP)
79 #define I2C_FASTMODEPLUS_I2C2           SYSCFG_CFGR2_I2C2_FMP                           /*!< Enable Fast Mode Plus on I2C2 pins */
80 #else
81 #define I2C_FASTMODEPLUS_I2C2           (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported  */
82 #endif
83 #if defined(SYSCFG_CFGR2_I2C3_FMP)
84 #define I2C_FASTMODEPLUS_I2C3           SYSCFG_CFGR2_I2C3_FMP                           /*!< Enable Fast Mode Plus on I2C3 pins */
85 #else
86 #define I2C_FASTMODEPLUS_I2C3           (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported  */
87 #endif
88 /**
89   * @}
90   */
91 
92 /**
93   * @}
94   */
95 
96 /* Exported macro ------------------------------------------------------------*/
97 /* Exported functions --------------------------------------------------------*/
98 
99 /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions
100   * @{
101   */
102 
103 /** @addtogroup I2CEx_Exported_Functions_Group1 Extended features functions
104   * @brief    Extended features functions
105   * @{
106   */
107 
108 /* Peripheral Control functions  ************************************************/
109 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);
110 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);
111 HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c);
112 HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c);
113 #if  (defined(SYSCFG_CFGR2_I2C_PB6_FMP) || defined(SYSCFG_CFGR2_I2C_PB7_FMP)) || (defined(SYSCFG_CFGR2_I2C_PB8_FMP) || defined(SYSCFG_CFGR2_I2C_PB9_FMP)) || (defined(SYSCFG_CFGR2_I2C1_FMP)) || defined(SYSCFG_CFGR2_I2C2_FMP) || defined(SYSCFG_CFGR2_I2C3_FMP)
114 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);
115 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
116 #endif
117 
118 /* Private constants ---------------------------------------------------------*/
119 /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants
120   * @{
121   */
122 
123 /**
124   * @}
125   */
126 
127 /* Private macros ------------------------------------------------------------*/
128 /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros
129   * @{
130   */
131 #define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \
132                                           ((FILTER) == I2C_ANALOGFILTER_DISABLE))
133 
134 #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
135 
136 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FMP_NOT_SUPPORTED) != I2C_FMP_NOT_SUPPORTED) && \
137                                          ((((__CONFIG__) & (I2C_FASTMODEPLUS_PB6))  == I2C_FASTMODEPLUS_PB6)     || \
138                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB7))  == I2C_FASTMODEPLUS_PB7)     || \
139                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB8))  == I2C_FASTMODEPLUS_PB8)     || \
140                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB9))  == I2C_FASTMODEPLUS_PB9)     || \
141                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1)    || \
142                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C2)) == I2C_FASTMODEPLUS_I2C2)    || \
143                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C3)) == I2C_FASTMODEPLUS_I2C3)))
144 /**
145   * @}
146   */
147 
148 /* Private Functions ---------------------------------------------------------*/
149 /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions
150   * @{
151   */
152 /* Private functions are defined in stm32l0xx_hal_i2c_ex.c file */
153 /**
154   * @}
155   */
156 
157 /**
158   * @}
159   */
160 
161 /**
162   * @}
163   */
164 
165 /**
166   * @}
167   */
168 
169 /**
170   * @}
171   */
172 
173 #ifdef __cplusplus
174 }
175 #endif
176 
177 #endif /* STM32L0xx_HAL_I2C_EX_H */
178 
179 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
180