cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H743AII6 Wrong temperature value from internal temperature sensor

DGall
Associate II

Hi to everyone,

I have 2 batches of a board (let's call NEW and OLD version) where internal temperature sensor of STM32H743AII6  (connected to ADC3 channel18) is used. Differences between batches are related with I/O pins (used MCO1 instead of MCO2 and 2 more I/O moved to other pins). Devices connected to changed tracks works properly. Nothing changed in power supply tracks routing or power supply stage (same dc/dc, in the same position..) . In boards produced in OLD batch I can read temperature properly, usual value is around 50-60°C due to enclosure and additional devices on board. On NEW batch the temperature value is around 260-270°C. ADC initialization and management is the same in both firmwares. Using the NEW firmware on OLD boards the measured temperature is right. In NEW boards (with wrong temperature measurement) the reference voltage Vref_Int (ADC3 channel 19) is 1,21V. I can't understand what's wrong, it seems to be something in the hardware/silicon but I have no idea. Could someone help me?

Thanks in advance

1 ACCEPTED SOLUTION

Accepted Solutions
DGall
Associate II

Hi folks, I fixed!

The working board had a STM32H743 rev Y while the NON working board had a STM32H743 rev V.

In rev. V silicon several changes has been made and a x2 hw divider has been introduced so the ADC3 clock was not correct.

Refer to AN5312 Application note (Migration from Rev.Y to Rev.V for STM32H743/753 and STM32H750 Value line microcontrollers).

Silicon revision can be read from microcontroller as follows

/** * @brief Returns the device revision identifier.

* @retval Device revision identifier

*/

uint32_t HAL_GetREVID(void)

{

return((DBGMCU->IDCODE) >> 16);

}

#define MICRO_REVISION_Z 0x1001

#define MICRO_REVISION_Y 0x1003

#define MICRO_REVISION_X 0x2001

#define MICRO_REVISION_V 0x2003

View solution in original post

7 REPLIES 7

Post the raw readout values from temperature channel in ADC, and the readout of TS_CALx ROM constants, for both "working" and "non-working" boards.

JW

Hi, below the requested values (collected at first power-on of the day) and our calculated value

"working board"

TS_CAL1 = 12229

TS_CAL2 = 15489

Temp ADC value = 11764 (19°C board just powered)

Vref ADC value = 45192 (power supply 1V8, ==> Vref 1,241V)

"NOT working board"

TS_CAL1 = 12233

TS_CAL2 = 16231

Temp ADC value = 24264 (270°C )

Vref ADC value = 44538 (power supply 1V8, ==> Vref 1,223V)

Thanks

flyer31
Senior

It might by, that one board has chip Rev V, and then other one Rev Y...

To my experience, if the boost pin for AD configuration is set, then works quite well ... otherwise difficult to get both chips running with the same code... .

DGall
Associate II

Hi flyer31,

you wrote " if the boost pin for AD configuration is set". What do you mean? Which pin are you talking about? I can't find any.

DGall
Associate II

Hi folks, I fixed!

The working board had a STM32H743 rev Y while the NON working board had a STM32H743 rev V.

In rev. V silicon several changes has been made and a x2 hw divider has been introduced so the ADC3 clock was not correct.

Refer to AN5312 Application note (Migration from Rev.Y to Rev.V for STM32H743/753 and STM32H750 Value line microcontrollers).

Silicon revision can be read from microcontroller as follows

/** * @brief Returns the device revision identifier.

* @retval Device revision identifier

*/

uint32_t HAL_GetREVID(void)

{

return((DBGMCU->IDCODE) >> 16);

}

#define MICRO_REVISION_Z 0x1001

#define MICRO_REVISION_Y 0x1003

#define MICRO_REVISION_X 0x2001

#define MICRO_REVISION_V 0x2003

VPasi.1
Associate

Hi DGall, how do you fixed the issue ? , i'm working with the STM32h7 and i have the Rev V

Sorry, stupid me, I saw this post of you only now after I checked this discussion again (just received the info of VPasi...).

I wrote "boost pin" - but this was bad ... I mean "boost mode" - see STM32H7 RM (RM0433), paragraph 5.6.2 "Voltage scaling", VOS0: Scale 0 (Vcore boost).

This needs I think 3.3V VCC (I am not sure - you have to test if you have other voltage - my PCBs HAVE 3.3V VCC).