Rev 56 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
77 | mjames | 1 | /** |
2 | ****************************************************************************** |
||
3 | * @file stm32l1xx_hal_opamp.h |
||
4 | * @author MCD Application Team |
||
5 | * @brief Header file of OPAMP HAL module. |
||
6 | ****************************************************************************** |
||
7 | * @attention |
||
8 | * |
||
9 | * Copyright (c) 2017 STMicroelectronics. |
||
10 | * All rights reserved. |
||
11 | * |
||
12 | * This software is licensed under terms that can be found in the LICENSE file |
||
13 | * in the root directory of this software component. |
||
14 | * If no LICENSE file comes with this software, it is provided AS-IS. |
||
15 | * |
||
16 | ****************************************************************************** |
||
17 | */ |
||
18 | |||
19 | /* Define to prevent recursive inclusion -------------------------------------*/ |
||
20 | #ifndef STM32L1xx_HAL_OPAMP_H |
||
21 | #define STM32L1xx_HAL_OPAMP_H |
||
22 | |||
23 | #ifdef __cplusplus |
||
24 | extern "C" { |
||
25 | #endif |
||
26 | |||
27 | #if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) || defined (STM32L162xC) || defined (STM32L152xC) || defined (STM32L151xC) |
||
28 | |||
29 | /* Includes ------------------------------------------------------------------*/ |
||
30 | #include "stm32l1xx_hal_def.h" |
||
31 | |||
32 | /** @addtogroup STM32L1xx_HAL_Driver |
||
33 | * @{ |
||
34 | */ |
||
35 | |||
36 | /** @addtogroup OPAMP |
||
37 | * @{ |
||
38 | */ |
||
39 | |||
40 | /* Exported types ------------------------------------------------------------*/ |
||
41 | |||
42 | /** @defgroup OPAMP_Exported_Types OPAMP Exported Types |
||
43 | * @{ |
||
44 | */ |
||
45 | |||
46 | /** |
||
47 | * @brief OPAMP Init structure definition |
||
48 | */ |
||
49 | |||
50 | typedef struct |
||
51 | { |
||
52 | uint32_t PowerSupplyRange; /*!< Specifies the power supply range: above or under 2.4V. |
||
53 | This parameter must be a value of @ref OPAMP_PowerSupplyRange |
||
54 | Caution: This parameter is common to all OPAMP instances: a modification of this parameter for the selected OPAMP impacts the other OPAMP instances. */ |
||
55 | |||
56 | uint32_t PowerMode; /*!< Specifies the power mode Normal or Low-Power. |
||
57 | This parameter must be a value of @ref OPAMP_PowerMode */ |
||
58 | |||
59 | uint32_t Mode; /*!< Specifies the OPAMP mode |
||
60 | This parameter must be a value of @ref OPAMP_Mode |
||
61 | mode is either Standalone or Follower */ |
||
62 | |||
63 | uint32_t InvertingInput; /*!< Specifies the inverting input in Standalone mode |
||
64 | - In Standalone mode: i.e when mode is OPAMP_STANDALONE_MODE |
||
65 | This parameter must be a value of @ref OPAMP_InvertingInput |
||
66 | InvertingInput is either VM0 or VM1 |
||
67 | - In Follower mode: i.e when mode is OPAMP_FOLLOWER_MODE |
||
68 | This parameter is Not Applicable */ |
||
69 | |||
70 | uint32_t NonInvertingInput; /*!< Specifies the non inverting input of the opamp: |
||
71 | This parameter must be a value of @ref OPAMP_NonInvertingInput |
||
72 | Note: Non-inverting input availability depends on OPAMP instance: |
||
73 | OPAMP1: Non-inverting input is either IO0, DAC_Channel1 |
||
74 | OPAMP2: Non-inverting input is either IO0, DAC_Channel1, DAC_Channel2 |
||
75 | OPAMP3: Non-inverting input is either IO0, DAC_Channel2 (OPAMP3 availability depends on STM32L1 devices) */ |
||
76 | |||
77 | uint32_t UserTrimming; /*!< Specifies the trimming mode |
||
78 | This parameter must be a value of @ref OPAMP_UserTrimming |
||
79 | UserTrimming is either factory or user trimming. |
||
80 | Caution: This parameter is common to all OPAMP instances: a modification of this parameter for the selected OPAMP impacts the other OPAMP instances. */ |
||
81 | |||
82 | uint32_t TrimmingValueP; /*!< Specifies the offset trimming value (PMOS) |
||
83 | i.e. when UserTrimming is OPAMP_TRIMMING_USER. |
||
84 | This parameter must be a number between Min_Data = 0 and Max_Data = 30 (Trimming value 31 is forbidden) |
||
85 | 16 is typical default value */ |
||
86 | |||
87 | uint32_t TrimmingValueN; /*!< Specifies the offset trimming value (NMOS) |
||
88 | i.e. when UserTrimming is OPAMP_TRIMMING_USER. |
||
89 | This parameter must be a number between Min_Data = 0 and Max_Data = 30 (Trimming value 31 is forbidden) |
||
90 | 16 is typical default value */ |
||
91 | |||
92 | uint32_t TrimmingValuePLowPower; /*!< Specifies the offset trimming value (PMOS) |
||
93 | i.e. when UserTrimming is OPAMP_TRIMMING_USER. |
||
94 | This parameter must be a number between Min_Data = 0 and Max_Data = 30 (Trimming value 31 is forbidden) |
||
95 | 16 is typical default value */ |
||
96 | |||
97 | uint32_t TrimmingValueNLowPower; /*!< Specifies the offset trimming value (NMOS) |
||
98 | i.e. when UserTrimming is OPAMP_TRIMMING_USER. |
||
99 | This parameter must be a number between Min_Data = 0 and Max_Data = 30 (Trimming value 31 is forbidden) |
||
100 | 16 is typical default value */ |
||
101 | |||
102 | }OPAMP_InitTypeDef; |
||
103 | |||
104 | /** |
||
105 | * @brief HAL State structures definition |
||
106 | */ |
||
107 | |||
108 | typedef enum |
||
109 | { |
||
110 | HAL_OPAMP_STATE_RESET = 0x00000000, /*!< OPAMP is not yet Initialized */ |
||
111 | |||
112 | HAL_OPAMP_STATE_READY = 0x00000001, /*!< OPAMP is initialized and ready for use */ |
||
113 | HAL_OPAMP_STATE_CALIBBUSY = 0x00000002, /*!< OPAMP is enabled in auto calibration mode */ |
||
114 | |||
115 | HAL_OPAMP_STATE_BUSY = 0x00000004, /*!< OPAMP is enabled and running in normal mode */ |
||
116 | HAL_OPAMP_STATE_BUSYLOCKED = 0x00000005 /*!< OPAMP is locked |
||
117 | only system reset allows reconfiguring the opamp. */ |
||
118 | |||
119 | }HAL_OPAMP_StateTypeDef; |
||
120 | |||
121 | /** |
||
122 | * @brief OPAMP Handle Structure definition |
||
123 | */ |
||
124 | #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) |
||
125 | typedef struct __OPAMP_HandleTypeDef |
||
126 | #else |
||
127 | typedef struct |
||
128 | #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ |
||
129 | { |
||
130 | OPAMP_TypeDef *Instance; /*!< OPAMP instance's registers base address */ |
||
131 | OPAMP_InitTypeDef Init; /*!< OPAMP required parameters */ |
||
132 | HAL_StatusTypeDef Status; /*!< OPAMP peripheral status */ |
||
133 | HAL_LockTypeDef Lock; /*!< Locking object */ |
||
134 | __IO HAL_OPAMP_StateTypeDef State; /*!< OPAMP communication state */ |
||
135 | |||
136 | #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) |
||
137 | void (* MspInitCallback) (struct __OPAMP_HandleTypeDef *hopamp); |
||
138 | void (* MspDeInitCallback) (struct __OPAMP_HandleTypeDef *hopamp); |
||
139 | #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ |
||
140 | |||
141 | } OPAMP_HandleTypeDef; |
||
142 | |||
143 | /** |
||
144 | * @brief HAl_OPAMP_TrimmingValueTypeDef definition |
||
145 | */ |
||
146 | |||
147 | typedef uint32_t HAL_OPAMP_TrimmingValueTypeDef; |
||
148 | |||
149 | /** |
||
150 | * @} |
||
151 | */ |
||
152 | |||
153 | #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) |
||
154 | /** |
||
155 | * @brief HAL OPAMP Callback ID enumeration definition |
||
156 | */ |
||
157 | typedef enum |
||
158 | { |
||
159 | HAL_OPAMP_MSPINIT_CB_ID = 0x01U, /*!< OPAMP MspInit Callback ID */ |
||
160 | HAL_OPAMP_MSPDEINIT_CB_ID = 0x02U, /*!< OPAMP MspDeInit Callback ID */ |
||
161 | HAL_OPAMP_ALL_CB_ID = 0x03U /*!< OPAMP All ID */ |
||
162 | }HAL_OPAMP_CallbackIDTypeDef; |
||
163 | |||
164 | /** |
||
165 | * @brief HAL OPAMP Callback pointer definition |
||
166 | */ |
||
167 | typedef void (*pOPAMP_CallbackTypeDef)(OPAMP_HandleTypeDef *hopamp); |
||
168 | #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ |
||
169 | |||
170 | |||
171 | /* Exported constants --------------------------------------------------------*/ |
||
172 | |||
173 | /** @defgroup OPAMP_Exported_Constants OPAMP Exported Constants |
||
174 | * @{ |
||
175 | */ |
||
176 | |||
177 | /** |
||
178 | * OTR register Mask |
||
179 | */ |
||
180 | #define OPAMP_TRIM_VALUE_MASK OPAMP_OTR_AO1_OPT_OFFSET_TRIM_LOW |
||
181 | |||
182 | /** |
||
183 | * CSR register Mask |
||
184 | */ |
||
185 | #define OPAMP_CSR_INSTANCE_OFFSET ( 8U) /* Offset of each OPAMP instance into register CSR */ |
||
186 | #define OPAMP_OTR_INSTANCE_OFFSET (10U) /* Offset of each OPAMP instance into register OTR */ |
||
187 | |||
188 | |||
189 | /** @defgroup OPAMP_Mode OPAMP Mode |
||
190 | * @{ |
||
191 | */ |
||
192 | #define OPAMP_STANDALONE_MODE 0x00000000U /*!< OPAMP standalone mode */ |
||
193 | #define OPAMP_FOLLOWER_MODE 0x00000001U /*!< OPAMP follower mode */ |
||
194 | |||
195 | /** |
||
196 | * @} |
||
197 | */ |
||
198 | |||
199 | /** @defgroup OPAMP_NonInvertingInput OPAMP NonInvertingInput |
||
200 | * @{ |
||
201 | */ |
||
202 | #define OPAMP_NONINVERTINGINPUT_IO0 0x00000000U /*!< Comparator non-inverting input connected to dedicated IO pin low-leakage */ |
||
203 | #define OPAMP_NONINVERTINGINPUT_DAC_CH1 0x00000001U /*!< Comparator non-inverting input connected internally to DAC channel 1. Available only on OPAMP1 and OPAMP2. */ |
||
204 | #define OPAMP_NONINVERTINGINPUT_DAC_CH2 0x00000002U /*!< Comparator non-inverting input connected internally to DAC channel 2. Available only on OPAMP2 and OPAMP3 (OPAMP3 availability depends on STM32L1 devices). */ |
||
205 | |||
206 | /** |
||
207 | * @} |
||
208 | */ |
||
209 | |||
210 | /** @defgroup OPAMP_InvertingInput OPAMP InvertingInput |
||
211 | * @{ |
||
212 | */ |
||
213 | /* Note: Literal "OPAMP_SEC_INVERTINGINPUT_IO1" is a legacy naming of "OPAMP_INVERTINGINPUT_IO1". It is equivalent and must be replaced by "OPAMP_INVERTINGINPUT_IO1". */ |
||
214 | #define OPAMP_INVERTINGINPUT_IO0 0x00000000U /*!< Comparator inverting input connected to dedicated IO pin low-leakage */ |
||
215 | #define OPAMP_INVERTINGINPUT_IO1 0x00000001U /*!< Comparator inverting input connected to alternative IO pin available on some device packages */ |
||
216 | |||
217 | /** |
||
218 | * @} |
||
219 | */ |
||
220 | |||
221 | /** @defgroup OPAMP_PowerMode OPAMP PowerMode |
||
222 | * @{ |
||
223 | */ |
||
224 | #define OPAMP_POWERMODE_NORMAL 0x00000000U |
||
225 | #define OPAMP_POWERMODE_LOWPOWER 0x00000001U |
||
226 | |||
227 | /** |
||
228 | * @} |
||
229 | */ |
||
230 | |||
231 | /** @defgroup OPAMP_PowerSupplyRange OPAMP PowerSupplyRange |
||
232 | * @{ |
||
233 | */ |
||
234 | #define OPAMP_POWERSUPPLY_LOW 0x00000000U /*!< Power supply range low (VDDA lower than 2.4V) */ |
||
235 | #define OPAMP_POWERSUPPLY_HIGH OPAMP_CSR_AOP_RANGE /*!< Power supply range high (VDDA higher than 2.4V) */ |
||
236 | |||
237 | /** |
||
238 | * @} |
||
239 | */ |
||
240 | |||
241 | /** @defgroup OPAMP_UserTrimming OPAMP User Trimming |
||
242 | * @{ |
||
243 | */ |
||
244 | #define OPAMP_TRIMMING_FACTORY 0x00000000U /*!< Factory trimming */ |
||
245 | #define OPAMP_TRIMMING_USER OPAMP_OTR_OT_USER /*!< User trimming */ |
||
246 | |||
247 | /** |
||
248 | * @} |
||
249 | */ |
||
250 | |||
251 | /** @defgroup OPAMP_FactoryTrimming OPAMP FactoryTrimming |
||
252 | * @{ |
||
253 | */ |
||
254 | #define OPAMP_FACTORYTRIMMING_DUMMY 0xFFFFFFFFU /*!< Dummy value if trimming value could not be retrieved */ |
||
255 | |||
256 | #define OPAMP_FACTORYTRIMMING_P 0U /*!< Offset trimming P */ |
||
257 | #define OPAMP_FACTORYTRIMMING_N POSITION_VAL(OPAMP_OTR_AO1_OPT_OFFSET_TRIM_HIGH) /*!< Offset trimming N */ |
||
258 | |||
259 | /** |
||
260 | * @} |
||
261 | */ |
||
262 | |||
263 | /** |
||
264 | * @} |
||
265 | */ |
||
266 | |||
267 | /* Private constants ---------------------------------------------------------*/ |
||
268 | /** @defgroup OPAMP_Private_Constants OPAMP Private Constants |
||
269 | * @{ |
||
270 | */ |
||
271 | |||
272 | /* Offset trimming time: during calibration, minimum time needed between two */ |
||
273 | /* steps to have 1 mV accuracy. */ |
||
274 | /* Refer to datasheet, electrical characteristics: parameter tOFFTRIM Typ=1ms.*/ |
||
275 | /* Unit: ms. */ |
||
276 | #define OPAMP_TRIMMING_DELAY ((uint32_t) 1) |
||
277 | |||
278 | /** |
||
279 | * @} |
||
280 | */ |
||
281 | |||
282 | /* Exported macros -----------------------------------------------------------*/ |
||
283 | |||
284 | /** @defgroup OPAMP_Private_Macro OPAMP Private Macro |
||
285 | * @{ |
||
286 | */ |
||
287 | |||
288 | /** @brief Reset OPAMP handle state |
||
289 | * @param __HANDLE__ OPAMP handle. |
||
290 | * @retval None |
||
291 | */ |
||
292 | #define __HAL_OPAMP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_OPAMP_STATE_RESET) |
||
293 | |||
294 | /** |
||
295 | * @} |
||
296 | */ |
||
297 | |||
298 | /* Private macro -------------------------------------------------------------*/ |
||
299 | |||
300 | /** @defgroup OPAMP_Private_Macro OPAMP Private Macro |
||
301 | * @{ |
||
302 | */ |
||
303 | |||
304 | /** |
||
305 | * @brief Select the OPAMP bit OPAxPD (power-down) corresponding to the |
||
306 | * selected OPAMP instance. |
||
307 | * @param __HANDLE__: OPAMP handle |
||
308 | * @retval None |
||
309 | */ |
||
310 | #define OPAMP_CSR_OPAXPD(__HANDLE__) \ |
||
311 | (OPAMP_CSR_OPA1PD << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
312 | |||
313 | /** |
||
314 | * @brief Select the OPAMP bit S3SELx (switch 3) corresponding to the |
||
315 | * selected OPAMP instance. |
||
316 | * @param __HANDLE__: OPAMP handle |
||
317 | * @retval None |
||
318 | */ |
||
319 | #define OPAMP_CSR_S3SELX(__HANDLE__) \ |
||
320 | (OPAMP_CSR_S3SEL1 << ((OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET) & 0x1fU)) |
||
321 | |||
322 | /** |
||
323 | * @brief Select the OPAMP bit S4SELx (switch 4) corresponding to the |
||
324 | * selected OPAMP instance. |
||
325 | * @param __HANDLE__: OPAMP handle |
||
326 | * @retval None |
||
327 | */ |
||
328 | #define OPAMP_CSR_S4SELX(__HANDLE__) \ |
||
329 | (OPAMP_CSR_S4SEL1 << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
330 | |||
331 | /** |
||
332 | * @brief Select the OPAMP bit S5SELx (switch 5) corresponding to the |
||
333 | * selected OPAMP instance. |
||
334 | * @param __HANDLE__: OPAMP handle |
||
335 | * @retval None |
||
336 | */ |
||
337 | #define OPAMP_CSR_S5SELX(__HANDLE__) \ |
||
338 | (OPAMP_CSR_S5SEL1 << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
339 | |||
340 | /** |
||
341 | * @brief Select the OPAMP bit S3SELx (switch 6) corresponding to the |
||
342 | * selected OPAMP instance. |
||
343 | * @param __HANDLE__: OPAMP handle |
||
344 | * @retval None |
||
345 | */ |
||
346 | #define OPAMP_CSR_S6SELX(__HANDLE__) \ |
||
347 | (OPAMP_CSR_S6SEL1 << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
348 | |||
349 | /** |
||
350 | * @brief Select the OPAMP bit OPAxCAL_L (offset calibration for differential |
||
351 | * pair P) corresponding to the selected OPAMP instance. |
||
352 | * @param __HANDLE__: OPAMP handle |
||
353 | * @retval None |
||
354 | */ |
||
355 | #define OPAMP_CSR_OPAXCAL_L(__HANDLE__) \ |
||
356 | (OPAMP_CSR_OPA1CAL_L << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
357 | |||
358 | /** |
||
359 | * @brief Select the OPAMP bit OPAxCAL_H (offset calibration for differential |
||
360 | * pair N) corresponding to the selected OPAMP instance. |
||
361 | * @param __HANDLE__: OPAMP handle |
||
362 | * @retval None |
||
363 | */ |
||
364 | #define OPAMP_CSR_OPAXCAL_H(__HANDLE__) \ |
||
365 | (OPAMP_CSR_OPA1CAL_H << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
366 | |||
367 | /** |
||
368 | * @brief Select the OPAMP bit OPAxLPM (low power mode) corresponding to the |
||
369 | * selected OPAMP instance. |
||
370 | * @param __HANDLE__: OPAMP handle |
||
371 | * @retval None |
||
372 | */ |
||
373 | #define OPAMP_CSR_OPAXLPM(__HANDLE__) \ |
||
374 | (OPAMP_CSR_OPA1LPM << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) |
||
375 | |||
376 | /** |
||
377 | * @brief Select the OPAMP bits of all switches corresponding to the |
||
378 | * selected OPAMP instance. |
||
379 | * @param __HANDLE__: OPAMP handle |
||
380 | * @retval None |
||
381 | */ |
||
382 | #define OPAMP_CSR_ALL_SWITCHES(__HANDLE__) \ |
||
383 | ( ( ((__HANDLE__)->Instance != OPAMP2) \ |
||
384 | )? \ |
||
385 | ( \ |
||
386 | ((OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1) << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) \ |
||
387 | | \ |
||
388 | (OPAMP_CSR_ANAWSEL1 << (OPAMP_INSTANCE_DECIMAL(__HANDLE__))) \ |
||
389 | ) \ |
||
390 | : \ |
||
391 | ( \ |
||
392 | ((OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1) << (OPAMP_INSTANCE_DECIMAL(__HANDLE__) * OPAMP_CSR_INSTANCE_OFFSET)) \ |
||
393 | | \ |
||
394 | (OPAMP_CSR_ANAWSEL1 << (OPAMP_INSTANCE_DECIMAL(__HANDLE__))) \ |
||
395 | | \ |
||
396 | (OPAMP_CSR_S7SEL2) \ |
||
397 | ) \ |
||
398 | ) |
||
399 | |||
400 | /** |
||
401 | * @brief Select the OPAMP bit ANAWSELx (switch SanA) corresponding to the |
||
402 | * selected OPAMP instance. |
||
403 | * @param __HANDLE__: OPAMP handle |
||
404 | * @retval None |
||
405 | */ |
||
406 | #define OPAMP_CSR_ANAWSELX(__HANDLE__) \ |
||
407 | (OPAMP_CSR_ANAWSEL1 << (OPAMP_INSTANCE_DECIMAL(__HANDLE__))) |
||
408 | |||
409 | /** |
||
410 | * @brief Select the OPAMP bit OPAxCALOUT in function of the selected |
||
411 | * OPAMP instance. |
||
412 | * @param __HANDLE__: OPAMP handle |
||
413 | * @retval None |
||
414 | */ |
||
415 | #define OPAMP_CSR_OPAXCALOUT(__HANDLE__) \ |
||
416 | (OPAMP_CSR_OPA1CALOUT << (OPAMP_INSTANCE_DECIMAL(__HANDLE__))) |
||
417 | |||
418 | /** |
||
419 | * @brief Select the OPAMP trimming bits position value (position of LSB) |
||
420 | * in register OPAMP_OTR or register OPAMP_LPOTR in function of the selected |
||
421 | * OPAMP instance and the transistors differential pair high (PMOS) or |
||
422 | * low (NMOS). |
||
423 | * @param __HANDLE__: OPAMP handle |
||
424 | * @param __TRIM_HIGH_LOW__: transistors differential pair high or low. |
||
425 | * Must be a value of @ref OPAMP_FactoryTrimming. |
||
426 | * @retval None |
||
427 | */ |
||
428 | #define OPAMP_OFFSET_TRIM_BITSPOSITION(__HANDLE__, __TRIM_HIGH_LOW__) \ |
||
429 | ((OPAMP_INSTANCE_DECIMAL((__HANDLE__)) * OPAMP_OTR_INSTANCE_OFFSET) + (__TRIM_HIGH_LOW__)) |
||
430 | |||
431 | /** |
||
432 | * @brief Shift the OPAMP trimming bits to register OPAMP_OTR or register |
||
433 | * OPAMP_LPOTR in function of the selected OPAMP instance and the transistors |
||
434 | * differential pair high (PMOS) or low (NMOS). |
||
435 | * @param __HANDLE__: OPAMP handle |
||
436 | * @param __TRIM_HIGH_LOW__: transistors differential pair high or low. |
||
437 | * Must be a value of @ref OPAMP_FactoryTrimming. |
||
438 | * @param __TRIMMING_VALUE__: Trimming value |
||
439 | * @retval None |
||
440 | */ |
||
441 | #define OPAMP_OFFSET_TRIM_SET(__HANDLE__, __TRIM_HIGH_LOW__, __TRIMMING_VALUE__) \ |
||
442 | ((__TRIMMING_VALUE__) << (OPAMP_OFFSET_TRIM_BITSPOSITION((__HANDLE__), (__TRIM_HIGH_LOW__)))) |
||
443 | |||
444 | /** |
||
445 | * @brief Check that trimming value is within correct range |
||
446 | * @param TRIMMINGVALUE: OPAMP trimming value |
||
447 | * @retval None |
||
448 | */ |
||
449 | #define IS_OPAMP_TRIMMINGVALUE(TRIMMINGVALUE) ((TRIMMINGVALUE) <= 30U) |
||
450 | |||
451 | #define IS_OPAMP_FUNCTIONAL_NORMALMODE(INPUT) (((INPUT) == OPAMP_STANDALONE_MODE) || \ |
||
452 | ((INPUT) == OPAMP_FOLLOWER_MODE)) |
||
453 | |||
454 | #define IS_OPAMP_INVERTING_INPUT(INPUT) (((INPUT) == OPAMP_INVERTINGINPUT_IO0) || \ |
||
455 | ((INPUT) == OPAMP_INVERTINGINPUT_IO1) ) |
||
456 | |||
457 | #define IS_OPAMP_POWERMODE(TRIMMING) (((TRIMMING) == OPAMP_POWERMODE_NORMAL) || \ |
||
458 | ((TRIMMING) == OPAMP_POWERMODE_LOWPOWER) ) |
||
459 | |||
460 | #define IS_OPAMP_POWER_SUPPLY_RANGE(RANGE) (((RANGE) == OPAMP_POWERSUPPLY_LOW) || \ |
||
461 | ((RANGE) == OPAMP_POWERSUPPLY_HIGH) ) |
||
462 | |||
463 | #define IS_OPAMP_TRIMMING(TRIMMING) (((TRIMMING) == OPAMP_TRIMMING_FACTORY) || \ |
||
464 | ((TRIMMING) == OPAMP_TRIMMING_USER)) |
||
465 | |||
466 | #define IS_OPAMP_FACTORYTRIMMING(TRIMMING) (((TRIMMING) == OPAMP_FACTORYTRIMMING_N) || \ |
||
467 | ((TRIMMING) == OPAMP_FACTORYTRIMMING_P) ) |
||
468 | |||
469 | /** |
||
470 | * @} |
||
471 | */ |
||
472 | |||
473 | |||
474 | /* Include OPAMP HAL Extension module */ |
||
475 | #include "stm32l1xx_hal_opamp_ex.h" |
||
476 | |||
477 | /* Exported functions --------------------------------------------------------*/ |
||
478 | /** @addtogroup OPAMP_Exported_Functions |
||
479 | * @{ |
||
480 | */ |
||
481 | |||
482 | /** @addtogroup OPAMP_Exported_Functions_Group1 |
||
483 | * @{ |
||
484 | */ |
||
485 | /* Initialization/de-initialization functions **********************************/ |
||
486 | HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp); |
||
487 | HAL_StatusTypeDef HAL_OPAMP_DeInit (OPAMP_HandleTypeDef *hopamp); |
||
488 | void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef *hopamp); |
||
489 | void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp); |
||
490 | /** |
||
491 | * @} |
||
492 | */ |
||
493 | |||
494 | /** @addtogroup OPAMP_Exported_Functions_Group2 |
||
495 | * @{ |
||
496 | */ |
||
497 | |||
498 | /* I/O operation functions *****************************************************/ |
||
499 | HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp); |
||
500 | HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp); |
||
501 | HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate(OPAMP_HandleTypeDef *hopamp); |
||
502 | |||
503 | /** |
||
504 | * @} |
||
505 | */ |
||
506 | |||
507 | /** @addtogroup OPAMP_Exported_Functions_Group3 |
||
508 | * @{ |
||
509 | */ |
||
510 | |||
511 | /* Peripheral Control functions ************************************************/ |
||
512 | #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) |
||
513 | /* OPAMP callback registering/unregistering */ |
||
514 | HAL_StatusTypeDef HAL_OPAMP_RegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID, pOPAMP_CallbackTypeDef pCallback); |
||
515 | HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID); |
||
516 | #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ |
||
517 | |||
518 | HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp); |
||
519 | HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset); |
||
520 | |||
521 | /** |
||
522 | * @} |
||
523 | */ |
||
524 | |||
525 | /** @addtogroup OPAMP_Exported_Functions_Group4 |
||
526 | * @{ |
||
527 | */ |
||
528 | |||
529 | /* Peripheral State functions **************************************************/ |
||
530 | HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(OPAMP_HandleTypeDef *hopamp); |
||
531 | |||
532 | /** |
||
533 | * @} |
||
534 | */ |
||
535 | |||
536 | /** |
||
537 | * @} |
||
538 | */ |
||
539 | |||
540 | /** |
||
541 | * @} |
||
542 | */ |
||
543 | |||
544 | /** |
||
545 | * @} |
||
546 | */ |
||
547 | |||
548 | #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX || STM32L162xC || STM32L152xC || STM32L151xC */ |
||
549 | #ifdef __cplusplus |
||
550 | } |
||
551 | #endif |
||
552 | |||
553 | #endif /* STM32L1xx_HAL_OPAMP_H */ |
||
554 |