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