2022-02-20 04:37 AM
2022-02-20 05:42 AM
Voltages and capacitors of VCAP pins.
BOOT0 pin pulled-low.
Level of NRST pin
Settings for LDO/SMPS and VOS in SystemClockConfig()
Flash settings
External clock vis HSE_VALUE define,
Stuck in Error_Handler() or HardFault_Handler()
One could perhaps use a debugger and see where things are stuck, use LED, GPIO or UART to indicate progress into code.
2022-02-20 07:03 AM
This may or may not help:
When I make an L4 board, the first attempt to load and debug hangs after load and never gets to main.c. After cycling power, the next attempt loads and initializes OK.
Cheers, Hal
2022-02-20 07:29 AM
Voltages and capacitors of VCAP pins. - yes
BOOT0 pin pulled-low. - via 10K resistor
Level of NRST pin - 3.3V
Settings for LDO/SMPS and VOS in SystemClockConfig() - what do you mean
Flash settings - 2 ws
External clock vis HSE_VALUE define, - we are using internal clock
Stuck in Error_Handler() or HardFault_Handler()
One could perhaps use a debugger and see where things are stuck, use LED, GPIO or UART to indicate progress into code. - we cant use the debugger it is look that we dot have clock
2022-02-20 07:49 AM
when you say power cycling what do you mean ?
2022-02-20 08:26 AM
2022-02-20 09:10 AM
You said you could program/verify, processor is working. You should be able to step through Reset_Handler, ie don't "Run to main()"
VCAP should be around 1.25V
The power supply settings should be consistent with the design. You've shared nothing of the code or design. If you're using the internal LDO, make sure that's selected.
Two wait states at what speed? Should be at least 4 for 400 MHz
static void SystemClock_Config(void)
{
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
HAL_StatusTypeDef ret = HAL_OK;
/*!< Supply configuration update enable */
HAL_PWREx_ConfigSupply(PWR_DIRECT_SMPS_SUPPLY); // <<< THIS CORRECT?
/* 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)) {} // <<< STUCK HERE??
Does it run if you don't reconfigure any of the clocking? Should run at 64 MHz using HSI, without you touching anything.
2022-02-20 09:58 AM
thanks for the fast answer
we are running internal clock 64Mhz.
2 wait state
voltage scale 2
the code :
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_SCALE2);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_DIV1;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
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_HSI;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV1;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
{
Error_Handler();
}
2022-02-20 10:08 AM
Does your design use SMPS?
2022-02-20 10:10 AM
Complete removal of power sources.
If the H7 parts get completely hung up, you might have to pull BOOT0 HIGH, and cycle the power a couple of times to recover.
The H7 parts also differentiate between a reset button press, and a reset caused by being powered up. Most specifically deciding whether to run from ROM or FLASH. It will run from ROM if the FLASH looks to be blank.