This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/UCD3138: how to calculate the time of ramp up for HSFB UCD3138 ?

Part Number: UCD3138

Tool/software: Code Composer Studio

Hello, I was recently learning the UCD3138HSFBEVM_029 demo board . 

I met a serious problem. 

Now,I am calculating this time of  ramp up for HSFB UCD3138,but after modified the SWITCH_CYC_PER_STEP,the time of  ramp up for HSFB UCD3138 dosn't change.

Why?Please give an answer, thank you。

  • an expert will help you soon
  • 1) Before you try to modify SWITCH_CYC_PER_STEP. Does the ramp work fine and the ramp time is as expected/calculated? What is the ramp up time?

    2) Please verify that you change the SWITCH_CYC_PER_STEP for the right front end (should be FE0 (FeCtrl0Regs) in the original code).

    3) Using the read function inmemory debugger, please make sure that indeed SWITCH_CYC_PER_STEP value is set to the desired/modified value. What is the value that you are trying to set?

    Regards,

  • First,when I  calculate the ramptime for HSFB UCD3138,I met a problem. The reference value I calculated is 1.2V/0.09765625 mV=12288,that is  FeCtrl0Regs.RAMPDACEND.bit.RAMP_DAC_VALUE = 12288;but the reference value in UCD3138HSFBEVM_029 is 6144. I don't why?

    Second, I am sure that I change the SWITCH_CYC_PER_STEP for the right front end.

    That is FeCtrl0Regs.RAMPCYCLE.bit.SWITCH_CYC_PER_STEP = 8;// every switching cycles pre DAC step

    Third,after I change the SWITCH_CYC_PER_STEP for the right front end,but when using the read function inmemory debugger, SWITCH_CYC_PER_STEP doesn't change. I don't why?

  • OK, the picture is clear now.

    First let's look at the function :

    void configure_vout_cmd(void)
    {
    struct qnote constant_DAC_VALUE_SCALER = {DAC_VALUE_SCALER, 0};
    pmbus_dcdc_config_translated[0].vout_cmd = qnote_linear16_multiply_fit14(constant_DAC_VALUE_SCALER, pmbus_dcdc_config[0].vout_cmd, -VOUT_MODE_EXP);
    FeCtrl0Regs.RAMPDACEND.all = pmbus_dcdc_config_translated[0].vout_cmd;
    }

    Plaese note that "pmbus_dcdc_config_translated[0].vout_cmd" is not the same as "pmbus_dcdc_config[0].vout_cmd".
    What is placed in the DAC for setpoint is the pmbus_dcdc_config_translated[0].vout_cmd and that one should be 12288
    The value of "pmbus_dcdc_config[0].vout_cmd" is in PMBus "Linear16" format, when VOUT_MODE_EXP defined by PMBus is set to 9.
    If "pmbus_dcdc_config[0].vout_cmd" is set to 6144, after the above function is executed, the value of "pmbus_dcdc_config_translated[0].vout_cmd" and the DAC value will be set to 12288.

    Regarding the no change in SWITCH_CYC_PER_STEP, these register values are of course volatile. I am not sure why it goes back to zero.
    Do you set it by firmware or by the memory debugger? How are making sure that the statement "FeCtrl0Regs.RAMPCYCLE.bit.SWITCH_CYC_PER_STEP = 8;" is getting executed? Is there any other statement in your code that accesses the RAMPCYCLE register?

    Please advise.

    Regards,
  • OK,thank you very much. Let me try it.
  • There is such a sentence:

    Follow this procedure,I calculated DAC_STEP=12288*6144/(20*3885)=971; but when using the read function inmemory debugger, DAC_STEP = 4; I don't why? Thank you for your answer.

  • Hi, Lei,

    I think pmbus_dcdc_config[0].period is wrong in your calculation. Please read back from the memory debug, then recalculate the DAC_STEP.

    Regards,

    Sean

  • Thank you very much,let me try it.