2019-09-05 05:49 AM
I have an STM32H747i-Eval board, I am unable to flash/access the MCU using any of the STM32 tools like,
18:07:28 : Can not connect to target!
Please select "Connect Under Reset" mode from Target->Settings menu and try again.
If you're trying to connect to a Discovery board, please select SWD mode from Target->Settings menu.
18:07:30 : No target connected
18:10:04 : STM32CubeProgrammer API v2.1.0
18:10:07 : ST-LINK SN : 002C00243137511133333639
18:10:07 : ST-LINK FW : V3J4M2
18:10:07 : Voltage : 3.26V
18:10:07 : No STM32 target found!
18:10:07 : ST-LINK SN : 002C00243137511133333639
18:10:07 : ST-LINK FW : V3J4M2
18:10:07 : Voltage : 3.27V
18:10:07 : Error: No STM32 target found!
But my other Nucleo_F746zg board seems to connect without any problems.
Looks like I am able to access stlink but not the MCU.
2019-09-17 11:49 PM
Resolved the the above issue with the following steps.
- Power off the board
- Change the SW1 switch position on the STM32H747I-EVAL to position 1 (Sys mem)
- This will change the boot pin to 1 instead of 0 and thus the device boot address will
be changed to boot address 1 making the bootloader starting instead of the FW in the flash
(FW that is setting a wrong LDO/SMPS config versus the HW board config)
- Power on the board and connect using STM32CubeProgrammer
- Erase the user FLash
- Power off the board and set the SW1 switch position back to position 0 (for boot address 0)
- The board is now recovered and can proceed normally.
This issue occured after I generated src code using STM32CubeMx which configure the clock to 480MHz and flashed the code.
I found this snippet in FPU_Fractal Application src code.
/*
!!!Attention!!!
Overclocking the system clock to 480MHz is only available with LDO PWR configuration
by default The STM32H747I-EVAL comes with DIRECT_SMPS configuration
in order Overclock the system clock to 480MHz to the eval board must modified
to change the PWR path to LDO instead of DIRECT_SMPS
to do so please change the following solder bridges :
- LDO config :
Mount : SB13, SB23, SB18
Removed : SB14, SB16, SB20, SB10, SB17, SB53 and L1
- Direct SMPS config :
Mount : SB14, SB20, SB10, SB53 and L1
Removed : SB13, SB17, SB23, SB16, SB18
Note that the Board HW configuration must match with the FW config
if not will face a deadlock (can't connect the board any more)
the FW PWR configuration correspond in the main.c to the following :
Function SystemClock_Config :
- case of LDO config : HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
- case of Direct SMPS config : HAL_PWREx_ConfigSupply(PWR_DIRECT_SMPS_SUPPLY);
BOARD_HW_CONFIG_IS_LDO and BOARD_HW_CONFIG_IS_DIRECT_SMPS defines are used to confirm the
board HW setting :
- Set BOARD_HW_CONFIG_IS_LDO to 1 and BOARD_HW_CONFIG_IS_DIRECT_SMPS to 0 to confirm that
the board is configured in LDO
- Set BOARD_HW_CONFIG_IS_LDO to 0 and BOARD_HW_CONFIG_IS_DIRECT_SMPS to 1 to confirm that
the board is configured in direct SMPS
if a dead lock is faced due to a mismatch between the HW board setting and the FW setting (LDO,SMPS)
user can recover the board by the following :
- Power off the board
- Change the SW1 switch position on the STM32H747I-EVAL to position 1 (Sys mem)
- This will change the boot pin to 1 instead of 0 and thus the device boot address will
be changed to boot address 1 making the bootloader starting instead of the FW in the flash
(FW that is setting a wrong LDO/SMPS config versus the HW board config)
- Power on the board and connect using STM32CubeProgrammer
- Erase the user FLash
- Power off the board and set the SW1 switch position back to position 0 (for boot address 0)
- The board is now recovered and can proceed normally.
*/
Note: Bootloader will never start using reset button after setting bootpin to 1. Only complete power off and power on of the board works.