AnsweredAssumed Answered

Problems with getting an STM32F405RGT6 to enter DFU mode

Question asked by MarkT on Jan 27, 2015
Latest reply on Mar 3, 2015 by MarkT
I'm working with the STM32F405RGT6 on a custom board, trying to get the DFU mode of the ROM bootloader to work.  From my (very careful & repeated) reading of AN2606 and the STM32F4 Discovery schematic my design should enter DFU mode when I take it out of reset with BOOT0 high, BOOT1 low, and USB (but no other comms) connected, but it doesn't.

In order to explore the problem in a space in which I'm reasonably certain that no other hardware will interfere, I've assembled a small test board that mounts an STM32405RGT6, a JTAG port, a USB port, a /RESET button and a BOOT0 button. BOOT1 is pulled low and there are pullup/down (selectable as to which) 10K resistors on each of the GPIO's nominated in AN2606: PA10, PB5, PB11, PC11 (exception: PA10 has only a pulldown).  Operating voltage is 3.3V, I'm using an 8MHz crystal, and my dev environment is Keil Pro 5.12.  Using JTAG I can program the STM32 with a simple firmware build (a commandline console via a USB CDC Device implementation), so I'm satisfied that the MCU and the USB implementation are working perfectly well.

If I hold down the BOOT0 button (driving it high) then cycle /RESET, the STM32 launches into the ROM bootloader.  I know that it's going into the bootloader because by debugging the MCU I can see that it starts not at the Reset handler but at 0x1fff3da0 (presumably the Reset handler for the bootloader) and as soon as I release BOOT0 the CDC device enumerates.

I don't see how it can be related to firmware, because starting from an almost identical firmware build (a simple command line accessed via CDC VCP) running on an STM32F407 Discovery, I have no difficulties causing the Disco to enter DFU mode.  My suspicion is that there is something missing from AN2606 regarding hardware requirements for DFU in an STM32F405.

To my actual question, then: What might I have missed, or what is missing from the documentation?