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.

Compiler/TMS320F28377D: OTP C-callable functions for ADC callabration

Part Number: TMS320F28377D
Other Parts Discussed in Thread: CONTROLSUITE

Tool/software: TI C/C++ Compiler

In the TSMF28377S DSC, are present the ADC Calibration function, but we have noticed in the DSC documentation that:

 

cit.

During the fabrication and test process, Texas Instruments calibrates the gain, offset, and linearity of the

ADCs and the offset of the buffered DACs. These trim settings are embedded into TI reserved OTP

memory as part of C-callable functions.

 

The C-callable functions are not always present in the chip, but we want avoid dead code: are this function calls actually necessary? Can we always ignore these functions,using the ADC without issue?

Thank you,

In the TSMF28377S DSC, are present the ADC Calibration function, but we have noticed in the DSC documentation that:
  • Hi Nicola,

    You need to call the function to calibrate the ADC (specifically the boot ROM will call the function for you or the function gets called when you use the ADC "setMode" function in C2000 ware). The function + calibration data will be present on every production device.
  • HI Devin,

    thank you for yor clarification, but I have have a doubt: if the calibration is necessary, why in the ROM of some TMS320F28377D these functions are not present? In fact, in the Control Card we are using (S / N SP7 1502157) the execution of this calibration returns an ILLEGAL ISTRUCTION

    ((CALCADCxINL_CALLBACK) 0x0703B4)
    ((CALCADCxINL_CALLBACK) 0x0703B2)
    ((CALCADCxINL_CALLBACK) 0x0703B0)
    ((CALCADCxINL_CALLBACK) 0x0703AE)

    .
    Instead, using the Lauchpad the same code is correctly executed ...

    Thank you,

    Nicola

  • Hi Nicola,

    These functions should be present on all 'TMS' devices, but your Control Card, depending on age, might have 'TMX' devices which are experimental pre-production samples.
  • Nicola,

    controlSUITE first checks if routine is present in OTP, and only then calls it. Perhaps you should something like controlSUITE does

    void CalAdcINL(Uint16 adc)
    {
    switch(adc)
    {
    case ADC_ADCA:
    if(0xFFFF != *((Uint16*)CalAdcaINL))
    {
    //
    //trim function is programmed into OTP, so call it
    //
    (*CalAdcaINL)();
    }
    else
    {
    //
    //do nothing, no INL trim function populated
    //
    }
    break;
    .............

    Edward