2026-01-07 11:47 PM
Hi everyone,
I am currently trying to measure the CPU temperature using the internal temperature sensor of an STM32F733.
I am testing the device inside a climate chamber (oven) to verify the readings. I am fully aware that the datasheet states the sensor is more suitable for detecting temperature variations rather than absolute measurements. However, the values I am getting seem to have a significantly larger offset/gain error than expected.
The Setup:
MCU: STM32F733
Method: To rule out self-heating of the die, the device is kept powered OFF inside the oven until the target ambient temperature is reached and stabilized. I then power it on and immediately take the ADC measurement.
Vref+: Connected to external reference voltage (2.048V).
The Observations:
Oven at 60°C -> MCU calculates 68°C
Oven at 80°C -> MCU calculates >90°C
My Question:
Is an error of this magnitude (>10°C at higher temperatures) considered "normal" for the internal sensor of the F7 series, even when using the factory calibration values stored in the system memory?
Or am I likely missing a configuration step?
I am using the factory calibration values (TS_CAL1 @ 30°C and TS_CAL2 @ 110°C) for the calculation.
The ADC sampling time is set to comply with the minimum sampling time required for the internal temp sensor ($10 \mu s$ according to datasheet).
Any hints or experiences with the F7 internal sensor accuracy would be appreciated!
Thanks in advance.
2026-01-08 12:00 AM
This is junction temperature, not ambient - actual temp depend on acivity
2026-01-08 12:38 AM
As said above, it is quite normal that the MCU "heats up" internally as soon as it starts running.
To verify that, you could play with:
- reducing system & peripheral clock frequencies
- sleep modes
2026-01-08 12:55 AM - edited 2026-01-08 12:56 AM
I presume you've verified independently that the external VREF source is rock stable and precise even at the elevated temepratures.
> I am using the factory calibration values (TS_CAL1 @ 30°C and TS_CAL2 @ 110°C) for the calculation.
Show numbers, i.e. the two calibration values, your ADC readings at various temperatures. Try to measure a known voltage source (perhaps internal VREFINT), too.
> I then power it on and immediately take the ADC measurement.
Maybe instead of this strategy, try to run the mcu and the measurements continuously with the smallest possible power consumption - at low frequencies, all peripherals off except the vitals (ADC, maybe one timer, maybe one UART to transmit measurements, or whatever is your method), sleep between taking measurements, etc.
JW
2026-01-08 4:02 AM
> Try to measure a known voltage source (perhaps internal VREFINT), too.
What Jan said, checking VREFINT is the easiest way for monitoring VREF+, which is often = VDDA = VDD, which makes it also kinda VDDA / VDD check.
At least when you set this up correctly. :D
Also:
2026-01-08 5:29 AM
The chip heats up very fast when turned on. And at higher temperatures, this is more extreme (as the chip draws more current as it heats up, as all chips do).
There could be some errors due to sensor accuracy or voltage error but overall this seems reasonable performance. If you leave the chip on, what is the steady-state junction temperature?