221 #ifdef HAL_OPAMP_MODULE_ENABLED 231 #define OPAMP_CSR_RESET_VALUE ((uint32_t)0x00000000) 233 #define OPAMP_CSR_RESET_BITS (OPAMP_CSR_OPAMPxEN | OPAMP_CSR_OPALPM | OPAMP_CSR_OPAMODE \ 234 | OPAMP_CSR_PGGAIN | OPAMP_CSR_VMSEL | OPAMP_CSR_VPSEL \ 235 | OPAMP_CSR_CALON | OPAMP_CSR_USERTRIM) 238 #define OPAMP_CSR_INIT_MASK_PGA (OPAMP_CSR_OPALPM | OPAMP_CSR_OPAMODE| OPAMP_CSR_PGGAIN \ 239 | OPAMP_CSR_VMSEL | OPAMP_CSR_VPSEL | OPAMP_CSR_USERTRIM) 241 #define OPAMP_CSR_INIT_MASK_FOLLOWER (OPAMP_CSR_OPALPM | OPAMP_CSR_OPAMODE| OPAMP_CSR_VPSEL \ 242 | OPAMP_CSR_USERTRIM) 244 #define OPAMP_CSR_INIT_MASK_STANDALONE (OPAMP_CSR_OPALPM | OPAMP_CSR_OPAMODE| OPAMP_CSR_VPSEL \ 245 | OPAMP_CSR_VMSEL | OPAMP_CSR_USERTRIM) 282 HAL_StatusTypeDef status =
HAL_OK;
283 uint32_t updateotrlpotr;
305 assert_param(IS_OPAMP_POWER_SUPPLY_RANGE(hopamp->Init.PowerSupplyRange));
306 assert_param(IS_OPAMP_POWERMODE(hopamp->Init.PowerMode));
307 assert_param(IS_OPAMP_FUNCTIONAL_NORMALMODE(hopamp->Init.Mode));
308 assert_param(IS_OPAMP_NONINVERTING_INPUT(hopamp->Init.NonInvertingInput));
312 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 313 if(hopamp->MspInitCallback == NULL)
320 if ((hopamp->Init.Mode) == OPAMP_STANDALONE_MODE)
322 assert_param(IS_OPAMP_INVERTING_INPUT_STANDALONE(hopamp->Init.InvertingInput));
325 if ((hopamp->Init.Mode) == OPAMP_PGA_MODE)
327 assert_param(IS_OPAMP_INVERTING_INPUT_PGA(hopamp->Init.InvertingInput));
330 if ((hopamp->Init.Mode) == OPAMP_PGA_MODE)
335 assert_param(IS_OPAMP_TRIMMING(hopamp->Init.UserTrimming));
336 if ((hopamp->Init.UserTrimming) == OPAMP_TRIMMING_USER)
338 if (hopamp->Init.PowerMode == OPAMP_POWERMODE_NORMAL)
340 assert_param(IS_OPAMP_TRIMMINGVALUE(hopamp->Init.TrimmingValueP));
341 assert_param(IS_OPAMP_TRIMMINGVALUE(hopamp->Init.TrimmingValueN));
345 assert_param(IS_OPAMP_TRIMMINGVALUE(hopamp->Init.TrimmingValuePLowPower));
346 assert_param(IS_OPAMP_TRIMMINGVALUE(hopamp->Init.TrimmingValueNLowPower));
356 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 357 hopamp->MspInitCallback(hopamp);
364 CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALON);
366 if (hopamp->Init.Mode == OPAMP_PGA_MODE)
368 MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_INIT_MASK_PGA, \
369 hopamp->Init.PowerMode | \
370 hopamp->Init.Mode | \
371 hopamp->Init.PgaGain | \
372 hopamp->Init.InvertingInput | \
373 hopamp->Init.NonInvertingInput | \
374 hopamp->Init.UserTrimming);
377 if (hopamp->Init.Mode == OPAMP_FOLLOWER_MODE)
380 MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_INIT_MASK_FOLLOWER, \
381 hopamp->Init.PowerMode | \
382 hopamp->Init.Mode | \
383 hopamp->Init.NonInvertingInput | \
384 hopamp->Init.UserTrimming);
387 if (hopamp->Init.Mode == OPAMP_STANDALONE_MODE)
389 MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_INIT_MASK_STANDALONE, \
390 hopamp->Init.PowerMode | \
391 hopamp->Init.Mode | \
392 hopamp->Init.InvertingInput | \
393 hopamp->Init.NonInvertingInput | \
394 hopamp->Init.UserTrimming);
397 if (hopamp->Init.UserTrimming == OPAMP_TRIMMING_USER)
400 if (hopamp->Init.PowerMode != OPAMP_POWERMODE_LOWPOWER)
406 updateotrlpotr = (((hopamp->Init.TrimmingValueP) << (OPAMP_INPUT_NONINVERTING)) \
407 | (hopamp->Init.TrimmingValueN));
408 MODIFY_REG(hopamp->Instance->OTR, OPAMP_OTR_TRIMOFFSETN | OPAMP_OTR_TRIMOFFSETP, updateotrlpotr);
415 updateotrlpotr = (((hopamp->Init.TrimmingValuePLowPower) << (OPAMP_INPUT_NONINVERTING)) \
416 | (hopamp->Init.TrimmingValueNLowPower));
417 MODIFY_REG(hopamp->Instance->LPOTR, OPAMP_OTR_TRIMOFFSETN | OPAMP_OTR_TRIMOFFSETP, updateotrlpotr);
424 MODIFY_REG(OPAMP1->CSR, OPAMP1_CSR_OPARANGE, hopamp->Init.PowerSupplyRange);
446 HAL_StatusTypeDef status =
HAL_OK;
466 CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN);
467 MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_RESET_BITS, OPAMP_CSR_RESET_VALUE);
469 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 470 if(hopamp->MspDeInitCallback == NULL)
475 hopamp->MspDeInitCallback(hopamp);
547 HAL_StatusTypeDef status =
HAL_OK;
567 SET_BIT (hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN);
589 HAL_StatusTypeDef status =
HAL_OK;
614 CLEAR_BIT (hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN);
644 HAL_StatusTypeDef status =
HAL_OK;
646 uint32_t trimmingvaluen;
647 uint32_t trimmingvaluep;
651 __IO uint32_t* tmp_opamp_reg_trimming;
670 assert_param(IS_OPAMP_POWERMODE(hopamp->Init.PowerMode));
675 opampmode = READ_BIT(hopamp->Instance->CSR,OPAMP_CSR_OPAMODE);
678 MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_OPAMODE, OPAMP_STANDALONE_MODE);
681 SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_USERTRIM);
684 if (hopamp->Init.PowerMode == OPAMP_POWERMODE_NORMAL)
686 tmp_opamp_reg_trimming = &hopamp->Instance->OTR;
690 tmp_opamp_reg_trimming = &hopamp->Instance->LPOTR;
694 SET_BIT (hopamp->Instance->CSR, OPAMP_CSR_CALON);
697 CLEAR_BIT (hopamp->Instance->CSR, OPAMP_CSR_CALSEL);
700 SET_BIT (hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN);
704 trimmingvaluen = 16U;
711 MODIFY_REG(*tmp_opamp_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen);
718 if (READ_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
721 trimmingvaluen -= delta;
726 trimmingvaluen += delta;
735 MODIFY_REG(*tmp_opamp_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen);
742 if ((READ_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALOUT)) == 0U)
747 MODIFY_REG(*tmp_opamp_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen);
751 SET_BIT (hopamp->Instance->CSR, OPAMP_CSR_CALSEL);
755 trimmingvaluep = 16U;
762 MODIFY_REG(*tmp_opamp_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep<<OPAMP_INPUT_NONINVERTING));
769 if (READ_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
772 trimmingvaluep += delta;
777 trimmingvaluep -= delta;
787 MODIFY_REG(*tmp_opamp_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep<<OPAMP_INPUT_NONINVERTING));
794 if (READ_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
798 MODIFY_REG(*tmp_opamp_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep<<OPAMP_INPUT_NONINVERTING));
802 CLEAR_BIT (hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN);
805 CLEAR_BIT (hopamp->Instance->CSR, OPAMP_CSR_CALON);
811 hopamp->Init.UserTrimming = OPAMP_TRIMMING_USER;
814 if (hopamp->Init.PowerMode != OPAMP_POWERMODE_LOWPOWER)
817 hopamp->Init.TrimmingValueN = trimmingvaluen;
819 hopamp->Init.TrimmingValueP = trimmingvaluep;
824 hopamp->Init.TrimmingValueNLowPower = trimmingvaluen;
826 hopamp->Init.TrimmingValuePLowPower = trimmingvaluep;
830 MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_OPAMODE, opampmode);
872 HAL_StatusTypeDef status =
HAL_OK;
922 __IO uint32_t* tmp_opamp_reg_trimming;
928 return OPAMP_FACTORYTRIMMING_DUMMY;
938 assert_param(IS_OPAMP_POWERMODE(hopamp->Init.PowerMode));
941 if (READ_BIT(hopamp->Instance->CSR,OPAMP_CSR_USERTRIM) != 0U)
948 trimmingvalue = OPAMP_FACTORYTRIMMING_DUMMY;
953 if (hopamp->Init.PowerMode == OPAMP_POWERMODE_NORMAL)
955 tmp_opamp_reg_trimming = &OPAMP->OTR;
959 tmp_opamp_reg_trimming = &OPAMP->LPOTR;
963 if (trimmingoffset == OPAMP_FACTORYTRIMMING_P)
966 trimmingvalue = ((*tmp_opamp_reg_trimming) & OPAMP_OTR_TRIMOFFSETP) >> OPAMP_INPUT_NONINVERTING;
971 trimmingvalue = (*tmp_opamp_reg_trimming) & OPAMP_OTR_TRIMOFFSETN;
977 return OPAMP_FACTORYTRIMMING_DUMMY;
979 return trimmingvalue;
1018 return hopamp->State;
1025 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 1039 HAL_StatusTypeDef status =
HAL_OK;
1041 if(pCallback == NULL)
1054 hopamp->MspInitCallback = pCallback;
1057 hopamp->MspDeInitCallback = pCallback;
1070 hopamp->MspInitCallback = pCallback;
1073 hopamp->MspDeInitCallback = pCallback;
1106 HAL_StatusTypeDef status =
HAL_OK;
void(* pOPAMP_CallbackTypeDef)(OPAMP_HandleTypeDef *hopamp)
HAL OPAMP Callback pointer definition.
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp)
Stop the OPAMP.
void HAL_Delay(uint32_t Delay)
This function provides minimum delay (in milliseconds) based on variable incremented.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
struct __OPAMP_HandleTypeDef else typedef struct endif OPAMP_HandleTypeDef
OPAMP Handle Structure definition.
void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp)
DeInitialize OPAMP MSP.
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.
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...
HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp)
Initializes the OPAMP according to the specified parameters in the OPAMP_InitTypeDef and initialize t...
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
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.
HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp)
Start the OPAMP.
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...
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.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))