]> git.leonardobizzoni.com Git - pioneer-stm32/blob
d5d75314dc5fceb952e084d38561b977ae5bf17e
[pioneer-stm32] /
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_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 STM32F7xx_HAL_I2C_EX_H\r
22 #define STM32F7xx_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 "stm32f7xx_hal_def.h"\r
30 \r
31 /** @addtogroup STM32F7xx_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 #if defined(SYSCFG_PMC_I2C_PB6_FMP)\r
60 #define I2C_FASTMODEPLUS_PB6            SYSCFG_PMC_I2C_PB6_FMP                        /*!< Enable Fast Mode Plus on PB6       */\r
61 #define I2C_FASTMODEPLUS_PB7            SYSCFG_PMC_I2C_PB7_FMP                        /*!< Enable Fast Mode Plus on PB7       */\r
62 #else\r
63 #define I2C_FASTMODEPLUS_PB6            (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported   */\r
64 #define I2C_FASTMODEPLUS_PB7            (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported   */\r
65 #endif\r
66 #if defined(SYSCFG_PMC_I2C_PB8_FMP)\r
67 #define I2C_FASTMODEPLUS_PB8            SYSCFG_PMC_I2C_PB8_FMP                        /*!< Enable Fast Mode Plus on PB8       */\r
68 #define I2C_FASTMODEPLUS_PB9            SYSCFG_PMC_I2C_PB9_FMP                        /*!< Enable Fast Mode Plus on PB9       */\r
69 #else\r
70 #define I2C_FASTMODEPLUS_PB8            (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported   */\r
71 #define I2C_FASTMODEPLUS_PB9            (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported   */\r
72 #endif\r
73 #if defined(SYSCFG_PMC_I2C1_FMP)\r
74 #define I2C_FASTMODEPLUS_I2C1           SYSCFG_PMC_I2C1_FMP                           /*!< Enable Fast Mode Plus on I2C1 pins */\r
75 #else\r
76 #define I2C_FASTMODEPLUS_I2C1           (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported  */\r
77 #endif\r
78 #if defined(SYSCFG_PMC_I2C2_FMP)\r
79 #define I2C_FASTMODEPLUS_I2C2           SYSCFG_PMC_I2C2_FMP                           /*!< Enable Fast Mode Plus on I2C2 pins */\r
80 #else\r
81 #define I2C_FASTMODEPLUS_I2C2           (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported  */\r
82 #endif\r
83 #if defined(SYSCFG_PMC_I2C3_FMP)\r
84 #define I2C_FASTMODEPLUS_I2C3           SYSCFG_PMC_I2C3_FMP                           /*!< Enable Fast Mode Plus on I2C3 pins */\r
85 #else\r
86 #define I2C_FASTMODEPLUS_I2C3           (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported  */\r
87 #endif\r
88 #if defined(SYSCFG_PMC_I2C4_FMP)\r
89 #define I2C_FASTMODEPLUS_I2C4           SYSCFG_PMC_I2C4_FMP                           /*!< Enable Fast Mode Plus on I2C4 pins */\r
90 #else\r
91 #define I2C_FASTMODEPLUS_I2C4           (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported  */\r
92 #endif\r
93 /**\r
94   * @}\r
95   */\r
96 \r
97 /**\r
98   * @}\r
99   */\r
100 \r
101 /* Exported macro ------------------------------------------------------------*/\r
102 /* Exported functions --------------------------------------------------------*/\r
103 \r
104 /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions\r
105   * @{\r
106   */\r
107 \r
108 /** @addtogroup I2CEx_Exported_Functions_Group1 Extended features functions\r
109   * @brief    Extended features functions\r
110   * @{\r
111   */\r
112 \r
113 /* Peripheral Control functions  ************************************************/\r
114 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);\r
115 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);\r
116 #if  (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP)\r
117 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);\r
118 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);\r
119 #endif\r
120 \r
121 /* Private constants ---------------------------------------------------------*/\r
122 /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants\r
123   * @{\r
124   */\r
125 \r
126 /**\r
127   * @}\r
128   */\r
129 \r
130 /* Private macros ------------------------------------------------------------*/\r
131 /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros\r
132   * @{\r
133   */\r
134 #define IS_I2C_ANALOG_FILTER(FILTER)    (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \\r
135                                           ((FILTER) == I2C_ANALOGFILTER_DISABLE))\r
136 \r
137 #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)\r
138 \r
139 #if (defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP) && defined(SYSCFG_PMC_I2C4_FMP))\r
140 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \\r
141                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \\r
142                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \\r
143                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB9)  == I2C_FASTMODEPLUS_PB9)  || \\r
144                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\r
145                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \\r
146                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \\r
147                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4))\r
148 #elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP)\r
149 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \\r
150                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \\r
151                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \\r
152                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB9)  == I2C_FASTMODEPLUS_PB9)  || \\r
153                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\r
154                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \\r
155                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3))\r
156 #elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP)\r
157 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \\r
158                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \\r
159                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \\r
160                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB9)  == I2C_FASTMODEPLUS_PB9)  || \\r
161                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\r
162                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2))\r
163 #elif defined(SYSCFG_PMC_I2C1_FMP)\r
164 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \\r
165                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \\r
166                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \\r
167                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB9)  == I2C_FASTMODEPLUS_PB9)  || \\r
168                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))\r
169 #endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */\r
170 /**\r
171   * @}\r
172   */\r
173 \r
174 /* Private Functions ---------------------------------------------------------*/\r
175 /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions\r
176   * @{\r
177   */\r
178 /* Private functions are defined in stm32f7xx_hal_i2c_ex.c file */\r
179 /**\r
180   * @}\r
181   */\r
182 \r
183 /**\r
184   * @}\r
185   */\r
186 \r
187 /**\r
188   * @}\r
189   */\r
190 \r
191 /**\r
192   * @}\r
193   */\r
194 \r
195 /**\r
196   * @}\r
197   */\r
198 \r
199 #ifdef __cplusplus\r
200 }\r
201 #endif\r
202 \r
203 #endif /* STM32F7xx_HAL_I2C_EX_H */\r
204 \r
205 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r