1 /** 2 ****************************************************************************** 3 * @file stm32f7xx_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) 2017 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 STM32F7xx_HAL_I2C_EX_H 21 #define STM32F7xx_HAL_I2C_EX_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32f7xx_hal_def.h" 29 30 /** @addtogroup STM32F7xx_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_FMP_NOT_SUPPORTED 0xAAAA0000U /*!< Fast Mode Plus not supported */ 57 #if defined(SYSCFG_PMC_I2C_PB6_FMP) 58 #define I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ 59 #define I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ 60 #else 61 #define I2C_FASTMODEPLUS_PB6 (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported */ 62 #define I2C_FASTMODEPLUS_PB7 (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported */ 63 #endif /* SYSCFG_PMC_I2C_PB6_FMP */ 64 #if defined(SYSCFG_PMC_I2C_PB8_FMP) 65 #define I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ 66 #define I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ 67 #else 68 #define I2C_FASTMODEPLUS_PB8 (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported */ 69 #define I2C_FASTMODEPLUS_PB9 (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported */ 70 #endif /* SYSCFG_PMC_I2C_PB8_FMP */ 71 #if defined(SYSCFG_PMC_I2C1_FMP) 72 #define I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ 73 #else 74 #define I2C_FASTMODEPLUS_I2C1 (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported */ 75 #endif /* SYSCFG_PMC_I2C1_FMP */ 76 #if defined(SYSCFG_PMC_I2C2_FMP) 77 #define I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ 78 #else 79 #define I2C_FASTMODEPLUS_I2C2 (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported */ 80 #endif /* SYSCFG_PMC_I2C2_FMP */ 81 #if defined(SYSCFG_PMC_I2C3_FMP) 82 #define I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */ 83 #else 84 #define I2C_FASTMODEPLUS_I2C3 (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported */ 85 #endif /* SYSCFG_PMC_I2C3_FMP */ 86 #if defined(SYSCFG_PMC_I2C4_FMP) 87 #define I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */ 88 #else 89 #define I2C_FASTMODEPLUS_I2C4 (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported */ 90 #endif /* SYSCFG_PMC_I2C4_FMP */ 91 /** 92 * @} 93 */ 94 95 /** 96 * @} 97 */ 98 99 /* Exported macro ------------------------------------------------------------*/ 100 /** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros 101 * @{ 102 */ 103 104 /** 105 * @} 106 */ 107 108 /* Exported functions --------------------------------------------------------*/ 109 /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions 110 * @{ 111 */ 112 113 /** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions 114 * @{ 115 */ 116 /* Peripheral Control functions ************************************************/ 117 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter); 118 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter); 119 /** 120 * @} 121 */ 122 #if (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP) 123 124 /** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions 125 * @{ 126 */ 127 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus); 128 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus); 129 /** 130 * @} 131 */ 132 #endif /* Fast Mode Plus Availability */ 133 134 /** 135 * @} 136 */ 137 138 /* Private constants ---------------------------------------------------------*/ 139 /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants 140 * @{ 141 */ 142 143 /** 144 * @} 145 */ 146 147 /* Private macros ------------------------------------------------------------*/ 148 /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros 149 * @{ 150 */ 151 #define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \ 152 ((FILTER) == I2C_ANALOGFILTER_DISABLE)) 153 154 #define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU) 155 156 #if defined(SYSCFG_PMC_I2C4_FMP) 157 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 158 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 159 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 160 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 161 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ 162 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \ 163 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \ 164 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4)) 165 #elif defined(SYSCFG_PMC_I2C3_FMP) 166 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 167 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 168 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 169 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 170 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ 171 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \ 172 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3)) 173 #elif defined(SYSCFG_PMC_I2C2_FMP) 174 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 175 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 176 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 177 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 178 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ 179 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2)) 180 #elif defined(SYSCFG_PMC_I2C1_FMP) 181 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 182 (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 183 (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 184 (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 185 (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1)) 186 #endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */ 187 /** 188 * @} 189 */ 190 191 /* Private Functions ---------------------------------------------------------*/ 192 /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions 193 * @{ 194 */ 195 /* Private functions are defined in stm32f7xx_hal_i2c_ex.c file */ 196 /** 197 * @} 198 */ 199 200 /** 201 * @} 202 */ 203 204 /** 205 * @} 206 */ 207 208 #ifdef __cplusplus 209 } 210 #endif 211 212 #endif /* STM32F7xx_HAL_I2C_EX_H */ 213