Showing results for 
Search instead for 
Did you mean: 

STM32F405RGT6 Bootloader version 0x91 UART Not working with STM32CubeProgrammer


Hi, I have been using an STM32F405RGT6 in a design for a the last ~5 years and am investigating a problem where the bootloader has stopped working at some point in production. Our design started with the 'Y' revision of the chip and previously used STM32CubeProgrammer as the bootloader. We don't use the boot pin method of entering the bootloader and instead just jump to the address during runtime to start the bootloader. The IRQ and Clock settings are reset state before jumping. This method worked on this 'Y' revision with bootloader version 0x31. 

On a more recent production run of our PCB, the chip version sourced became the '4' revision of the same chip, but now containing the 0x91 version of the bootloader. All code to jump to the bootloader is the same from the previous chip revision, however the bootloader is now not being found by STM32CubeProgrammer. I get 'Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again...'.

Looking through the Errata sheet, i don't see notes regarding any known issues bootloader entry/reentry but wanted to see if there were any suggestions on what could have changed between versions. I've reviewed AN2606 to try to find an explanation, but don't see a difference that explains why STM32CubeProgrammer doesn't 'see' the Rev '4' chip. The difference I see between bootloader 0x31 and 0x91 is that the HSI configs are different with 0x31 wanting 24 Mhz and 0x91 wanting 60 Mhz from the HSI. Am I supposed to configure the HSI before jumping to the Bootlader? We use an external 8Mhz crystal during normal operation, but UART uses the HSI correct? Any suggestion on how to debug or investigate this problem would be greatly appreciated.