Subversion Repositories FuelGauge

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f0xx_hal_i2c_ex.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of I2C HAL Extended module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19.  
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef STM32F0xx_HAL_I2C_EX_H
  22. #define STM32F0xx_HAL_I2C_EX_H
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32f0xx_hal_def.h"
  30.  
  31. /** @addtogroup STM32F0xx_HAL_Driver
  32.   * @{
  33.   */
  34.  
  35. /** @addtogroup I2CEx
  36.   * @{
  37.   */
  38.  
  39. /* Exported types ------------------------------------------------------------*/
  40. /* Exported constants --------------------------------------------------------*/
  41.  
  42. /** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants
  43.   * @{
  44.   */
  45.  
  46. /** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter
  47.   * @{
  48.   */
  49. #define I2C_ANALOGFILTER_ENABLE         0x00000000U
  50. #define I2C_ANALOGFILTER_DISABLE        I2C_CR1_ANFOFF
  51. /**
  52.   * @}
  53.   */
  54.  
  55. /** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus
  56.   * @{
  57.   */
  58. #define I2C_FMP_NOT_SUPPORTED           0xAAAA0000U                                     /*!< Fast Mode Plus not supported       */
  59. #if defined(SYSCFG_CFGR1_I2C_FMP_PA9)
  60. #define I2C_FASTMODEPLUS_PA9            SYSCFG_CFGR1_I2C_FMP_PA9                        /*!< Enable Fast Mode Plus on PA9       */
  61. #define I2C_FASTMODEPLUS_PA10           SYSCFG_CFGR1_I2C_FMP_PA10                       /*!< Enable Fast Mode Plus on PA10      */
  62. #else
  63. #define I2C_FASTMODEPLUS_PA9            (uint32_t)(0x00000001U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PA9 not supported   */
  64. #define I2C_FASTMODEPLUS_PA10           (uint32_t)(0x00000002U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PA10 not supported  */
  65. #endif
  66. #define I2C_FASTMODEPLUS_PB6            SYSCFG_CFGR1_I2C_FMP_PB6                        /*!< Enable Fast Mode Plus on PB6       */
  67. #define I2C_FASTMODEPLUS_PB7            SYSCFG_CFGR1_I2C_FMP_PB7                        /*!< Enable Fast Mode Plus on PB7       */
  68. #define I2C_FASTMODEPLUS_PB8            SYSCFG_CFGR1_I2C_FMP_PB8                        /*!< Enable Fast Mode Plus on PB8       */
  69. #define I2C_FASTMODEPLUS_PB9            SYSCFG_CFGR1_I2C_FMP_PB9                        /*!< Enable Fast Mode Plus on PB9       */
  70. #if defined(SYSCFG_CFGR1_I2C_FMP_I2C1)
  71. #define I2C_FASTMODEPLUS_I2C1           SYSCFG_CFGR1_I2C_FMP_I2C1                       /*!< Enable Fast Mode Plus on I2C1 pins */
  72. #else
  73. #define I2C_FASTMODEPLUS_I2C1           (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported  */
  74. #endif
  75. #if defined(SYSCFG_CFGR1_I2C_FMP_I2C2)
  76. #define I2C_FASTMODEPLUS_I2C2           SYSCFG_CFGR1_I2C_FMP_I2C2                       /*!< Enable Fast Mode Plus on I2C2 pins */
  77. #else
  78. #define I2C_FASTMODEPLUS_I2C2           (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported  */
  79. #endif
  80. /**
  81.   * @}
  82.   */
  83.  
  84. /**
  85.   * @}
  86.   */
  87.  
  88. /* Exported macro ------------------------------------------------------------*/
  89. /* Exported functions --------------------------------------------------------*/
  90.  
  91. /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions
  92.   * @{
  93.   */
  94.  
  95. /** @addtogroup I2CEx_Exported_Functions_Group1 Extended features functions
  96.   * @brief    Extended features functions
  97.   * @{
  98.   */
  99.  
  100. /* Peripheral Control functions  ************************************************/
  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(I2C_CR1_WUPEN)
  104. HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c);
  105. HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c);
  106. #endif
  107. void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);
  108. void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
  109.  
  110. /* Private constants ---------------------------------------------------------*/
  111. /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants
  112.   * @{
  113.   */
  114.  
  115. /**
  116.   * @}
  117.   */
  118.  
  119. /* Private macros ------------------------------------------------------------*/
  120. /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros
  121.   * @{
  122.   */
  123. #define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \
  124.                                           ((FILTER) == I2C_ANALOGFILTER_DISABLE))
  125.  
  126. #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
  127.  
  128. #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FMP_NOT_SUPPORTED) != I2C_FMP_NOT_SUPPORTED) && \
  129.                                          ((((__CONFIG__) & (I2C_FASTMODEPLUS_PA9))  == I2C_FASTMODEPLUS_PA9)     || \
  130.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PA10)) == I2C_FASTMODEPLUS_PA10)    || \
  131.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB6))  == I2C_FASTMODEPLUS_PB6)     || \
  132.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB7))  == I2C_FASTMODEPLUS_PB7)     || \
  133.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB8))  == I2C_FASTMODEPLUS_PB8)     || \
  134.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_PB9))  == I2C_FASTMODEPLUS_PB9)     || \
  135.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1)    || \
  136.                                           (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C2)) == I2C_FASTMODEPLUS_I2C2)))
  137. /**
  138.   * @}
  139.   */
  140.  
  141. /* Private Functions ---------------------------------------------------------*/
  142. /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions
  143.   * @{
  144.   */
  145. /* Private functions are defined in stm32f0xx_hal_i2c_ex.c file */
  146. /**
  147.   * @}
  148.   */
  149.  
  150. /**
  151.   * @}
  152.   */
  153.  
  154. /**
  155.   * @}
  156.   */
  157.  
  158. /**
  159.   * @}
  160.   */
  161.  
  162. /**
  163.   * @}
  164.   */
  165.  
  166. #ifdef __cplusplus
  167. }
  168. #endif
  169.  
  170. #endif /* STM32F0xx_HAL_I2C_EX_H */
  171.  
  172. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  173.