cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to communicate with the STM32H747i MCU

VishwasM
Associate

I have an STM32H747i-Eval board, I am unable to flash/access the MCU using any of the STM32 tools like,

  • STlink utility
    • I get the following error when i try to connect

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

  • STcubeProg
    • I get the following error.

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!

  • Flash loader(with SW1 switch set to boot to system memory and reset)
    • No response from target, the boot loader cannot be started

But my other Nucleo_F746zg board seems to connect without any problems.

Looks like I am able to access stlink but not the MCU.

1 REPLY 1
VishwasM
Associate

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.