The MCUXpresso SDK provides APIs for MCUXpresso SDK devices' dcdc operation.
The DCDC Converter(DCDC) is used for generating the power supply for the chip's core logic. It can provide two outputs for SoC peripherals and external devices with high conversion efficiency. As a module to provide the power for hardware system, the DCDC starts working when the system is powered up before the software takes over the SoC. Some important configuration is done by the board settings. Before the software can access the DCDC's register, the DCDC is already working normally with the default settings. However, if the application needs to improve the DCDC's performance or change the default settings, this DCDC driver would be helpful. The DCDC's register cannot be accessed by software before its initialization (open the clock gate).
The DCDC module supports two control modes: Static control mode and Set point control mode. When the module controlled by GPC set points, that is set point control mode, the DCDC_SetPointInit() function can be used to enable DCDC module, set outputs' target voltage in the specific set point. When the control mode is set as static control mode, to change the target voltage value of DCDC's outputs, the APIs in "Outputs' Target Voltage Related Interfaces" function group can be used. To set DCDC module's power mode, the APIs in "Power Mode Related Interfaces" function group can be used.
|
enum | _dcdc_status_flags { kDCDC_AlreadySettledStatusFlag = DCDC_REG0_STS_DC_OK_MASK
} |
| The enumeration of DCDC status flags. More...
|
|
enum | dcdc_core_slice_t {
kDCDC_CORE0 = 0x0U,
kDCDC_CORE1 = 0x1U
} |
| CORE slice. More...
|
|
enum | dcdc_control_mode_t {
kDCDC_SoftwareControl = 0U,
kDCDC_GPCControl = 1U
} |
| DCDC control mode, including software control mode and GPC control mode. More...
|
|
enum | dcdc_trim_input_mode_t {
kDCDC_SampleTrimInput = 0U,
kDCDC_HoldTrimInput = 1U
} |
| DCDC trim input mode, including sample trim input and hold trim input. More...
|
|
enum | dcdc_1P0_target_vol_t {
kDCDC_1P0Target0P6V = 0U,
kDCDC_1P0Target0P625V,
kDCDC_1P0Target0P65V,
kDCDC_1P0Target0P675V,
kDCDC_1P0Target0P7V,
kDCDC_1P0Target0P725V,
kDCDC_1P0Target0P75V,
kDCDC_1P0Target0P775V,
kDCDC_1P0Target0P8V,
kDCDC_1P0Target0P825V,
kDCDC_1P0Target0P85V,
kDCDC_1P0Target0P875V,
kDCDC_1P0Target0P9V,
kDCDC_1P0Target0P925V,
kDCDC_1P0Target0P95V,
kDCDC_1P0Target0P975V,
kDCDC_1P0Target1P0V,
kDCDC_1P0Target1P025V,
kDCDC_1P0Target1P05V,
kDCDC_1P0Target1P075V,
kDCDC_1P0Target1P1V,
kDCDC_1P0Target1P125V,
kDCDC_1P0Target1P15V,
kDCDC_1P0Target1P175V,
kDCDC_1P0Target1P2V,
kDCDC_1P0Target1P225V,
kDCDC_1P0Target1P25V,
kDCDC_1P0Target1P275V,
kDCDC_1P0Target1P3V,
kDCDC_1P0Target1P325V,
kDCDC_1P0Target1P35V,
kDCDC_1P0Target1P375V = 0x1FU
} |
| The enumeration VDD1P0's target voltage value. More...
|
|
enum | dcdc_1P8_target_vol_t {
kDCDC_1P8Target1P5V = 0U,
kDCDC_1P8Target1P525V,
kDCDC_1P8Target1P55V,
kDCDC_1P8Target1P575V,
kDCDC_1P8Target1P6V,
kDCDC_1P8Target1P625V,
kDCDC_1P8Target1P65V,
kDCDC_1P8Target1P675V,
kDCDC_1P8Target1P7V,
kDCDC_1P8Target1P725V,
kDCDC_1P8Target1P75V,
kDCDC_1P8Target1P775V,
kDCDC_1P8Target1P8V,
kDCDC_1P8Target1P825V,
kDCDC_1P8Target1P85V,
kDCDC_1P8Target1P875V,
kDCDC_1P8Target1P9V,
kDCDC_1P8Target1P925V,
kDCDC_1P8Target1P95V,
kDCDC_1P8Target1P975V,
kDCDC_1P8Target2P0V,
kDCDC_1P8Target2P025V,
kDCDC_1P8Target2P05V,
kDCDC_1P8Target2P075V,
kDCDC_1P8Target2P1V,
kDCDC_1P8Target2P125V,
kDCDC_1P8Target2P15V,
kDCDC_1P8Target2P175V,
kDCDC_1P8Target2P2V,
kDCDC_1P8Target2P225V,
kDCDC_1P8Target2P25V,
kDCDC_1P8Target2P275V = 0x1FU
} |
| The enumeration VDD1P8's target voltage value. More...
|
|
enum | dcdc_comparator_current_bias_t {
kDCDC_ComparatorCurrentBias50nA = 0U,
kDCDC_ComparatorCurrentBias100nA = 1U,
kDCDC_ComparatorCurrentBias200nA = 2U,
kDCDC_ComparatorCurrentBias400nA = 3U
} |
| The current bias of low power comparator. More...
|
|
enum | dcdc_peak_current_threshold_t {
kDCDC_PeakCurrentRunMode250mALPMode1P5A = 0U,
kDCDC_PeakCurrentRunMode200mALPMode1P5A,
kDCDC_PeakCurrentRunMode250mALPMode2A,
kDCDC_PeakCurrentRunMode200mALPMode2A
} |
| The threshold if peak current detection. More...
|
|
enum | dcdc_clock_source_t {
kDCDC_ClockAutoSwitch = 0U,
kDCDC_ClockInternalOsc = 1U,
kDCDC_ClockExternalOsc = 2U
} |
| Oscillator clock option. More...
|
|
enum | dcdc_voltage_output_sel_t {
kDCDC_VoltageOutput1P8 = 0U,
kDCDC_VoltageOutput1P0 = 1U
} |
| Voltage output option. More...
|
|
|
static void | DCDC_SetVDD1P0LowPowerModeTargetVoltage (DCDC_Type *base, dcdc_core_slice_t core, dcdc_1P0_target_vol_t targetVoltage) |
|
static uint16_t | DCDC_GetVDD1P0LowPowerModeTargetVoltage (DCDC_Type *base) |
| Gets the target value of VDD1P0 in low power mode, the result takes "mV" as the unit. More...
|
|
static void | DCDC_EnableVDD1P0LowPowerMode (DCDC_Type *base, dcdc_core_slice_t core, bool enable) |
|
static void | DCDC_SetVDD1P0BuckModeTargetVoltage (DCDC_Type *base, dcdc_core_slice_t core, dcdc_1P0_target_vol_t targetVoltage) |
| Sets the target value(ranges from 0.6V to 1.375V) of VDD1P0 in buck mode, 25mV each step. More...
|
|
static uint16_t | DCDC_GetVDD1P0BuckModeTargetVoltage (DCDC_Type *base) |
| Gets the target value of VDD1P0 in buck mode, the result takes "mV" as the unit. More...
|
|
static void | DCDC_GPC_SetVDD1P0BuckModeTargetVoltage (DCDC_Type *base, dcdc_core_slice_t core, dcdc_1P0_target_vol_t targetVoltage) |
|
static void | DCDC_GPC_SetVDD1P0LowPowerModeTargetVoltage (DCDC_Type *base, dcdc_core_slice_t core, dcdc_1P0_target_vol_t targetVoltage) |
| Sets the target value(ranges from 0.625V to 1.4V) of VDD1P0 in low power mode, 25mV each step. More...
|
|
static void | DCDC_GPC_EnableVDD1P0LowPowerMode (DCDC_Type *base, dcdc_core_slice_t core, bool enable) |
| Enable VDD1P0 in low power mode. More...
|
|
static void | DCDC_SetVDD1P8TargetVoltage (DCDC_Type *base, dcdc_core_slice_t core, dcdc_1P8_target_vol_t targetVoltage) |
| Sets the target value(ranges from 1.5V to 2.275V) of VDD1P8, 25mV each step. More...
|
|
static uint16_t | DCDC_GetVDD1P8TargetVoltage (DCDC_Type *base) |
| Gets the target value of VDD1P8, the result takes "mV" as the unit. More...
|
|
static void | DCDC_EnableVDD1P0TargetVoltageStepping (DCDC_Type *base, bool enable) |
| Enables/Disables stepping for VDD1P0, before entering low power modes the stepping for VDD1P0 must be disabled. More...
|
|
struct dcdc_min_power_config_t |
bool dcdc_min_power_config_t::enableUseHalfFreqForContinuous |
struct dcdc_detection_config_t |
bool dcdc_detection_config_t::enableXtalokDetection |
bool dcdc_detection_config_t::powerDownOverVoltageVdd1P8Detection |
bool dcdc_detection_config_t::powerDownOverVoltageVdd1P0Detection |
bool dcdc_detection_config_t::powerDownLowVoltageDetection |
bool dcdc_detection_config_t::powerDownOverCurrentDetection |
struct dcdc_loop_control_config_t |
bool dcdc_loop_control_config_t::enableCommonHysteresis |
This feature will improve transient supply ripple and efficiency.
bool dcdc_loop_control_config_t::enableCommonThresholdDetection |
bool dcdc_loop_control_config_t::enableDifferentialHysteresis |
This feature will improve transient supply ripple and efficiency.
bool dcdc_loop_control_config_t::enableDifferentialThresholdDetection |
bool dcdc_loop_control_config_t::enableInvertHysteresisSign |
bool dcdc_loop_control_config_t::enableRCThresholdDetection |
uint32_t dcdc_loop_control_config_t::enableRCScaleCircuit |
Enable analog circuit of DC-DC converter to respond faster under transient load conditions.
uint32_t dcdc_loop_control_config_t::complementFeedForwardStep |
Two's complement feed forward step in duty cycle in the switching DC-DC converter. Each time this field makes a transition from 0x0, the loop filter of the DC-DC converter is stepped once by a value proportional to the change. This can be used to force a certain control loop behavior, such as improving response under known heavy load transients.
uint32_t dcdc_loop_control_config_t::controlParameterMagnitude |
Magnitude of proportional control parameter in the switching DC-DC converter control loop.
uint32_t dcdc_loop_control_config_t::integralProportionalRatio |
struct dcdc_internal_regulator_config_t |
uint32_t dcdc_internal_regulator_config_t::feedbackPoint |
Select the feedback point of the internal regulator.
#define VDD1P0_TARGET_VOLTAGE |
Value:{ \
600, 625, 650, 675, 700, 725, 750, 775, 800, 825, 850, 875, 900, 925, 950, 975, 1000, 1025, 1050, 1075, 1100, \
1125, 1150, 1175, 1200, 1225, 1250, 1275, 1300, 1325, 1350, 1375 \
}
#define VDD1P8_TARGET_VOLTAGE |
Value:{ \
1500, 1525, 1550, 1575, 1600, 1625, 1650, 1675, 1700, 1725, 1750, 1775, 1800, 1825, 1850, 1875, 1900, 1925, \
1950, 1975, 2000, 2025, 2050, 2075, 2100, 2125, 2150, 2175, 2200, 2225, 2250, 2275 \
}
Enumerator |
---|
kDCDC_AlreadySettledStatusFlag |
Indicate DCDC status.
1'b1: DCDC already settled 1'b0: DCDC is settling.
|
Enumerator |
---|
kDCDC_CORE0 |
CORE slice 0.
|
kDCDC_CORE1 |
CORE slice 1.
|
Enumerator |
---|
kDCDC_SoftwareControl |
Controlled by software.
|
kDCDC_GPCControl |
Controlled by GPC.
|
Enumerator |
---|
kDCDC_SampleTrimInput |
Sample trim input.
|
kDCDC_HoldTrimInput |
Hold trim input.
|
Enumerator |
---|
kDCDC_1P0Target0P6V |
The target voltage value of VDD1P0 is 0.6V.
|
kDCDC_1P0Target0P625V |
The target voltage value of VDD1P0 is 0.625V.
|
kDCDC_1P0Target0P65V |
The target voltage value of VDD1P0 is 0.65V.
|
kDCDC_1P0Target0P675V |
The target voltage value of VDD1P0 is 0.675V.
|
kDCDC_1P0Target0P7V |
The target voltage value of VDD1P0 is 0.7V.
|
kDCDC_1P0Target0P725V |
The target voltage value of VDD1P0 is 0.725V.
|
kDCDC_1P0Target0P75V |
The target voltage value of VDD1P0 is 0.75V.
|
kDCDC_1P0Target0P775V |
The target voltage value of VDD1P0 is 0.775V.
|
kDCDC_1P0Target0P8V |
The target voltage value of VDD1P0 is 0.8V.
|
kDCDC_1P0Target0P825V |
The target voltage value of VDD1P0 is 0.825V.
|
kDCDC_1P0Target0P85V |
The target voltage value of VDD1P0 is 0.85V.
|
kDCDC_1P0Target0P875V |
The target voltage value of VDD1P0 is 0.875V.
|
kDCDC_1P0Target0P9V |
The target voltage value of VDD1P0 is 0.9V.
|
kDCDC_1P0Target0P925V |
The target voltage value of VDD1P0 is 0.925V.
|
kDCDC_1P0Target0P95V |
The target voltage value of VDD1P0 is 0.95V.
|
kDCDC_1P0Target0P975V |
The target voltage value of VDD1P0 is 0.975V.
|
kDCDC_1P0Target1P0V |
The target voltage value of VDD1P0 is 1.0V.
|
kDCDC_1P0Target1P025V |
The target voltage value of VDD1P0 is 1.025V.
|
kDCDC_1P0Target1P05V |
The target voltage value of VDD1P0 is 1.05V.
|
kDCDC_1P0Target1P075V |
The target voltage value of VDD1P0 is 1.075V.
|
kDCDC_1P0Target1P1V |
The target voltage value of VDD1P0 is 1.1V.
|
kDCDC_1P0Target1P125V |
The target voltage value of VDD1P0 is 1.125V.
|
kDCDC_1P0Target1P15V |
The target voltage value of VDD1P0 is 1.15V.
|
kDCDC_1P0Target1P175V |
The target voltage value of VDD1P0 is 1.175V.
|
kDCDC_1P0Target1P2V |
The target voltage value of VDD1P0 is 1.2V.
|
kDCDC_1P0Target1P225V |
The target voltage value of VDD1P0 is 1.225V.
|
kDCDC_1P0Target1P25V |
The target voltage value of VDD1P0 is 1.25V.
|
kDCDC_1P0Target1P275V |
The target voltage value of VDD1P0 is 1.275V.
|
kDCDC_1P0Target1P3V |
The target voltage value of VDD1P0 is 1.3V.
|
kDCDC_1P0Target1P325V |
The target voltage value of VDD1P0 is 1.325V.
|
kDCDC_1P0Target1P35V |
The target voltage value of VDD1P0 is 1.35V.
|
kDCDC_1P0Target1P375V |
The target voltage value of VDD1P0 is 1.375V.
|
Enumerator |
---|
kDCDC_1P8Target1P5V |
The target voltage value of VDD1P8 is 1.5V.
|
kDCDC_1P8Target1P525V |
The target voltage value of VDD1P8 is 1.525V.
|
kDCDC_1P8Target1P55V |
The target voltage value of VDD1P8 is 1.55V.
|
kDCDC_1P8Target1P575V |
The target voltage value of VDD1P8 is 1.575V.
|
kDCDC_1P8Target1P6V |
The target voltage value of VDD1P8 is 1.6V.
|
kDCDC_1P8Target1P625V |
The target voltage value of VDD1P8 is 1.625V.
|
kDCDC_1P8Target1P65V |
The target voltage value of VDD1P8 is 1.65V.
|
kDCDC_1P8Target1P675V |
The target voltage value of VDD1P8 is 1.675V.
|
kDCDC_1P8Target1P7V |
The target voltage value of VDD1P8 is 1.7V.
|
kDCDC_1P8Target1P725V |
The target voltage value of VDD1P8 is 1.725V.
|
kDCDC_1P8Target1P75V |
The target voltage value of VDD1P8 is 1.75V.
|
kDCDC_1P8Target1P775V |
The target voltage value of VDD1P8 is 1.775V.
|
kDCDC_1P8Target1P8V |
The target voltage value of VDD1P8 is 1.8V.
|
kDCDC_1P8Target1P825V |
The target voltage value of VDD1P8 is 1.825V.
|
kDCDC_1P8Target1P85V |
The target voltage value of VDD1P8 is 1.85V.
|
kDCDC_1P8Target1P875V |
The target voltage value of VDD1P8 is 1.875V.
|
kDCDC_1P8Target1P9V |
The target voltage value of VDD1P8 is 1.9V.
|
kDCDC_1P8Target1P925V |
The target voltage value of VDD1P8 is 1.925V.
|
kDCDC_1P8Target1P95V |
The target voltage value of VDD1P8 is 1.95V.
|
kDCDC_1P8Target1P975V |
The target voltage value of VDD1P8 is 1.975V.
|
kDCDC_1P8Target2P0V |
The target voltage value of VDD1P8 is 2.0V.
|
kDCDC_1P8Target2P025V |
The target voltage value of VDD1P8 is 2.025V.
|
kDCDC_1P8Target2P05V |
The target voltage value of VDD1P8 is 2.05V.
|
kDCDC_1P8Target2P075V |
The target voltage value of VDD1P8 is 2.075V.
|
kDCDC_1P8Target2P1V |
The target voltage value of VDD1P8 is 2.1V.
|
kDCDC_1P8Target2P125V |
The target voltage value of VDD1P8 is 2.125V.
|
kDCDC_1P8Target2P15V |
The target voltage value of VDD1P8 is 2.15V.
|
kDCDC_1P8Target2P175V |
The target voltage value of VDD1P8 is 2.175V.
|
kDCDC_1P8Target2P2V |
The target voltage value of VDD1P8 is 2.2V.
|
kDCDC_1P8Target2P225V |
The target voltage value of VDD1P8 is 2.225V.
|
kDCDC_1P8Target2P25V |
The target voltage value of VDD1P8 is 2.25V.
|
kDCDC_1P8Target2P275V |
The target voltage value of VDD1P8 is 2.275V.
|
Enumerator |
---|
kDCDC_ComparatorCurrentBias50nA |
The current bias of low power comparator is 50nA.
|
kDCDC_ComparatorCurrentBias100nA |
The current bias of low power comparator is 100nA.
|
kDCDC_ComparatorCurrentBias200nA |
The current bias of low power comparator is 200nA.
|
kDCDC_ComparatorCurrentBias400nA |
The current bias of low power comparator is 400nA.
|
Enumerator |
---|
kDCDC_PeakCurrentRunMode250mALPMode1P5A |
Over peak current threshold in low power mode is 250mA, in run mode is 1.5A.
|
kDCDC_PeakCurrentRunMode200mALPMode1P5A |
Over peak current threshold in low power mode is 200mA, in run mode is 1.5A.
|
kDCDC_PeakCurrentRunMode250mALPMode2A |
Over peak current threshold in low power mode is 250mA, in run mode is 2A.
|
kDCDC_PeakCurrentRunMode200mALPMode2A |
Over peak current threshold in low power mode is 200mA, in run mode is 2A.
|
Enumerator |
---|
kDCDC_ClockAutoSwitch |
Automatic clock switch from internal oscillator to external clock.
|
kDCDC_ClockInternalOsc |
Use internal oscillator.
|
kDCDC_ClockExternalOsc |
Use external 24M crystal oscillator.
|
Enumerator |
---|
kDCDC_VoltageOutput1P8 |
1.8V output.
|
kDCDC_VoltageOutput1P0 |
1.0V output.
|
void DCDC_Init |
( |
DCDC_Type * |
base, |
|
|
const dcdc_config_t * |
config |
|
) |
| |
- Parameters
-
base | DCDC peripheral base address. |
config | Pointer to the dcdc_config_t structure. |
void DCDC_Deinit |
( |
DCDC_Type * |
base | ) |
|
- Parameters
-
base | DCDC peripheral base address. |
This function initializes the user configuration structure to a default value. The default values are:
* config->controlMode = kDCDC_StaticControl;
* config->enableDcdcTimeout = false;
* config->enableSwitchingConverterOutput = false;
*
- Parameters
-
static uint16_t DCDC_GetVDD1P0LowPowerModeTargetVoltage |
( |
DCDC_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
- Returns
- The VDD1P0's voltage value in low power mode and the unit is "mV".
- Parameters
-
base | DCDC peripheral base address. |
core | Core for DCDC to control. |
targetVoltage | The target value of VDD1P0 in buck mode, see dcdc_1P0_target_vol_t. |
static uint16_t DCDC_GetVDD1P0BuckModeTargetVoltage |
( |
DCDC_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
- Returns
- The VDD1P0's voltage value in buck mode and the unit is "mV".
- Parameters
-
base | DCDC peripheral base address. |
core | Core for DCDC to control. |
targetVoltage | The target value of VDD1P0 in low power mode, see dcdc_1P0_target_vol_t. |
static void DCDC_GPC_EnableVDD1P0LowPowerMode |
( |
DCDC_Type * |
base, |
|
|
dcdc_core_slice_t |
core, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
core | Core for DCDC to control. |
enable | Enable the output or not. |
- Parameters
-
base | DCDC peripheral base address. |
core | Core for DCDC to control. |
targetVoltage | The target value of VDD1P8, see dcdc_1P8_target_vol_t. |
static uint16_t DCDC_GetVDD1P8TargetVoltage |
( |
DCDC_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
- Returns
- The VDD1P8's voltage value and the unit is "mV".
static void DCDC_EnableVDD1P0TargetVoltageStepping |
( |
DCDC_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
enable | Used to control the behavior.
- true Enables stepping for VDD1P0.
- false Disables stepping for VDD1P0.
|
The default configuration are set according to responding registers' setting when powered on. They are:
* config->enableXtalokDetection = false;
* config->powerDownOverVoltageVdd1P8Detection = true;
* config->powerDownOverVoltageVdd1P0Detection = true;
* config->powerDownLowVoltageDetection = false;
* config->powerDownOverCurrentDetection = true;
* config->powerDownPeakCurrentDetection = true;
* config->powerDownZeroCrossDetection = true;
* config->OverCurrentThreshold = kDCDC_OverCurrentThresholdAlt0;
* config->PeakCurrentThreshold = kDCDC_PeakCurrentThresholdAlt0;
*
- Parameters
-
- Parameters
-
base | DCDC peripheral base address. |
clockSource | Clock source for DCDC. See to dcdc_clock_source_t. |
static void DCDC_SetBandgapVoltageTrimValue |
( |
DCDC_Type * |
base, |
|
|
uint32_t |
trimValue |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
trimValue | The bangap trim value. Available range is 0U-31U. |
The default configuration are set according to responding registers' setting when powered on. They are:
* config->enableCommonHysteresis = false;
* config->enableCommonThresholdDetection = false;
* config->enableInvertHysteresisSign = false;
* config->enableRCThresholdDetection = false;
* config->enableRCScaleCircuit = 0U;
* config->complementFeedForwardStep = 0U;
* config->controlParameterMagnitude = 2U;
* config->integralProportionalRatio = 2U;
*
- Parameters
-
static void DCDC_EnableAdjustDelay |
( |
DCDC_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | DCDC peripheral base address. |
enable | Enable the feature or not. |
static uint32_t DCDC_GetStatusFlags |
( |
DCDC_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | peripheral base address. |
- Returns
- Mask of asserted status flags. See to _dcdc_status_flags.
void DCDC_BootIntoCCM |
( |
DCDC_Type * |
base | ) |
|
* pwd_zcd=0x1;
* pwd_cmp_offset=0x0;
* dcdc_loopctrl_en_rcscale=0x3;
*
- Parameters
-
base | DCDC peripheral base address. |