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/TMS320F280049C: Getting started with control code of LLC converter

Part Number: TMS320F280049C
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

Tool/software: Code Composer Studio

Hello,

        I am using TMS320F280049C and planning to write code to control an LLC converter. I am not very proficient with CCS and it seems a bit overwhelming to start writing from scratch. Are there any source code files for design examples to make the coding process easier. I saw a few examples in TI website but didn't find any CCS files.

Thanks!

  • Hi Satish,

    Welcome to the world of C2000.

    To get started please work through the Getting started tab of the C2000 page: www.ti.com/.../getting-started.html . This will cover a lot of the basic questions that you may have. It points to the software and example files as well as the available development hardware and kits you can try.

    After you read through all of that, there is a Multi-day workshop that you can work through at your own pace that will get you up and programming with C2000. It is for the F2837xD microcontroller, but the programming concepts are very similar to the F28004x MCU you have identified as well as the rest of the C2000 portfolio. it is located here: processors.wiki.ti.com/.../C2000_Multi-Day_Workshop

    I highly encourage you to work through all of that first and then come back with targeted questions about the LLC converter.

    Thanks,
    Mark
  • For LLC

    The released code for TIDM-10001 is here:

    www.ti.com/.../CONTROLSUITE

    once you download , the code will be here: C:\ti\controlSUITE\development_kits\TIDM_1001\v1_00_00_00
  • Thanks for the response!!

    With TMS320F280049C, I think there is no example code to add dead time with the EPWM output. Currently, I am using the example code of "epwm_ex2_updown_aq". This, I believe, would generate a variable duty cycle 25 kHz pulse. I have modified the code to meet my needs of a fixed 50% duty cycle pulse at 1 MHz. Currently, the epwm1A and epwm1B are in phase. Is there any easy fix in the code to get complementary pulses without adding new functions of phase shift and dead band from the epwm.h header file. Please let me know.

  • which version of C2000Ware are you referring to?
  • The version is v:1.00.05.00
  • This is part of our solution sw and hence I am able to post this here, below is the instructions you will need to add to the PWM setup after //set actions ,

    where base1 will be EPMW1_BASE

    ticks_in_db_red and ticks_in_d_fed will be the PWM ticks for deadband. i.e. PWM clock is 100MHz, so 10ns.

    If you want deadband of 40ns write 4 etc...

    Hope this helps.


    // Active high complementary PWMs - Set up the deadband
    EPWM_setDeadBandControlShadowLoadMode(base1,EPWM_DB_LOAD_ON_CNTR_ZERO);
    EPWM_setRisingEdgeDelayCountShadowLoadMode(base1,
    EPWM_RED_LOAD_ON_CNTR_PERIOD);
    EPWM_setFallingEdgeDelayCountShadowLoadMode(base1,
    EPWM_FED_LOAD_ON_CNTR_PERIOD);
    EPWM_setDeadBandCounterClock(base1,EPWM_DB_COUNTER_CLOCK_FULL_CYCLE);
    EPWM_setRisingEdgeDelayCount(base1,ticks_in_db_red);
    EPWM_setFallingEdgeDelayCount(base1,ticks_in_db_fed);
    EPWM_setDeadBandDelayMode(base1,EPWM_DB_RED,true);
    EPWM_setDeadBandDelayMode(base1,EPWM_DB_FED,true);
    EPWM_setRisingEdgeDeadBandDelayInput(base1,EPWM_DB_INPUT_EPWMA);
    EPWM_setFallingEdgeDeadBandDelayInput(base1,EPWM_DB_INPUT_EPWMA);
    EPWM_setDeadBandDelayPolarity(base1,EPWM_DB_FED,
    EPWM_DB_POLARITY_ACTIVE_LOW);
    EPWM_setDeadBandDelayPolarity(base1,EPWM_DB_RED,
    EPWM_DB_POLARITY_ACTIVE_HIGH);
  •   Hello Mr. Manish,

          Thanks for the response! I got the dead bands and the complementary function working but the PWM pulses at 1 MHz are jittery. Reducing the frequency to tens of kHz, the waveforms are better (please see image). I have attached the pulses at 50 kHz and 1 MHz. Is this something related to sysclk speed of execution.

    Regards,

    Satish R

  • Satish,

    at 1Mhz you will really need to do a global reload ,

    i don't think the example you based your project on uses global load.

    do you see jitter at 1Mhz without deadband as well, i.e. the orginal code ?

    -Manish
  • Hello Manish,
    Yes I am seeing jitter at 1 MHz without the dead band. The original code (from the example with no modifications) produces 25 kHz variable duty cycle with no jitter. As frequency is increased, I bump into this problem. I also think that this example is not using global reload. Is there a way to add that in the current program?

    Regards,
    Satish R

  • Satish,

    I am not familiar with the original code, let me discuss this with you on email.

    regards
    Manish Bhardwaj
  • Satish, as we have taken this conevrsation offline i will close this thread.