2023-09-15 12:52 PM - edited 2023-09-16 02:34 AM
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:
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.
Solved! Go to Solution.
2023-09-16 02:53 AM - edited 2023-09-16 02:53 AM
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..
2023-09-16 02:53 AM - edited 2023-09-16 02:53 AM
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..