2024-11-02 03:52 AM
Hello,
I'm working on project with STM32H755ZIT6. Currently I use Nucleo Board, but I designed prototype board, but the board don't work. I supose that problem is caused by wrong connection for supply.
I use +3.3V from DC/DC connerter for suplly. Can someone help to find out where could be the problem?
Thank you all in advance for any tips.
Solved! Go to Solution.
2024-11-05 07:10 AM - edited 2024-11-05 07:12 AM
Because from the beginning you configured the MCU with the wrong power config.
You need to recover your board from that situation and set the correct power supply SMPS or LDO. Read this article:
For the schematics, I invite you again to look at the schematics of NUCLEO-H753ZI for LDO: https://www.st.com/resource/en/schematic_pack/mb1364-h753zi-c01_schematic.pdf
and NUCLEO-H753ZI for SMPS: https://www.st.com/resource/en/schematic_pack/mb1363-h755ziq-d01_schematic.pdf
PS: you don't need to set VOS level in two steps. Keep VOS0:
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
And remove the settings of VOS1.
2024-11-02 04:00 AM
Hello,
Need to check first your power supply config in the application versus what do you have on the HW.
2024-11-02 04:09 AM
Hello,
Please check below:
void SystemClock_Config (void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Supply configuration update enable
*/
HAL_PWREx_ConfigSupply(PWR_DIRECT_SMPS_SUPPLY);
/** Configure the main internal regulator output voltage
*/
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
/* Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure. */
/* Configure LSE Drive Capability */
HAL_PWR_EnableBkUpAccess();
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 5;
RCC_OscInitStruct.PLL.PLLN = 192;
RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLQ = 2;
RCC_OscInitStruct.PLL.PLLR = 2;
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
RCC_OscInitStruct.PLL.PLLFRACN = 0;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
}
2024-11-02 05:50 AM
From your side please review your schematics and check if there is somethong wrong with SMPS HW by comparing it to NUCLEO-H755ZI schematics: https://www.st.com/resource/en/schematic_pack/mb1363-h755ziq-d01_schematic.pdf
And according to your code you are setting the SMPS and this configuration you cannot exceed 400MHz at VOS1.
From the datasheet:
2024-11-02 05:59 AM
Thank you for your answer.
I created my schematic based on nucleo schematic, but I'm not sure if it is correct, because as I said before the prototype board doesn't work.
Do you have any example which show how configure software to run with maximal clock 480MHz?
2024-11-02 06:03 AM
For internal SMPS, the capacitors on VCAP should be pair of 100nF not 2u2F ?
2024-11-02 06:27 AM
@koyocik wrote:
Do you have any example which show how configure software to run with maximal clock 480MHz?
In SMPS configuration you can't reach that frequency. That's what I'm saying.
To reach 480MHz you need to be in LDO mode and your hardware needs to follow. Example: NUCLEO-H753 which is set in LDO config by HW.
2024-11-03 10:26 AM
Thank you for answer. Sumarize I should do as following:
1. Connect hardware same way as STM32H753 (see attachment).
2. Change software part as following:
void SystemClock_Config (void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/*!< Supply configuration update enable */
HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
/* The voltage scaling allows optimizing the power consumption when the device is
clocked below the maximum system frequency, to update the voltage scaling value
regarding system frequency refer to product datasheet. */
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
/* Configure LSE Drive Capability */
HAL_PWR_EnableBkUpAccess();
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 5;
RCC_OscInitStruct.PLL.PLLN = 192;
RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLQ = 2;
RCC_OscInitStruct.PLL.PLLR = 2;
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
RCC_OscInitStruct.PLL.PLLFRACN = 0;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
}
How should I connect pins 15 (VDDSD), 16 (VLXSD), 17 (VFBSD)?
2024-11-04 02:33 AM
Hello,
This is how to connect SMPS pins when you are in LDO mode:
From Figure 22 / RM0399:
VDDSMPS: Connect to GND.
VLXSMPS: Leave unconnected (NC).
VFBSMPS: Connect to GND.
VSSSMPS: Connect to GND.
2024-11-04 11:05 PM
Thank you for answer on that. I try wire my prototype board somehow to get this connection.