2cfa26ed82a4a62a345f13cfc4a0ea9fd85678d2
2 ******************************************************************************
3 * @file stm32f7xx_hal_i2c_ex.h
4 * @author MCD Application Team
7 * @brief Header file of I2C HAL Extension module.
8 ******************************************************************************
11 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
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.
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.
35 ******************************************************************************
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F7xx_HAL_I2C_EX_H
40 #define __STM32F7xx_HAL_I2C_EX_H
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f7xx_hal_def.h"
49 /** @addtogroup STM32F7xx_HAL_Driver
57 /* Exported types ------------------------------------------------------------*/
58 /* Exported constants --------------------------------------------------------*/
60 /** @defgroup I2CEx_Exported_Constants I2CEx Exported Constants
64 /** @defgroup I2CEx_Analog_Filter I2CEx Analog Filter
67 #define I2C_ANALOGFILTER_ENABLE ((uint32_t)0x00000000U)
68 #define I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF
73 /** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus
76 #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)
78 #define I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP
79 #define I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP
80 #define I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP
81 #define I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP
83 #define I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP
84 #define I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP
85 #define I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP
86 #define I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP
88 #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
97 /* Exported macro ------------------------------------------------------------*/
98 /* Exported functions --------------------------------------------------------*/
100 /* Peripheral Control methods ************************************************/
101 HAL_StatusTypeDef
HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef
*hi2c
, uint32_t AnalogFilter
);
102 HAL_StatusTypeDef
HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef
*hi2c
, uint32_t DigitalFilter
);
103 #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)
104 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus
);
105 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus
);
106 #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
108 /* Private constants ---------------------------------------------------------*/
109 /** @defgroup I2C_Private_Constants I2C Private Constants
117 /* Private macros ------------------------------------------------------------*/
118 /** @defgroup I2C_Private_Macro I2C Private Macros
121 #define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \
122 ((FILTER) == I2C_ANALOGFILTER_DISABLE))
124 #define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU)
126 #if defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP) && defined(SYSCFG_PMC_I2C4_FMP)
127 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \
128 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \
129 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \
130 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
131 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \
132 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \
133 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \
134 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4))
135 #elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP)
136 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \
137 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \
138 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \
139 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
140 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \
141 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \
142 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3))
143 #elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP)
144 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \
145 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \
146 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \
147 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
148 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \
149 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2))
150 #elif defined(SYSCFG_PMC_I2C1_FMP)
151 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \
152 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \
153 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \
154 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
155 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
156 #endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
164 /* Private Functions ---------------------------------------------------------*/
165 /** @defgroup I2C_Private_Functions I2C Private Functions
168 /* Private functions are defined in stm32f7xx_hal_i2c_ex.c file */
185 #endif /* __STM32F7xx_HAL_I2C_EX_H */
188 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/