mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
Diff: targets/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_vdac.c
- Revision:
- 179:b0033dcd6934
- Parent:
- 161:2cc1468da177
--- a/targets/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_vdac.c Thu Nov 23 11:57:25 2017 +0000 +++ b/targets/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_vdac.c Thu Dec 07 14:01:42 2017 +0000 @@ -1,9 +1,9 @@ /***************************************************************************//** * @file em_vdac.c * @brief Digital to Analog Converter (VDAC) Peripheral API - * @version 5.1.2 + * @version 5.3.3 ******************************************************************************* - * @section License + * # License * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b> ******************************************************************************* * @@ -83,28 +83,19 @@ EFM_ASSERT(VDAC_REF_VALID(vdac)); EFM_ASSERT(VDAC_CH_VALID(ch)); - if (ch == 0) - { - if (enable) - { + if (ch == 0) { + if (enable) { vdac->CMD = VDAC_CMD_CH0EN; - } - else - { + } else { vdac->CMD = VDAC_CMD_CH0DIS; - while (vdac->STATUS & VDAC_STATUS_CH0ENS); + while (vdac->STATUS & VDAC_STATUS_CH0ENS) ; } - } - else - { - if (enable) - { + } else { + if (enable) { vdac->CMD = VDAC_CMD_CH1EN; - } - else - { + } else { vdac->CMD = VDAC_CMD_CH1DIS; - while (vdac->STATUS & VDAC_STATUS_CH1ENS); + while (vdac->STATUS & VDAC_STATUS_CH1ENS) ; } } } @@ -138,25 +129,21 @@ /* Make sure both channels are disabled. */ vdac->CMD = VDAC_CMD_CH0DIS | VDAC_CMD_CH1DIS; - while (vdac->STATUS & (VDAC_STATUS_CH0ENS | VDAC_STATUS_CH1ENS)); + while (vdac->STATUS & (VDAC_STATUS_CH0ENS | VDAC_STATUS_CH1ENS)) ; /* Get OFFSETTRIM calibration value. */ cal = ((DEVINFO->VDAC0CH1CAL & _DEVINFO_VDAC0CH1CAL_OFFSETTRIM_MASK) >> _DEVINFO_VDAC0CH1CAL_OFFSETTRIM_SHIFT) << _VDAC_CAL_OFFSETTRIM_SHIFT; - if (init->mainCalibration) - { + if (init->mainCalibration) { calData = &DEVINFO->VDAC0MAINCAL; - } - else - { + } else { calData = &DEVINFO->VDAC0ALTCAL; } /* Get correct GAINERRTRIM calibration value. */ - switch (init->reference) - { + switch (init->reference) { case vdacRef1V25Ln: tmp = (*calData & _DEVINFO_VDAC0MAINCAL_GAINERRTRIM1V25LN_MASK) >> _DEVINFO_VDAC0MAINCAL_GAINERRTRIM1V25LN_SHIFT; @@ -188,8 +175,7 @@ cal |= tmp << _VDAC_CAL_GAINERRTRIM_SHIFT; /* Get GAINERRTRIMCH1 calibration value. */ - switch (init->reference) - { + switch (init->reference) { case vdacRef1V25Ln: case vdacRef1V25: case vdacRefAvdd: @@ -249,48 +235,36 @@ /* Make sure both channels are disabled. */ vdacStatus = vdac->STATUS; vdac->CMD = VDAC_CMD_CH0DIS | VDAC_CMD_CH1DIS; - while (vdac->STATUS & (VDAC_STATUS_CH0ENS | VDAC_STATUS_CH1ENS)); + while (vdac->STATUS & (VDAC_STATUS_CH0ENS | VDAC_STATUS_CH1ENS)) ; vdacChCtrl = ((uint32_t)init->prsSel << _VDAC_CH0CTRL_PRSSEL_SHIFT) | ((uint32_t)init->prsAsync << _VDAC_CH0CTRL_PRSASYNC_SHIFT) | ((uint32_t)init->trigMode << _VDAC_CH0CTRL_TRIGMODE_SHIFT) | ((uint32_t)init->sampleOffMode << _VDAC_CH0CTRL_CONVMODE_SHIFT); - if (ch == 0) - { + if (ch == 0) { vdac->CH0CTRL = vdacChCtrl; - } - else - { + } else { vdac->CH1CTRL = vdacChCtrl; } /* Check if the channel must be enabled. */ - if (init->enable) - { - if (ch == 0) - { + if (init->enable) { + if (ch == 0) { vdac->CMD = VDAC_CMD_CH0EN; - } - else - { + } else { vdac->CMD = VDAC_CMD_CH1EN; } } /* Check if the other channel had to be turned off above * and needs to be turned on again. */ - if (ch == 0) - { - if (vdacStatus & VDAC_STATUS_CH1ENS) - { + if (ch == 0) { + if (vdacStatus & VDAC_STATUS_CH1ENS) { vdac->CMD = VDAC_CMD_CH1EN; } - } - else - { - if (vdacStatus & VDAC_STATUS_CH0ENS) - { + } else { + if (vdacStatus & VDAC_STATUS_CH0ENS) { vdac->CMD = VDAC_CMD_CH0EN; } } @@ -317,8 +291,7 @@ unsigned int channel, uint32_t value) { - switch(channel) - { + switch (channel) { case 0: VDAC_Channel0OutputSet(vdac, value); break; @@ -368,23 +341,16 @@ uint32_t ret, refFreq; /* Make sure selected VDAC clock is below max value */ - if (vdacFreq > VDAC_MAX_CLOCK) - { + if (vdacFreq > VDAC_MAX_CLOCK) { vdacFreq = VDAC_MAX_CLOCK; } - if (!syncMode) - { + if (!syncMode) { refFreq = VDAC_INTERNAL_CLOCK_FREQ; - } - else - { - if (hfperFreq) - { + } else { + if (hfperFreq) { refFreq = hfperFreq; - } - else - { + } else { refFreq = CMU_ClockFreqGet(cmuClock_HFPER); } } @@ -392,18 +358,15 @@ /* Iterate in order to determine best prescale value. Start with lowest */ /* prescaler value in order to get the first equal or less VDAC */ /* frequency value. */ - for (ret = 0; ret <= _VDAC_CTRL_PRESC_MASK >> _VDAC_CTRL_PRESC_SHIFT; ret++) - { - if ((refFreq / (ret + 1)) <= vdacFreq) - { + for (ret = 0; ret <= _VDAC_CTRL_PRESC_MASK >> _VDAC_CTRL_PRESC_SHIFT; ret++) { + if ((refFreq / (ret + 1)) <= vdacFreq) { break; } } /* If ret is higher than the max prescaler value, make sure to return the max value. */ - if (ret > (_VDAC_CTRL_PRESC_MASK >> _VDAC_CTRL_PRESC_SHIFT)) - { + if (ret > (_VDAC_CTRL_PRESC_MASK >> _VDAC_CTRL_PRESC_SHIFT)) { ret = _VDAC_CTRL_PRESC_MASK >> _VDAC_CTRL_PRESC_SHIFT; } @@ -421,7 +384,7 @@ { /* Disable channels, before resetting other registers. */ vdac->CMD = VDAC_CMD_CH0DIS | VDAC_CMD_CH1DIS; - while (vdac->STATUS & (VDAC_STATUS_CH0ENS | VDAC_STATUS_CH1ENS)); + while (vdac->STATUS & (VDAC_STATUS_CH0ENS | VDAC_STATUS_CH1ENS)) ; vdac->CH0CTRL = _VDAC_CH0CTRL_RESETVALUE; vdac->CH1CTRL = _VDAC_CH1CTRL_RESETVALUE; vdac->CH0DATA = _VDAC_CH0DATA_RESETVALUE;