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.

UCD3138ALLCEVM150: UCD3138ALLCEVM150: Explanation about firmware code

Part Number: UCD3138ALLCEVM150
Other Parts Discussed in Thread: UCD3138A

Hi expert,

I am using the UCD3138ALLC-EVM150 development board. I want to use the LLC code on the ti website to evaluate my project, but the content of the program is very difficult to understand.

I want to find a comment on the LLC code. Can you send it to me by email?

Kindly share any suitable documentation regarding the same.

Any sort of help is most appreciated.

Thanks and Regards,

Pratik

  • Sorry, TI won't allow to send the firmware by email. It is blocked automatically.

    If you highlight, I may help you to understand.

  • Hello Sean,

    Can you please share the same documents, the ones that are mentioned in the following thread:

    UCD3138ALLCEVM150: UCD3138ALLCEVM150: - Power management forum - Power management - TI E2E support forums

    Regards,

    Pratik

  • Hi, Pratik,

    Ian already retired a year ago. I don't have his document. 

    Regards,

    Sean

  • Hello Sean,
    Your support is most appreciated.

    Can you please help me with the UCD3138A LLC default firmware for the following:

    In configuration_functions.c:

          void configure_vout_timing(void)                          // what is the job of this function?
        {   ...
            struct qnote constant_3_73555 = {30602 , -13};    // how is 3.73555 selected?
        }

           void configure_constant_power(void)
        {
           struct qnote pmax_to_adc_scaler = {16781, -1};          // how is this value selected?
        }

    void configure_uvp(void)
    {
        Uint16 uvp_limit;
        struct qnote vdac_scaler = {DAC_OVP, -OVP_EXP};
        uvp_limit = qnote_linear16_multiply_fit(vdac_scaler ,                              // Please explain this calculation
            pmbus_dcdc_config[0].vout_ov_fault_limit, -VOUT_MODE_EXP,
            MAX_VALUE_FIT_7_BITS);
        FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_THRESH = uvp_limit;
    }

    void configure_iout_ocp(void)
    {
        //This struct represents the floating point number: 1.81356
        struct qnote constant_1_81356 = {29713 , -14};                           // Please explain this calculation
            FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_THRESH =                           
            qnote_linear11_multiply_fit(constant_1_81356,
            pmbus_dcdc_config[0].iout_oc_fault_limit,
            MAX_VALUE_FIT_7_BITS);


    void configure_ipri_cycle_by_cycle(Uint16 fault_limit)
    {
        //This struct represents the floating point number: 15.9746
        struct qnote constant_15_9746 = {32716, -11};                            // how is this value selected?


    void configure_cc_dac_value(void)
    {
        int16 imax_value;
        struct qnote constant_22_430 = {22968, -10};                             // how is this value selected?

    Regards,

    Pratik

  • Please give us few days to review the code and get back to you

  • I don't know every formula used here to get the numbers. The goal is to change the calculation from floating points to fixed points. For example: 

    /This struct represents the floating point number: 15.9746
        struct qnote constant_15_9746 = {32716, -11};                            // how is this value selected?

    15.9746 = 32716 * 2^ (-11).

    You can use the similar formula for other transformation.

  • Hello Sean,

    Thanks for the reply. But I am well aware of the transformation formula.

    I just need to know that how does the developer arrive at these values in the above piece of code.

  • You can use the GUI to transfer the floating point to fixed point. I will share the screen shot with you.

  • Thank you Sean. But I am well aware of the GUI tool used for transformation from floating to fixed point.

    It would have been great if there was some documentation or support regarding the code.

  • unfortunately, there is no document to explain because every user ha their own algorithm.

  • Hi Sean.

    Thanks for your support. I guess I will try to figure it out myself.

    Regards,

    Pratik