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.

Internal Temperature Sensor TMS320F28035



Hi,

How do I calculate the Temperature out of the ADC Value from the Internal Temperature Sensor?

The description in Datasheet SPRUGE5B (Page 39) tells me the Offset an the Slope for calculation are in Memory 0x3D7E82 and 0x3D7E85. But the Memory Addresses do not exist. In the main Datasheet for F2803x (SPRS584B) there is also the Information the Memory Area is Reserved

somebody with an solution?

greetings

Chris

  • If the documented addresses are correct, then you cannot access the locations because the default gel files does not permit it. These locations follow the PartIDRegs and the default gel file lists this block as only one word. If you extend  the length of this memory block in the gel file then you can then access the locations from the debugger. After doing this I can read these locations but they are all 0xffff. This could be because all of my parts are TMX and not TMS and these calibration values may not have been written in the TMX devices.

    Of course the documentation could be wrong. The documentation section for calibration values is 0x3d7c80 and there are plenty of unused locations there. But there is code from 0x003d7c80 - 0x3d7c92 so these are unlikely to contain calibration data.

    If our TMS devices ever ship I'll let you know whether they have valid calibration values.

     

  • Wally is correct, these values do not exist on TMX devices, but will be supported on TMS silicon for the 2803x.  This is true as well for the internal oscillator compensation functions.  All of this data is programmed at the factory into the OTP, these routines were not online for initial silicon/TMX devices.

    Best,

    Matthew

  • hallo,

    we're going to implement a Controlcard kit iwth 28035 mcu in a prototype we're building.

    i would like to use the temperature sensor.

    I also noticed that the functions point to empty space in memory :

    //Slope of temperature sensor (deg. C / ADC code, fixed pt Q15 format)
    #define getTempSlope()  (*(int (*)(void))0x3D7E82)()
    //ADC code corresponding to temperature sensor output at 0-degreesC
    #define getTempOffset() (*(int (*)(void))0x3D7E85)()

    is there some ampirical way i can find the slope and offset ?

    let's say i know that the chip is in the ambient temp...

    thanks

    Ari.

  • The functions you mention will not be populated until TMS silicon timeframe.  In the meantime, since the temperature sensor profile is repesented by linear slope/offset you can use a two point temperture reading to generate these yourself. 

    Best,

    Matthew

  • ok...

    but how can i tell the real temperature inside the chip ?

    the offset is easy, need to measure only once when i know the chip is in ambient temperature...

  • You'll need two things; below table showing thermal coeffs for the 28035 and this document to translate case temperatures to the junction temp measured by the temp sensor:

    http://focus.ti.com/lit/an/spra953a/spra953a.pdf

     

     

     

     

  • Hello,

    I am trying to use your 'Internal Oscillator Compensation Functions' (an application note dated at October 1, 2009) in order to be able to use the internal clock and CAN bus working 1 Mbps and be sure I will not get timings problems because the clock frequency drift.

    The problem is that, not only the functions is pointing void addresses, but also the Code Composer is unabled to access these addresses, showing the message 'Error code 0x5: Memory access not attempted by the driver (Check memory map), Memory Protection Flags: [Read Protected, Write Protected]'.

    I was trying to find the error searching in the Code Composer help, the datasheets, the TI Community, etc, but unfortunatelly I have not get the solution.

    Please, any help will be welcomed.

    Regards,

  • Miguel said:

    Hello,

    I am trying to use your 'Internal Oscillator Compensation Functions' (an application note dated at October 1, 2009) in order to be able to use the internal clock and CAN bus working 1 Mbps and be sure I will not get timings problems because the clock frequency drift.

    The problem is that, not only the functions is pointing void addresses, but also the Code Composer is unabled to access these addresses, showing the message 'Error code 0x5: Memory access not attempted by the driver (Check memory map), Memory Protection Flags: [Read Protected, Write Protected]'.

    I was trying to find the error searching in the Code Composer help, the datasheets, the TI Community, etc, but unfortunatelly I have not get the solution.

    Please, any help will be welcomed.

    Regards,

    Miguel,

    There are factory programmed variables in the OTP that the calibration uses(both for the temp sensor and the oscillator).  These are present in TMP and TMS versions of silicon for 2803x and TMS only for 2802x devices.  If you are using TMX silicon these are not programmed, and the routines cannot be used.  Can you confirm what silicon you have?

    Best,

    Matthew

  • Matthew,

    Many thanks for your quick reply. I have checked the chip and you are right: the chip is labeled TMX. I'm going to start the test again using a TMP chip.

    The Code Composer, however, goes on showing the same error when I try to see the value of these memory addresses. It seems as if it is not able to do it, but I can not get any information about this error.

    Regards,

     

  • Hi Matthew,

    Are these factory programmed variables available in the silicon TMS 28035 revision 0?.

    Thanks

    BS

  • Yes, as long as the package designator is NOT TMX it is there for revision 0 of 2803x device.

    Matt

  • I also have trouble running the TempSensorConv sample for the 28027. Stops on ILLEGAL_ISR when trying to call the getTempSlope and/or the getTempOffset calibration routines.

    From the sample code:

    // The folloing pointers to function calls are:
    //Slope of temperature sensor (deg. C / ADC code).  Stored in fixed point Q15 format.
      #define getTempSlope() (*(int (*)(void))0x3D7E80)()
    //ADC code corresponding to temperature sensor output at 0 deg. C
      #define getTempOffset() (*(int (*)(void))0x3D7E83)()

    These functions point to the "Calibration Data" section in the 28027 memory map.

    On my device this memory area reads as all 0xFFFF. Does this mean that it is a TMX chip? The chip marking is "X320 980 F28027PTA" and its on a Piccolo Control card marked "ControlCARD Release 1.0".

    I would assume that it is a TMX since the memory area 0x3D7E80 -- 0x3D7EAF is unprogrammed. However, the PARTID register (0x3D7FFF) reads 0x00CF which would indicate a TMS320F28027PT which is a TMS and therefore should have this memory area programmed with something? Very confusing. Or is the TMS/TMX only indicated on the external package marking and never in the silicon PARTID register?

    /Mikael

     

  • Hi Mikael,

    Yes your device is most likely an TMX device. The Partid Register does not define the silicon revision but the Silicon version does. Read out adress 0x883 - a "0" would indicate a TMX device, a "1" a TMS Device. See silicon errata document of your processor for further reference.

    Best regards

    Andreas