cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747-DISCO cannot run at 480MHz

filipxsikora
Associate

Hi,

I have bought the STM32H747-DISCO kit for testing and I want to test at the max frequency (480MHz). I'm aware of the requirements for the 480MHz, I have followed the user manual:

filipxsikora_0-1694806637950.png

Desoldered and soldered relevant SBs for LDO operation.

Updated the code to use the LDO, set the 'VOS 0':

 

if (HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY) != HAL_OK)
{
	return false;
}

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);

while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY))
{
}

HAL_RCC_DeInit();

/* Enable HSE Oscillator and activate PLL with HSE as source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
RCC_OscInitStruct.CSIState = RCC_CSI_OFF;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

/* PLL1 for System Clock */
RCC_OscInitStruct.PLL.PLLM = 5;
RCC_OscInitStruct.PLL.PLLN = 192;
RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLR = 2;
RCC_OscInitStruct.PLL.PLLQ = 4;

RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOMEDIUM;
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
	return false;
}

 

HSE frequency is 25MHz (obviously). Yet the application always fails inside 'HAL_RCC_OscConfig', precisely at line 833 of 'stm32h7xx_hal_rcc.c', STM32H7 FW package 1.11.0 -> Github link (wait for PLL ready timeouts).

At 400MHz (PLLN = 160 @ VOS1) works absolutely fine. I was able to push to around 420MHz @ VOS0, any further and the PLL ready is timeouting. Any ideas ?

Thanks for any help.

1 ACCEPTED SOLUTION

Accepted Solutions
filipxsikora
Associate

Well, stupid me.. I have missed the PLL VCO Configuration.

 

//Shall be VCO WIDE
//RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOMEDIUM;

RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;

 

Maybe it will help somebody, to pay attention to that setting as well. This post was my last resort, I have spent like a week on that..

View solution in original post

1 REPLY 1
filipxsikora
Associate

Well, stupid me.. I have missed the PLL VCO Configuration.

 

//Shall be VCO WIDE
//RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOMEDIUM;

RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;

 

Maybe it will help somebody, to pay attention to that setting as well. This post was my last resort, I have spent like a week on that..