/ * @brief * Reset ADC to same state as after a HW reset. * * @note * The ROUTE register is NOT reset by this function, in order to allow for * centralized setup of this feature. * * @param[in] adc * Pointer to ADC peripheral register block. ******************************************************************************/
| 456 | * Pointer to ADC peripheral register block. |
| 457 | ******************************************************************************/ |
| 458 | void ADC_Reset(ADC_TypeDef *adc) |
| 459 | { |
| 460 | uint32_t cal; |
| 461 | |
| 462 | /* Stop conversions, before resetting other registers. */ |
| 463 | adc->CMD = ADC_CMD_SINGLESTOP | ADC_CMD_SCANSTOP; |
| 464 | adc->SINGLECTRL = _ADC_SINGLECTRL_RESETVALUE; |
| 465 | adc->SCANCTRL = _ADC_SCANCTRL_RESETVALUE; |
| 466 | adc->CTRL = _ADC_CTRL_RESETVALUE; |
| 467 | adc->IEN = _ADC_IEN_RESETVALUE; |
| 468 | adc->IFC = _ADC_IFC_MASK; |
| 469 | adc->BIASPROG = _ADC_BIASPROG_RESETVALUE; |
| 470 | |
| 471 | cal = adc->CAL & ~(_ADC_CAL_SINGLEOFFSET_MASK | _ADC_CAL_SINGLEGAIN_MASK); |
| 472 | cal |= ((DEVINFO->ADC0CAL0 & _DEVINFO_ADC0CAL0_1V25_GAIN_MASK) >> |
| 473 | _DEVINFO_ADC0CAL0_1V25_GAIN_SHIFT) << _ADC_CAL_SINGLEGAIN_SHIFT; |
| 474 | cal |= ((DEVINFO->ADC0CAL0 & _DEVINFO_ADC0CAL0_1V25_OFFSET_MASK) >> |
| 475 | _DEVINFO_ADC0CAL0_1V25_OFFSET_SHIFT) << _ADC_CAL_SINGLEOFFSET_SHIFT; |
| 476 | adc->CAL = cal; |
| 477 | |
| 478 | /* Do not reset route register, setting should be done independently */ |
| 479 | } |
| 480 | |
| 481 | |
| 482 | /***************************************************************************//** |
no outgoing calls
no test coverage detected