STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_opamp.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_OPAMP_H
22 #define STM32L4xx_HAL_OPAMP_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
40 
49 typedef struct
50 {
51  uint32_t PowerSupplyRange;
55  uint32_t PowerMode;
58  uint32_t Mode;
62  uint32_t InvertingInput;
69  uint32_t NonInvertingInput;
72  uint32_t PgaGain;
76  uint32_t UserTrimming;
80  uint32_t TrimmingValueP;
85  uint32_t TrimmingValueN;
90  uint32_t TrimmingValuePLowPower;
95  uint32_t TrimmingValueNLowPower;
100 }OPAMP_InitTypeDef;
101 
106 typedef enum
107 {
108  HAL_OPAMP_STATE_RESET = 0x00000000,
110  HAL_OPAMP_STATE_READY = 0x00000001,
113  HAL_OPAMP_STATE_BUSY = 0x00000004,
118 
123 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
124 typedef struct __OPAMP_HandleTypeDef
125 #else
126 typedef struct
127 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
128 {
129  OPAMP_TypeDef *Instance;
130  OPAMP_InitTypeDef Init;
131  HAL_StatusTypeDef Status;
132  HAL_LockTypeDef Lock;
135 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
136 void (* MspInitCallback) (struct __OPAMP_HandleTypeDef *hopamp);
137 void (* MspDeInitCallback) (struct __OPAMP_HandleTypeDef *hopamp);
138 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
139 
141 
147 
152 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
153 
156 typedef enum
157 {
162 
167 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
168 
169 
170 /* Exported constants --------------------------------------------------------*/
171 
179 #define OPAMP_STANDALONE_MODE 0x00000000U
180 #define OPAMP_PGA_MODE OPAMP_CSR_OPAMODE_1
181 #define OPAMP_FOLLOWER_MODE OPAMP_CSR_OPAMODE
191 #define OPAMP_NONINVERTINGINPUT_IO0 0x00000000U
192 #define OPAMP_NONINVERTINGINPUT_DAC_CH OPAMP_CSR_VPSEL
202 #define OPAMP_INVERTINGINPUT_IO0 0x00000000U
203 #define OPAMP_INVERTINGINPUT_IO1 OPAMP_CSR_VMSEL_0
204 #define OPAMP_INVERTINGINPUT_CONNECT_NO OPAMP_CSR_VMSEL_1
214 #define OPAMP_PGA_GAIN_2 0x00000000U
215 #define OPAMP_PGA_GAIN_4 OPAMP_CSR_PGGAIN_0
216 #define OPAMP_PGA_GAIN_8 OPAMP_CSR_PGGAIN_1
217 #define OPAMP_PGA_GAIN_16 (OPAMP_CSR_PGGAIN_0 | OPAMP_CSR_PGGAIN_1)
226 #define OPAMP_POWERMODE_NORMAL 0x00000000U
227 #define OPAMP_POWERMODE_LOWPOWER OPAMP_CSR_OPALPM
228 
236 #define OPAMP_POWERSUPPLY_LOW 0x00000000U
237 #define OPAMP_POWERSUPPLY_HIGH OPAMP1_CSR_OPARANGE
246 #define OPAMP_TRIMMING_FACTORY 0x00000000U
247 #define OPAMP_TRIMMING_USER OPAMP_CSR_USERTRIM
256 #define OPAMP_FACTORYTRIMMING_DUMMY 0xFFFFFFFFU
257 #define OPAMP_FACTORYTRIMMING_N 0U
258 #define OPAMP_FACTORYTRIMMING_P 1U
268 /* Private constants ---------------------------------------------------------*/
269 
274 /* NONINVERTING bit position in OTR & LPOTR */
275 #define OPAMP_INPUT_NONINVERTING ((uint32_t) 8)
277 /* Offset trimming time: during calibration, minimum time needed between two */
278 /* steps to have 1 mV accuracy. */
279 /* Refer to datasheet, electrical characteristics: parameter tOFFTRIM Typ=1ms.*/
280 /* Unit: ms. */
281 #define OPAMP_TRIMMING_DELAY ((uint32_t) 1)
282 
287 /* Exported macros -----------------------------------------------------------*/
296 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
297 #define __HAL_OPAMP_RESET_HANDLE_STATE(__HANDLE__) do { \
298  (__HANDLE__)->State = HAL_OPAMP_STATE_RESET; \
299  (__HANDLE__)->MspInitCallback = NULL; \
300  (__HANDLE__)->MspDeInitCallback = NULL; \
301  } while(0)
302 #else
303 #define __HAL_OPAMP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_OPAMP_STATE_RESET)
304 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
305 
306 
307 
312 /* Private macro -------------------------------------------------------------*/
313 
318 #define IS_OPAMP_FUNCTIONAL_NORMALMODE(INPUT) (((INPUT) == OPAMP_STANDALONE_MODE) || \
319  ((INPUT) == OPAMP_PGA_MODE) || \
320  ((INPUT) == OPAMP_FOLLOWER_MODE))
321 
322 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || \
323  defined (STM32L496xx) || defined (STM32L4A6xx) || \
324  defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined(STM32L4S9xx)
325 #define IS_OPAMP_INVERTING_INPUT_STANDALONE(INPUT) (((INPUT) == OPAMP_INVERTINGINPUT_IO0) || \
326  ((INPUT) == OPAMP_INVERTINGINPUT_IO1))
327 #endif /* STM32L471xx STM32L475xx STM32L476xx STM32L485xx STM32L486xx */
328  /* STM32L496xx STM32L4A6xx */
329  /* STM32L4R5xx STM32L4R7xx STM32L4R9xx STM32L4S5xx STM32L4S7xx STM32L4S9xx */
330 
331 #if defined (STM32L412xx) || defined (STM32L422xx) || \
332  defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || \
333  defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
334 #define IS_OPAMP_INVERTING_INPUT_STANDALONE(INPUT) ((INPUT) == OPAMP_INVERTINGINPUT_IO0)
335 #endif /* STM32L412xx STM32L422xx */
336  /* STM32L431xx STM32L432xx STM32L433xx STM32L442xx STM32L443xx */
337  /* STM32L451xx STM32L452xx STM32L462xx */
338 
339 #if defined (STM32L412xx) || defined (STM32L422xx)
340 #define IS_OPAMP_NONINVERTING_INPUT(INPUT) ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0)
341 #endif /* STM32L412xx STM32L422xx */
342 
343 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || \
344  defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || \
345  defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || \
346  defined (STM32L496xx) || defined (STM32L4A6xx) || \
347  defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined(STM32L4S9xx)
348 #define IS_OPAMP_NONINVERTING_INPUT(INPUT) (((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \
349  ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH))
350 #endif /* STM32L431xx STM32L432xx STM32L433xx STM32L442xx STM32L443xx */
351  /* STM32L451xx STM32L452xx STM32L462xx */
352  /* STM32L471xx STM32L475xx STM32L476xx STM32L485xx STM32L486xx */
353  /* STM32L496xx STM32L4A6xx */
354  /* STM32L4R5xx STM32L4R7xx STM32L4R9xx STM32L4S5xx STM32L4S7xx STM32L4S9xx */
355 
356 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || \
357  defined (STM32L496xx) || defined (STM32L4A6xx) || \
358  defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined(STM32L4S9xx)
359 #define IS_OPAMP_INVERTING_INPUT_PGA(INPUT) (((INPUT) == OPAMP_INVERTINGINPUT_IO0) || \
360  ((INPUT) == OPAMP_INVERTINGINPUT_IO1) || \
361  ((INPUT) == OPAMP_INVERTINGINPUT_CONNECT_NO))
362 #endif /* STM32L471xx STM32L475xx STM32L476xx STM32L485xx STM32L486xx */
363  /* STM32L496xx STM32L4A6xx */
364  /* STM32L4R5xx STM32L4R7xx STM32L4R9xx STM32L4S5xx STM32L4S7xx STM32L4S9xx */
365 
366 #if defined (STM32L412xx) || defined (STM32L422xx) || \
367  defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || \
368  defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
369 #define IS_OPAMP_INVERTING_INPUT_PGA(INPUT) (((INPUT) == OPAMP_INVERTINGINPUT_IO0) || \
370  ((INPUT) == OPAMP_INVERTINGINPUT_CONNECT_NO))
371 #endif /* STM32L412xx STM32L422xx */
372  /* STM32L431xx STM32L432xx STM32L433xx STM32L442xx STM32L443xx */
373  /* STM32L451xx STM32L452xx STM32L462xx */
374 
375 #define IS_OPAMP_PGA_GAIN(GAIN) (((GAIN) == OPAMP_PGA_GAIN_2) || \
376  ((GAIN) == OPAMP_PGA_GAIN_4) || \
377  ((GAIN) == OPAMP_PGA_GAIN_8) || \
378  ((GAIN) == OPAMP_PGA_GAIN_16))
379 
380 #define IS_OPAMP_POWERMODE(TRIMMING) (((TRIMMING) == OPAMP_POWERMODE_NORMAL) || \
381  ((TRIMMING) == OPAMP_POWERMODE_LOWPOWER) )
382 
383 #define IS_OPAMP_POWER_SUPPLY_RANGE(RANGE) (((RANGE) == OPAMP_POWERSUPPLY_LOW) || \
384  ((RANGE) == OPAMP_POWERSUPPLY_HIGH) )
385 
386 #define IS_OPAMP_TRIMMING(TRIMMING) (((TRIMMING) == OPAMP_TRIMMING_FACTORY) || \
387  ((TRIMMING) == OPAMP_TRIMMING_USER))
388 
389 
390 #define IS_OPAMP_TRIMMINGVALUE(TRIMMINGVALUE) ((TRIMMINGVALUE) <= 31U)
391 
392 #define IS_OPAMP_FACTORYTRIMMING(TRIMMING) (((TRIMMING) == OPAMP_FACTORYTRIMMING_N) || \
393  ((TRIMMING) == OPAMP_FACTORYTRIMMING_P))
394 
399 /* Include OPAMP HAL Extended module */
400 #include "stm32l4xx_hal_opamp_ex.h"
401 
402 /* Exported functions --------------------------------------------------------*/
410 /* Initialization/de-initialization functions **********************************/
411 HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp);
412 HAL_StatusTypeDef HAL_OPAMP_DeInit (OPAMP_HandleTypeDef *hopamp);
423 /* I/O operation functions *****************************************************/
424 HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp);
425 HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp);
426 HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate(OPAMP_HandleTypeDef *hopamp);
427 
436 /* Peripheral Control functions ************************************************/
437 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
438 /* OPAMP callback registering/unregistering */
439 HAL_StatusTypeDef HAL_OPAMP_RegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID, pOPAMP_CallbackTypeDef pCallback);
440 HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID);
441 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
442 
443 HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp);
444 HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset);
445 
454 /* Peripheral State functions **************************************************/
456 
473 #ifdef __cplusplus
474 }
475 #endif
476 
477 #endif /* STM32L4xx_HAL_OPAMP_H */
478 
479 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void(* pOPAMP_CallbackTypeDef)(OPAMP_HandleTypeDef *hopamp)
HAL OPAMP Callback pointer definition.
HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback(OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID)
Unregister a User OPAMP Callback OPAMP Callback is redirected to the weak (surcharged) predefined cal...
OPAMP_InitTypeDef Init
HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp)
Stop the OPAMP.
This file contains HAL common defines, enumeration, macros and structures definitions.
struct __OPAMP_HandleTypeDef else typedef struct endif OPAMP_HandleTypeDef
OPAMP Handle Structure definition.
OPAMP_TypeDef * Instance
HAL_LockTypeDef
HAL Lock structures definition.
void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp)
DeInitialize OPAMP MSP.
__IO HAL_OPAMP_StateTypeDef State
void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef *hopamp)
Initialize the OPAMP MSP.
HAL_StatusTypeDef HAL_OPAMP_DeInit(OPAMP_HandleTypeDef *hopamp)
DeInitialize the OPAMP peripheral.
HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset(OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset)
Return the OPAMP factory trimming value.
ADC handle Structure definition.
HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp)
Initializes the OPAMP according to the specified parameters in the OPAMP_InitTypeDef and initialize t...
HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(OPAMP_HandleTypeDef *hopamp)
Return the OPAMP handle state.
HAL_OPAMP_CallbackIDTypeDef
HAL OPAMP Callback ID enumeration definition.
uint32_t HAL_OPAMP_TrimmingValueTypeDef
HAl_OPAMP_TrimmingValueTypeDef definition.
Header file of OPAMP HAL Extended module.
HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp)
Start the OPAMP.
HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp)
Lock the selected OPAMP configuration.
HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate(OPAMP_HandleTypeDef *hopamp)
Run the self calibration of one OPAMP.
HAL_OPAMP_StateTypeDef
HAL State structures definition.
HAL_StatusTypeDef HAL_OPAMP_RegisterCallback(OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID, pOPAMP_CallbackTypeDef pCallback)
Register a User OPAMP Callback To be used instead of the weak (surcharged) predefined callback...