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.

TMS320F28P550SJ: Sysconfig does not seem to generate codes for repeaters

Part Number: TMS320F28P550SJ
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

Tool/software:

Hi champs,

I am asking this for our customer.

Environment:

CCS 12.8.1

Sysconfig 1.21

C2000ware V5.04

The user wants to use burst mode triggered by Repeater 1.

But the user finds that there seems no code generated by Sysconfig for Repeater1 when Repeater1 is used by burst mode rather than by SOCx.

PS. If the repeater is used by SOCx, initialization codes are generated as expected. This is only for burst mode.

Would you please help check if there is anything wrong?

  • Hi champs,

    After you are back to the office, would you please prioritize this?

  • Hi champs,

    Do you have any update?

  • Do you have any update?

  • Hi, Wayne. Apologies for the late response. Are you using the "Trigger Mode" as "Use Repeater Trigger" in the SOC Trigger configuration?




    Thanks and Regards,
    Masood Raza

  • Hi Masood,

    Did you use burst mode in your case?

    The problem is there when both burst mode and repeater are used together and then there will be no repeater code.

  • Hi, Wayne. Yes, I am using burst mode. Can you ask the customer for their SOC configurations?

    Thanks and Regards,
    Masood Raza

  • Masood

    When using Burst mode, the conversions are triggered based on the trigger source selected in BURSTTRIG, and not by the trigger source selected in SOCx TRIGSEL

    Here is a snippet from the TRM
    "Setting the bit BURSTEN in the ADCBURSTCTL register configures the ADC wrapper for burst mode. This causes the TRIGSEL field to be ignored, but only for SOCs that are configured for round-robin operation (not high priority). Instead of the TRIGSEL field, all round-robin SOCs are triggered based on the BURSTTRIG field in the ADCBURSTCTL register."

    So, the expectation on Sysconfig would be to generate repeater code when 'Burst Mode Trigger Signal' in 'Burst Mode' section is selected as Repeater 1 or 2.
    Currently, only when 'SOC Configurations' -> 'SOC0/1' -> 'Trigger Mode' is selected as 'Use Repeater Trigger' and 'SOC0/1 Trigger' is selected as 'Repeater 1/2', then the repeater code is generated

    This line in the ADC code template file (adc.board.c.xdt) is the condition used to determine whether the repeater configuration code is generated or not. Currently it uses the 'Trigger Mode' parameter of 'SOC Configurations -> SOC0/1'.


    Line 178: % if(instance["soc" + socNumber.toString() + "Triggermode"]=="repeatermode"){

    I think the lines 179 - 205 (which is the repeater configuration code template) of this file (adc.board.c.xdt) needs to be used even when 'Burst Mode Trigger Signal' parameter is selected as Repeater 1 or 2

    //
    // Configures Repeater Modules
    //
    % for(var rptrIndex in device_driverlib_peripheral.ADC_RepInstance){
    % var currentRPTR = device_driverlib_peripheral.ADC_RepInstance[rptrIndex].name
    % var rptriNumber = (currentRPTR).replace(/[^0-9]/g,'')
    % if((instance["soc" + socNumber.toString() + "Trigger"].replace(/[^0-9]/g,'')==rptriNumber )){
    //
    // Repeater module `rptriNumber` parameters
    // base: `baseName`
    // RepInstance: `instance["soc" + socNumber.toString() + "Trigger"]`
    // ADC_RepeaterConfig :
    // mode : `instance["repeater"+rptriNumber+" Mode"]`
    // Trigger : `instance["repeater"+rptriNumber+" Trigger"]`
    // SyncInput : `instance["repeater"+rptriNumber+" SyncInput"]`
    // Count : `instance["repeater"+rptriNumber+" Count"]`
    // phase : `instance["repeater"+rptriNumber+" Phase"]`
    // spread : `instance["repeater"+rptriNumber+" Spread"]`
    //
    ADC_triggerRepeaterSelect(`baseName`, ADC_REPINST`rptriNumber`, `instance["repeater"+rptriNumber+" Trigger"]`);
    ADC_triggerRepeaterMode(`baseName`, ADC_REPINST`rptriNumber`, `instance["repeater"+rptriNumber+" Mode"]`);
    ADC_triggerRepeaterSyncIn(`baseName`, ADC_REPINST`rptriNumber`, `instance["repeater"+rptriNumber+" SyncInput"]`);
    ADC_triggerRepeaterCount(`baseName`, ADC_REPINST`rptriNumber`, `instance["repeater"+rptriNumber+" Count"]`);
    ADC_triggerRepeaterPhase(`baseName`, ADC_REPINST`rptriNumber`, `instance["repeater"+rptriNumber+" Phase"]`);
    ADC_triggerRepeaterSpread(`baseName`, ADC_REPINST`rptriNumber`, `instance["repeater"+rptriNumber+" Spread"]`);
    % }
    % }

    Thanks

    K.Sanjeev

  • Hi Masood,

    Yes, Sanjeev shows the point "When using Burst mode, the conversions are triggered based on the trigger source selected in BURSTTRIG, and not by the trigger source selected in SOCx TRIGSEL".

    This is what I meant.

  • Hello Wayne,

    We are working on updating the ADC sysconfig code template to resolve this issue.

    We will get back to you today with the status of the fix/patch

    Thanks

    K.Sanjeev

  • .https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/171/adc.board.c.xdt

    Hi, Wayne. I have attached the fixed patch. The path in the SDK folder is C2000Ware_5_04_00_00\driverlib\.meta\adc\adc.board.c. I am able to get the Repeater configurations in burst mode without configuring the repeater in SOC. You can check this once and let us know if the customer again faces some issues.



    Thanks and Regards,
    Masood Raza.

  • Hi Masood,

    I copied adc.board.c.xdt in C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\.meta\adc.

    Re-built the project.

    But the result in the generated board.c looked very weird.

    There are 16 times of repeater codes repetitively.

    SOC0-15 are in round-robin.

    Every round-robin SOCx has its own but same repeater codes.

    Does it make sense?

    Is this what you expect?

    In theory, once is enough.

    That is, if I manually write this repeater code once, then it works.