cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H745II VOS with SMPS supplying LDO

DTomi.1
Senior

Greetings,

What is the reason for not being able to use the SMPS (or the SMPS supplying LDO) option for VOS0 on STM32H745II?

VOS0 means the highest voltage, so won't the dissipation on the LDO be the highest?

I have been using the PWR_SMPS_1V8_SUPPLIES_LDO option with VOS0 (core running at 480 MHz) and have seen no problem.

Can you please tell me what are the possible risks of using this configuration?

Best regards,

Domagoj

21 REPLIES 21
O'li
Associate II

With the hardware layout n°3 ("SMPS supplies LDO" in the above picture), the SMPS seems to be active:

  • VDD = 3.3V
  • VDDLDO = 1.8V
  • VCAP = 1.36V

The internal sensor returns a temperature between 55°C and 60°C.

When disabling the SMPS (firmware configuration = LDO_SUPPLY), VDDLDO and VCORE are set to 0V and the MCU remains stuck (thus I can't get the measurement)

Edit: voltage measurements were swapped

So this is the situation you have:

0693W00000bhZElQAM.pngwhich is very curious.

How can the output of a linear regulator "V reg" be higher than the input?

EDIT: did you maybe reverse the order of the voltage nets?

I have now measured on my board, VDDLDO is 1.8V and VCAP is 1.36V.

@O'li​ With the above measurements, did you see the SMPS switching?

If it is really on, you can check with a scope at pin VLXSMPS or at the side of the inductor without the cap (so not the 1.36V side).

> The internal sensor returns a temperature between 55°C and 60°C.

That is either a wrong measurement or way too hot!

Here's how I get the temperature value for H723 / H743, float input is the ADC3 temperature sensor 12 bit value, just averaged as float:

// H723 / H735
 
#define TEMPI_CAL_MULT	(float)( (float)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP) / (float)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) )
 
/* convert averaged float ADC value to temperature */
float ConvAdc2Temp(float flAdcTemp)
{
	/* calculate temperature, see reference manual */
	float flTempVal = flAdcTemp;
 
	flTempVal -= (float)((int32_t)*TEMPSENSOR_CAL1_ADDR);
	flTempVal *= (float)TEMPI_CAL_MULT;
	flTempVal += (float)((int32_t)TEMPSENSOR_CAL1_TEMP);
 
	return flTempVal;
}

@Community member​ I think he has reversed the values of voltages.

I have now measured it on my board and VDDLDO is 1.8V and VCAP is 1.36V.

And also I have confirmed that the SMPS is working, the switching node before the inductor is outputing 2.3 MHz square wave and is regulating since the duty cycle is changing.

I have the same layout n°3 ("SMPS supplies LDO" in the above picture).

Thanks for the info, that makes sense.

Have you checked internal temperature?

@Community member​ unfortunately, I don't have the ability to change the FW on this board, but I'm measuring the case temperature to be 44.7 °C using the thermocouple.

I'm using the UFBGA176+25 package and according to the datasheet, junction-case thermal resistance for that is 23.9 °C/W. Since my power consumption is 0.51 W that means that we can estimate the Tj to be 56.9 °C which is close to the lower measurement that @O'li​ has given.

Thanks for the info.

I just have my H735-DK as a comparison, running on 400 MHz, CPU sleeping about 50% of the time, with SAIs, ETH, ADC, DMA, OCTOSPI active all the time.

I just get about 32°C from internal temp sensor.

LCE
Principal

> VOS0 means the highest voltage, so won't the dissipation on the LDO be the highest?

No, but with higher current: yes. 😉

The power the LDO has to dissipate depends on the in-out difference P = (Vin - Vout) * I

So with higher Vout the difference becomes less, so would the power dissipation, if the current stayed constant - which it probably isn't.

Yes you are correct that was a brainfart, I meant higher current.

O'li
Associate II

> did you maybe reverse the order of the voltage nets?

Yes indeed, I'll edit my post to prevent further confusion

> The internal sensor returns a temperature between 55°C and 60°C.

This is also an inaccurate info from me: it actually corresponds to the junction temperature (a measurement I did earlier to estimate the MCU lifetime).

I have both cores running at max speed. The M7 CPU-load is between 80% et 90%, and the M4 handles ADCs, timers, SAIs, UARTs, QSPI, DMAs.

> you can check with a scope at pin VLXSMPS

Same as @Domagoj Tomić​, I get a 2.3MHz square wave