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.

TMS320F2800157-Q1: temperature sensor OTP values all 0's

Part Number: TMS320F2800157-Q1


Hi BU experts, 

Customer and I both tested the sample chip (customer part number is XF2800157QPMQ $7A-2CA9DE), and found that when calling "GetTemperatureC" to get the junction temperature, the result was not right. And we finally found that it is caused by both ADC_EXT_REF_TSSLOPE and ADC_EXT_REF_TSOFFSET are zero. 

//
// Defines
//

#define ADC_EXT_REF_TSSLOPE  (*(int16_t *)((uintptr_t)0x701C8)) //Slope of temperature sensor
#define ADC_EXT_REF_TSOFFSET (*(int16_t *)((uintptr_t)0x701C9)) //Temperature offset

#define ADC_INT_REF_TSSLOPE  (*(int16_t *)((uintptr_t)0x701CA))
#define ADC_INT_REF_TSOFFSET (*(int16_t *)((uintptr_t)0x701CB))

//
// GetTemperatureC - This function uses the reference data stored in OTP to
//                   convert the raw temperature sensor reading into degrees C
//
int16_t GetTemperatureC(uint16_t sensorSample)
{
    float32_t temp;
    temp = (float32_t)((tempSensor_scaleFactor / 2.5F) * sensorSample);

    //
    //Read the Slope and Offset from OTP
    //
    tempSensor_tempSlope = ADC_EXT_REF_TSSLOPE;
    tempSensor_tempOffset = ADC_EXT_REF_TSOFFSET;

    return((int16_t)((((int32_t)temp - tempSensor_tempOffset) * 4096) /
            tempSensor_tempSlope));

}

I want to check with you if the above OTP address are right or not, or was TI missing to burn the OTP value into this sample chip part number? 

Regards, 

Will 

  • BTW, I have another question: when temperature higher than the max temperature in datasheet, does the device itself have protection mechanism to lock/power-off itself? Or this is responsible by application? 

  • Will,

    It looks like the OTP locations used in our header files are incorrect.  Please have the customer replace with the lines below and retry the temp sensor function:

    #define ADC_EXT_REF_TSSLOPE  (*(int16_t *)((uintptr_t)0x710D3)) //Slope of temperature sensor
    #define ADC_EXT_REF_TSOFFSET (*(int16_t *)((uintptr_t)0x710D4)) //Temperature offset
    
    #define ADC_INT_REF_TSSLOPE  (*(int16_t *)((uintptr_t)0x710D5))
    #define ADC_INT_REF_TSOFFSET (*(int16_t *)((uintptr_t)0x710D6))
    

    For your second question, an over temperature condition has to be handled by the application, either backing off the CPU speed to drop the current or otherwise.  There is no on-chip HW to take action automatically.

    Best,

    Matthew