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

Function DAC_PrescaleCalc

bsp/efm32/Libraries/emlib/src/em_dac.c:240–266  ·  view source on GitHub ↗

/ * @brief * Calculate prescaler value used to determine DAC clock. * * @details * The DAC clock is given by: HFPERCLK / (prescale ^ 2). * * @param[in] dacFreq DAC frequency wanted. The frequency will automatically * be adjusted to be below max allowed DAC clock. * * @param[in] hfperFreq Frequency in Hz of reference HFPER clock. Set to 0 to * use currently defined HFPER clock set

Source from the content-addressed store, hash-verified

238 * <= @p dacFreq.
239 ******************************************************************************/
240uint8_t DAC_PrescaleCalc(uint32_t dacFreq, uint32_t hfperFreq)
241{
242 uint32_t ret;
243
244 /* Make sure selected DAC clock is below max value */
245 if (dacFreq > DAC_MAX_CLOCK)
246 {
247 dacFreq = DAC_MAX_CLOCK;
248 }
249
250 /* Use current HFPER frequency? */
251 if (!hfperFreq)
252 {
253 hfperFreq = CMU_ClockFreqGet(cmuClock_HFPER);
254 }
255
256 /* Iterate in order to determine best prescale value. Only a few possible */
257 /* values. We start with lowest prescaler value in order to get first */
258 /* equal or below wanted DAC frequency value. */
259 for (ret = 0; ret <= (_DAC_CTRL_PRESC_MASK >> _DAC_CTRL_PRESC_SHIFT); ret++)
260 {
261 if ((hfperFreq >> ret) <= dacFreq)
262 break;
263 }
264
265 return((uint8_t)ret);
266}
267
268
269/***************************************************************************//**

Callers

nothing calls this directly

Calls 1

CMU_ClockFreqGetFunction · 0.85

Tested by

no test coverage detected