1 /** 2 ****************************************************************************** 3 * @file stm32c0xx_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 STM32C0xx_HAL_I2C_EX_H 21 #define STM32C0xx_HAL_I2C_EX_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32c0xx_hal_def.h" 29 30 /** @addtogroup STM32C0xx_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 #define I2C_FASTMODEPLUS_PA9 SYSCFG_CFGR1_I2C_PA9_FMP /*!< Enable Fast Mode Plus on PA9 */ 58 #define I2C_FASTMODEPLUS_PA10 SYSCFG_CFGR1_I2C_PA10_FMP /*!< Enable Fast Mode Plus on PA10 */ 59 #define I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ 60 #define I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ 61 #if defined(SYSCFG_CFGR1_I2C_PB8_FMP) 62 #define I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ 63 #define I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ 64 #else 65 #define I2C_FASTMODEPLUS_PB8 (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported */ 66 #define I2C_FASTMODEPLUS_PB9 (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported */ 67 #endif /* SYSCFG_CFGR1_I2C_PB8_FMP */ 68 #if defined(SYSCFG_CFGR1_I2C_PC14_FMP) 69 #define I2C_FASTMODEPLUS_PC14 SYSCFG_CFGR1_I2C_PC14_FMP /*!< Enable Fast Mode Plus on PC14 */ 70 #else 71 #define I2C_FASTMODEPLUS_PC14 (uint32_t)(0x00000014U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PC14 not supported */ 72 #endif /* SYSCFG_CFGR1_I2C_PC14_FMP */ 73 #define I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ 74 #if defined(SYSCFG_CFGR1_I2C2_FMP) 75 #define I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ 76 #else 77 #define I2C_FASTMODEPLUS_I2C2 (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported */ 78 #endif /* SYSCFG_CFGR1_I2C2_FMP */ 79 /** 80 * @} 81 */ 82 83 /** 84 * @} 85 */ 86 87 /* Exported macro ------------------------------------------------------------*/ 88 /** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros 89 * @{ 90 */ 91 92 /** 93 * @} 94 */ 95 96 /* Exported functions --------------------------------------------------------*/ 97 /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions 98 * @{ 99 */ 100 101 /** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions 102 * @{ 103 */ 104 /* Peripheral Control functions ************************************************/ 105 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter); 106 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter); 107 /** 108 * @} 109 */ 110 #if defined(I2C_CR1_WUPEN) 111 112 /** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions 113 * @{ 114 */ 115 HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c); 116 HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c); 117 /** 118 * @} 119 */ 120 #endif /* I2C_CR1_WUPEN */ 121 122 /** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions 123 * @{ 124 */ 125 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus); 126 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus); 127 /** 128 * @} 129 */ 130 131 /** 132 * @} 133 */ 134 135 /* Private constants ---------------------------------------------------------*/ 136 /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants 137 * @{ 138 */ 139 140 /** 141 * @} 142 */ 143 144 /* Private macros ------------------------------------------------------------*/ 145 /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros 146 * @{ 147 */ 148 #define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \ 149 ((FILTER) == I2C_ANALOGFILTER_DISABLE)) 150 151 #define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU) 152 153 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & (I2C_FASTMODEPLUS_PA9)) == I2C_FASTMODEPLUS_PA9) || \ 154 (((__CONFIG__) & (I2C_FASTMODEPLUS_PA10)) == I2C_FASTMODEPLUS_PA10) || \ 155 (((__CONFIG__) & (I2C_FASTMODEPLUS_PB6)) == I2C_FASTMODEPLUS_PB6) || \ 156 (((__CONFIG__) & (I2C_FASTMODEPLUS_PB7)) == I2C_FASTMODEPLUS_PB7) || \ 157 (((__CONFIG__) & (I2C_FASTMODEPLUS_PB8)) == I2C_FASTMODEPLUS_PB8) || \ 158 (((__CONFIG__) & (I2C_FASTMODEPLUS_PB9)) == I2C_FASTMODEPLUS_PB9) || \ 159 (((__CONFIG__) & (I2C_FASTMODEPLUS_PC14)) == I2C_FASTMODEPLUS_PC14) || \ 160 (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1) || \ 161 (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C2)) == I2C_FASTMODEPLUS_I2C2)) 162 /** 163 * @} 164 */ 165 166 /* Private Functions ---------------------------------------------------------*/ 167 /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions 168 * @{ 169 */ 170 /* Private functions are defined in stm32c0xx_hal_i2c_ex.c file */ 171 /** 172 * @} 173 */ 174 175 /** 176 * @} 177 */ 178 179 /** 180 * @} 181 */ 182 183 #ifdef __cplusplus 184 } 185 #endif 186 187 #endif /* STM32C0xx_HAL_I2C_EX_H */ 188