39 #ifdef HAL_OPAMP_MODULE_ENABLED 52 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || \ 53 defined (STM32L496xx) || defined (STM32L4A6xx) || \ 54 defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx) 91 HAL_StatusTypeDef status =
HAL_OK;
93 uint32_t trimmingvaluen1;
94 uint32_t trimmingvaluep1;
95 uint32_t trimmingvaluen2;
96 uint32_t trimmingvaluep2;
99 __IO uint32_t* tmp_opamp1_reg_trimming;
100 __IO uint32_t* tmp_opamp2_reg_trimming;
106 if((hopamp1 == NULL) || (hopamp2 == NULL))
125 assert_param(IS_OPAMP_POWERMODE(hopamp1->Init.PowerMode));
126 assert_param(IS_OPAMP_POWERMODE(hopamp2->Init.PowerMode));
131 opampmode1 = READ_BIT(hopamp1->Instance->CSR,OPAMP_CSR_OPAMODE);
132 opampmode2 = READ_BIT(hopamp2->Instance->CSR,OPAMP_CSR_OPAMODE);
135 MODIFY_REG(hopamp1->Instance->CSR, OPAMP_CSR_OPAMODE, OPAMP_STANDALONE_MODE);
136 MODIFY_REG(hopamp2->Instance->CSR, OPAMP_CSR_OPAMODE, OPAMP_STANDALONE_MODE);
139 SET_BIT(hopamp1->Instance->CSR, OPAMP_CSR_USERTRIM);
140 SET_BIT(hopamp2->Instance->CSR, OPAMP_CSR_USERTRIM);
143 if (hopamp1->Init.PowerMode == OPAMP_POWERMODE_NORMAL)
145 tmp_opamp1_reg_trimming = &OPAMP1->OTR;
149 tmp_opamp1_reg_trimming = &OPAMP1->LPOTR;
152 if (hopamp2->Init.PowerMode == OPAMP_POWERMODE_NORMAL)
154 tmp_opamp2_reg_trimming = &OPAMP2->OTR;
158 tmp_opamp2_reg_trimming = &OPAMP2->LPOTR;
162 SET_BIT (hopamp1->Instance->CSR, OPAMP_CSR_CALON);
163 SET_BIT (hopamp2->Instance->CSR, OPAMP_CSR_CALON);
166 CLEAR_BIT (hopamp1->Instance->CSR, OPAMP_CSR_CALSEL);
167 CLEAR_BIT (hopamp2->Instance->CSR, OPAMP_CSR_CALSEL);
170 SET_BIT (hopamp1->Instance->CSR, OPAMP_CSR_OPAMPxEN);
171 SET_BIT (hopamp2->Instance->CSR, OPAMP_CSR_OPAMPxEN);
175 trimmingvaluen1 = 16U;
176 trimmingvaluen2 = 16U;
183 MODIFY_REG(*tmp_opamp1_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen1);
184 MODIFY_REG(*tmp_opamp2_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen2);
191 if (READ_BIT(hopamp1->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
194 trimmingvaluen1 -= delta;
199 trimmingvaluen1 += delta;
202 if (READ_BIT(hopamp2->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
205 trimmingvaluen2 -= delta;
210 trimmingvaluen2 += delta;
219 MODIFY_REG(*tmp_opamp1_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen1);
220 MODIFY_REG(*tmp_opamp2_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen2);
227 if ((READ_BIT(hopamp1->Instance->CSR, OPAMP_CSR_CALOUT)) == 0U)
231 MODIFY_REG(*tmp_opamp1_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen1);
234 if ((READ_BIT(hopamp2->Instance->CSR, OPAMP_CSR_CALOUT)) == 0U)
238 MODIFY_REG(*tmp_opamp2_reg_trimming, OPAMP_OTR_TRIMOFFSETN, trimmingvaluen2);
242 SET_BIT (hopamp1->Instance->CSR, OPAMP_CSR_CALSEL);
243 SET_BIT (hopamp2->Instance->CSR, OPAMP_CSR_CALSEL);
247 trimmingvaluep1 = 16U;
248 trimmingvaluep2 = 16U;
255 MODIFY_REG(*tmp_opamp1_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep1<<OPAMP_INPUT_NONINVERTING));
256 MODIFY_REG(*tmp_opamp2_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep2<<OPAMP_INPUT_NONINVERTING));
263 if (READ_BIT(hopamp1->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
266 trimmingvaluep1 += delta;
271 trimmingvaluep1 -= delta;
274 if (READ_BIT(hopamp2->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
277 trimmingvaluep2 += delta;
282 trimmingvaluep2 -= delta;
291 MODIFY_REG(*tmp_opamp1_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep1<<OPAMP_INPUT_NONINVERTING));
292 MODIFY_REG(*tmp_opamp2_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep2<<OPAMP_INPUT_NONINVERTING));
299 if (READ_BIT(hopamp1->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
303 MODIFY_REG(*tmp_opamp1_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep1<<OPAMP_INPUT_NONINVERTING));
306 if (READ_BIT(hopamp2->Instance->CSR, OPAMP_CSR_CALOUT) != 0U)
310 MODIFY_REG(*tmp_opamp2_reg_trimming, OPAMP_OTR_TRIMOFFSETP, (trimmingvaluep2<<OPAMP_INPUT_NONINVERTING));
314 CLEAR_BIT (hopamp1->Instance->CSR, OPAMP_CSR_OPAMPxEN);
315 CLEAR_BIT (hopamp2->Instance->CSR, OPAMP_CSR_OPAMPxEN);
318 CLEAR_BIT (hopamp1->Instance->CSR, OPAMP_CSR_CALON);
319 CLEAR_BIT (hopamp2->Instance->CSR, OPAMP_CSR_CALON);
325 hopamp1->Init.UserTrimming = OPAMP_TRIMMING_USER;
326 hopamp2->Init.UserTrimming = OPAMP_TRIMMING_USER;
329 if (hopamp1->Init.PowerMode != OPAMP_POWERMODE_LOWPOWER)
332 hopamp1->Init.TrimmingValueN = trimmingvaluen1;
334 hopamp1->Init.TrimmingValueP = trimmingvaluep1;
339 hopamp1->Init.TrimmingValueNLowPower = trimmingvaluen1;
341 hopamp1->Init.TrimmingValuePLowPower = trimmingvaluep1;
344 if (hopamp2->Init.PowerMode != OPAMP_POWERMODE_LOWPOWER)
347 hopamp2->Init.TrimmingValueN = trimmingvaluen2;
349 hopamp2->Init.TrimmingValueP = trimmingvaluep2;
354 hopamp2->Init.TrimmingValueNLowPower = trimmingvaluen2;
356 hopamp2->Init.TrimmingValuePLowPower = trimmingvaluep2;
364 MODIFY_REG(hopamp1->Instance->CSR, OPAMP_CSR_OPAMODE, opampmode1);
365 MODIFY_REG(hopamp2->Instance->CSR, OPAMP_CSR_OPAMODE, opampmode2);
398 HAL_StatusTypeDef status =
HAL_OK;
This file contains all the functions prototypes for the HAL module driver.
void HAL_Delay(uint32_t Delay)
This function provides minimum delay (in milliseconds) based on variable incremented.
HAL_StatusTypeDef HAL_OPAMPEx_Unlock(OPAMP_HandleTypeDef *hopamp)
Unlock the selected OPAMP configuration.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
struct __OPAMP_HandleTypeDef else typedef struct endif OPAMP_HandleTypeDef
OPAMP Handle Structure definition.
HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2)
Run the self calibration of the 2 OPAMPs in parallel.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))