STM32L443xx HAL User Manual
stm32l4xx_hal_i2c_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_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 STM32L4xx_HAL_I2C_EX_H
00021 #define STM32L4xx_HAL_I2C_EX_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32l4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32L4xx_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_CFGR1_I2C_PB6_FMP                        /*!< Enable Fast Mode Plus on PB6       */
00058 #define I2C_FASTMODEPLUS_PB7            SYSCFG_CFGR1_I2C_PB7_FMP                        /*!< Enable Fast Mode Plus on PB7       */
00059 #if defined(SYSCFG_CFGR1_I2C_PB8_FMP)
00060 #define I2C_FASTMODEPLUS_PB8            SYSCFG_CFGR1_I2C_PB8_FMP                        /*!< Enable Fast Mode Plus on PB8       */
00061 #define I2C_FASTMODEPLUS_PB9            SYSCFG_CFGR1_I2C_PB9_FMP                        /*!< Enable Fast Mode Plus on PB9       */
00062 #else
00063 #define I2C_FASTMODEPLUS_PB8            (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported   */
00064 #define I2C_FASTMODEPLUS_PB9            (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported   */
00065 #endif /* SYSCFG_CFGR1_I2C_PB8_FMP */
00066 #define I2C_FASTMODEPLUS_I2C1           SYSCFG_CFGR1_I2C1_FMP                           /*!< Enable Fast Mode Plus on I2C1 pins */
00067 #if defined(SYSCFG_CFGR1_I2C2_FMP)
00068 #define I2C_FASTMODEPLUS_I2C2           SYSCFG_CFGR1_I2C2_FMP                           /*!< Enable Fast Mode Plus on I2C2 pins */
00069 #else
00070 #define I2C_FASTMODEPLUS_I2C2           (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported  */
00071 #endif /* SYSCFG_CFGR1_I2C2_FMP */
00072 #define I2C_FASTMODEPLUS_I2C3           SYSCFG_CFGR1_I2C3_FMP                           /*!< Enable Fast Mode Plus on I2C3 pins */
00073 #if defined(SYSCFG_CFGR1_I2C4_FMP)
00074 #define I2C_FASTMODEPLUS_I2C4           SYSCFG_CFGR1_I2C4_FMP                           /*!< Enable Fast Mode Plus on I2C4 pins */
00075 #else
00076 #define I2C_FASTMODEPLUS_I2C4           (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported  */
00077 #endif /* SYSCFG_CFGR1_I2C4_FMP */
00078 /**
00079   * @}
00080   */
00081 
00082 /**
00083   * @}
00084   */
00085 
00086 /* Exported macro ------------------------------------------------------------*/
00087 /** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros
00088   * @{
00089   */
00090 
00091 /**
00092   * @}
00093   */
00094 
00095 /* Exported functions --------------------------------------------------------*/
00096 /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions
00097   * @{
00098   */
00099 
00100 /** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions
00101   * @{
00102   */
00103 /* Peripheral Control functions  ************************************************/
00104 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);
00105 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);
00106 /**
00107   * @}
00108   */
00109 
00110 /** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions
00111   * @{
00112   */
00113 HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c);
00114 HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c);
00115 /**
00116   * @}
00117   */
00118 
00119 /** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions
00120   * @{
00121   */
00122 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);
00123 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
00124 /**
00125   * @}
00126   */
00127 
00128 /**
00129   * @}
00130   */
00131 
00132 /* Private constants ---------------------------------------------------------*/
00133 /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants
00134   * @{
00135   */
00136 
00137 /**
00138   * @}
00139   */
00140 
00141 /* Private macros ------------------------------------------------------------*/
00142 /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros
00143   * @{
00144   */
00145 #define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \
00146                                          ((FILTER) == I2C_ANALOGFILTER_DISABLE))
00147 
00148 #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
00149 
00150 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FMP_NOT_SUPPORTED) != I2C_FMP_NOT_SUPPORTED) && \
00151                                          ((((__CONFIG__) & (I2C_FASTMODEPLUS_PB6))  == I2C_FASTMODEPLUS_PB6)     || \
00152                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB7))  == I2C_FASTMODEPLUS_PB7)     || \
00153                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB8))  == I2C_FASTMODEPLUS_PB8)     || \
00154                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB9))  == I2C_FASTMODEPLUS_PB9)     || \
00155                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1)    || \
00156                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C2)) == I2C_FASTMODEPLUS_I2C2)    || \
00157                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C3)) == I2C_FASTMODEPLUS_I2C3)    || \
00158                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C4)) == I2C_FASTMODEPLUS_I2C4)))
00159 /**
00160   * @}
00161   */
00162 
00163 /* Private Functions ---------------------------------------------------------*/
00164 /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions
00165   * @{
00166   */
00167 /* Private functions are defined in stm32l4xx_hal_i2c_ex.c file */
00168 /**
00169   * @}
00170   */
00171 
00172 /**
00173   * @}
00174   */
00175 
00176 /**
00177   * @}
00178   */
00179 
00180 #ifdef __cplusplus
00181 }
00182 #endif
00183 
00184 #endif /* STM32L4xx_HAL_I2C_EX_H */