Tool/software: Code Composer Studio
Hello, I was recently learning the UCD3138HSFBEVM_029 demo board, and can't understand the "DAC ramp " functions depply.
I read the code:
inline void handle_vout_prebias_state(void)
{
vout = adc_values.Vout;
vdac_prebias = vout * 6.15; //6.26 is scaler from ADC to DAC
if(vdac_prebias > pmbus_dcdc_config_translated[0].vout_cmd)
{
vdac_prebias = pmbus_dcdc_config_translated[0].vout_cmd;
}
FeCtrl0Regs.EADCDAC.bit.DAC_VALUE = vdac_prebias;
vout = adc_values.Vout * 6; // output scaler's voltage //scaler of vout = 0.101 (9.901) //6.29 = vout*2.5*9.901/4096 and 10 bits left shift
vin = (vin_eadc_sns * 30); // input scaler's voltage, multiplied by Vin sensed scaler
duty_prebias = (unsigned int)((((Uint64) vout) << 22) /(Uint64)vin); // duty * full scaler 10 bits + 8 bits
preset_filter0(duty_prebias);
FeCtrl0Regs.RAMPCTRL.bit.FIRMWARE_START = 1;
MiscAnalogRegs.GLBIOEN.all &= 0xFFFFFF00; // Set to PWM mode and enable DPWM
Filter0Regs.FILTERCTRL.bit.USE_CPU_SAMPLE =0;
Filter1Regs.FILTERCTRL.bit.USE_CPU_SAMPLE =0;
supply_state = STATE_RAMP_UP;
}
inline void handle_vout_ramp_up_state(void)
{
fault_handler();
if(FeCtrl0Regs.RAMPSTAT.bit.RAMP_COMP_INT_STATUS == 1 )
{timer_interrupt_temporary_1 = FeCtrl0Regs.RAMPDACEND.bit.RAMP_DAC_VALUE;
FeCtrl0Regs.EADCDAC.bit.DAC_VALUE = timer_interrupt_temporary_1;
if(pmbus_dcdc_config[0].ll_en)//if light load enabled don't turn on sync-FETs
{
// FeCtrl2Regs.RAMPCTRL.bit.FIRMWARE_START = 0;
supply_state = STATE_REGULATED;
}
else
{
// supply_state = STATE_SYNFET_RAMP_UP;
supply_state = STATE_FF_ENABLE;
// FeCtrl2Regs.RAMPCTRL.bit.FIRMWARE_START = 1; // initiate Sync-FET soft-on
}
FeCtrl0Regs.RAMPCTRL.bit.FIRMWARE_START = 0;
}
}
And find Vout ramp soft starts through setting the bit FeCtrl2Regs.RAMPCTRL.bit.FIRMWARE_START = 1 , BUT I didn't find it change to 1 from GUI.
Moreover, according to the idea of the program, when the soft start is completed, the FeCtrl0Regs.RAMPSTAT.bit.RAMP_COMP_INT_STATUS bit will be set to 1. But I find the value always equals 0.
I am confused about this problems, there should be something I didn't understand. So I very expect you give me some suggestions.
Looking forward to your reply, thank you very much!