Precision of SoC temperature measurement on VF61

This document describes how to get the SoC temperature on VF61 running WinCE.

If I’m right, in the normal working conditions the LSB of the internal ADC is more or less 2°C, and so this produces a flickering of more or less 2°C of the measured temperature.

As an example:

  • using the formula in the Toradex KB, when ACD is 208 the temperature is 53.4°C.
  • when the ADC is 209, the temperature is 51.6°C.

It seems that the temperature range mapped to 10-bits ADC is too large.

Is this the expected behavior?

Dear @vix

This limitation is given purely by the VF61 SoC, we try to measure small voltage changes with a 3.3V fullscale ADC. The temperature measurement happens all inside the CPU:
I looked up the datasheet, the values there are slightly different from the code on the developer site.

The temperature sensor is an on-chip silicon diode with the following characteristics:

  • Forward voltage @25°C: V_TEMP25 = 696mV
  • Temperature Slope: m = -1.84mV/°C

The ADC characteristics are:

  • ADC reference voltage V_REFH = 3300mV
  • LSB voltage @10bits = V_LSB = (V_REFH / 2^10)

The measured temperature can be calculated as follows:

V_ADC = adcValue * V_LSB
      = adcValue / 2^10 * 3300mV
T_CPU = 25°C + (V_ADC - V_TEMP25) * m
        25°C + (V_ADC - 696mV) * (-1.84mV/°C)

You can try to measure using 12bits (Simply adjust the 2^10 term in the equation above). I didn’t verify whether the additional resolution is really helpful, or just overruled by noise.

Also note that V_TEMP and m are just typical values. For a precise measurement, they need to be calibrated for each individual device.

Regards, Andy