MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / ADC_PrescaleCalc

Function ADC_PrescaleCalc

bsp/efm32/Libraries/emlib/src/em_adc.c:417–444  ·  view source on GitHub ↗

/ * @brief * Calculate prescaler value used to determine ADC clock. * * @details * The ADC clock is given by: HFPERCLK / (prescale + 1). * * @param[in] adcFreq ADC frequency wanted. The frequency will automatically * be adjusted to be within valid range according to reference manual. * * @param[in] hfperFreq Frequency in Hz of reference HFPER clock. Set to 0 to * use currently de

Source from the content-addressed store, hash-verified

415 * <= @p adcFreq.
416 ******************************************************************************/
417uint8_t ADC_PrescaleCalc(uint32_t adcFreq, uint32_t hfperFreq)
418{
419 uint32_t ret;
420
421 /* Make sure selected ADC clock is within valid range */
422 if (adcFreq > ADC_MAX_CLOCK)
423 {
424 adcFreq = ADC_MAX_CLOCK;
425 }
426 else if (adcFreq < ADC_MIN_CLOCK)
427 {
428 adcFreq = ADC_MIN_CLOCK;
429 }
430
431 /* Use current HFPER frequency? */
432 if (!hfperFreq)
433 {
434 hfperFreq = CMU_ClockFreqGet(cmuClock_HFPER);
435 }
436
437 ret = (hfperFreq + adcFreq - 1) / adcFreq;
438 if (ret)
439 {
440 ret--;
441 }
442
443 return (uint8_t)ret;
444}
445
446
447/***************************************************************************//**

Callers 1

rt_hw_adc_unit_initFunction · 0.85

Calls 1

CMU_ClockFreqGetFunction · 0.85

Tested by

no test coverage detected