STM32H735xx HAL User Manual
stm32h7xx_hal_i2c_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_i2c_ex.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of I2C HAL Extended module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32H7xx_HAL_I2C_EX_H
00021 #define STM32H7xx_HAL_I2C_EX_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32h7xx_hal_def.h"
00029 
00030 /** @addtogroup STM32H7xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @addtogroup I2CEx
00035   * @{
00036   */
00037 
00038 /* Exported types ------------------------------------------------------------*/
00039 /* Exported constants --------------------------------------------------------*/
00040 /** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants
00041   * @{
00042   */
00043 
00044 /** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter
00045   * @{
00046   */
00047 #define I2C_ANALOGFILTER_ENABLE         0x00000000U
00048 #define I2C_ANALOGFILTER_DISABLE        I2C_CR1_ANFOFF
00049 /**
00050   * @}
00051   */
00052 
00053 /** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus
00054   * @{
00055   */
00056 #define I2C_FMP_NOT_SUPPORTED           0xAAAA0000U                                     /*!< Fast Mode Plus not supported       */
00057 #define I2C_FASTMODEPLUS_PB6            SYSCFG_PMCR_I2C_PB6_FMP                        /*!< Enable Fast Mode Plus on PB6       */
00058 #define I2C_FASTMODEPLUS_PB7            SYSCFG_PMCR_I2C_PB7_FMP                        /*!< Enable Fast Mode Plus on PB7       */
00059 #define I2C_FASTMODEPLUS_PB8            SYSCFG_PMCR_I2C_PB8_FMP                        /*!< Enable Fast Mode Plus on PB8       */
00060 #define I2C_FASTMODEPLUS_PB9            SYSCFG_PMCR_I2C_PB9_FMP                        /*!< Enable Fast Mode Plus on PB9       */
00061 #define I2C_FASTMODEPLUS_I2C1           SYSCFG_PMCR_I2C1_FMP                           /*!< Enable Fast Mode Plus on I2C1 pins */
00062 #define I2C_FASTMODEPLUS_I2C2           SYSCFG_PMCR_I2C2_FMP                           /*!< Enable Fast Mode Plus on I2C2 pins */
00063 #define I2C_FASTMODEPLUS_I2C3           SYSCFG_PMCR_I2C3_FMP                           /*!< Enable Fast Mode Plus on I2C3 pins */
00064 #define I2C_FASTMODEPLUS_I2C4           SYSCFG_PMCR_I2C4_FMP                           /*!< Enable Fast Mode Plus on I2C4 pins */
00065 #if defined(SYSCFG_PMCR_I2C5_FMP)
00066 #define I2C_FASTMODEPLUS_I2C5           SYSCFG_PMCR_I2C5_FMP                           /*!< Enable Fast Mode Plus on I2C5 pins */
00067 #else
00068 #define I2C_FASTMODEPLUS_I2C5           (uint32_t)(0x00001000U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C5 not supported  */
00069 #endif /* SYSCFG_PMCR_I2C5_FMP */
00070 /**
00071   * @}
00072   */
00073 
00074 /**
00075   * @}
00076   */
00077 
00078 /* Exported macro ------------------------------------------------------------*/
00079 /** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros
00080   * @{
00081   */
00082 
00083 /**
00084   * @}
00085   */
00086 
00087 /* Exported functions --------------------------------------------------------*/
00088 /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions
00089   * @{
00090   */
00091 
00092 /** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions
00093   * @{
00094   */
00095 /* Peripheral Control functions  ************************************************/
00096 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);
00097 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);
00098 /**
00099   * @}
00100   */
00101 
00102 /** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions
00103   * @{
00104   */
00105 HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c);
00106 HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c);
00107 /**
00108   * @}
00109   */
00110 
00111 /** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions
00112   * @{
00113   */
00114 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);
00115 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
00116 /**
00117   * @}
00118   */
00119 
00120 /**
00121   * @}
00122   */
00123 
00124 /* Private constants ---------------------------------------------------------*/
00125 /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants
00126   * @{
00127   */
00128 
00129 /**
00130   * @}
00131   */
00132 
00133 /* Private macros ------------------------------------------------------------*/
00134 /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros
00135   * @{
00136   */
00137 #define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \
00138                                          ((FILTER) == I2C_ANALOGFILTER_DISABLE))
00139 
00140 #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
00141 
00142 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \
00143                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \
00144                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \
00145                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB9)  == I2C_FASTMODEPLUS_PB9)  || \
00146                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \
00147                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \
00148                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \
00149                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4))
00150 /**
00151   * @}
00152   */
00153 
00154 /* Private Functions ---------------------------------------------------------*/
00155 /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions
00156   * @{
00157   */
00158 /* Private functions are defined in stm32h7xx_hal_i2c_ex.c file */
00159 /**
00160   * @}
00161   */
00162 
00163 /**
00164   * @}
00165   */
00166 
00167 /**
00168   * @}
00169   */
00170 
00171 #ifdef __cplusplus
00172 }
00173 #endif
00174 
00175 #endif /* STM32H7xx_HAL_I2C_EX_H */