Showing results for 
Search instead for 
Did you mean: 

STM32f446 Usb Dfu Bootloader Problem at High Temperature

Associate II


Thank you in advance for your assistance.

I have designed a circuit with STM32F446. I am using an external 25MHz crystal. The main application program runs fine without any issues, and USB communication works. However, on some boards, I am unable to put the processor into USB DFU mode. I have several boards, and most of them enter DFU mode correctly. I am controlling the Reset and Boot pins externally with another microcontroller. I am monitoring the NRST and BOOT0 pins with an oscilloscope, and there seems to be no problem.

I have also tried using a 10MHz crystal with 20pF capacitors, but still couldn't get the processor into DFU mode. I even tried the UART bootloader method by disconnecting the USB cable, but I still fail to get a response from the processor to the 0x7F command.

As mentioned earlier, DFU mode works perfectly fine on many other boards. However, despite checking everything, I am unable to put the processor into DFU boot mode on some boards.



Uwe Bonnes
Principal II

I see few if any pull resistors on the other pins related to bootloader entry. Maybe some floating pin is toggling and some other bootloader mode is entered.

Hi Dear Bonnes. I've double checked the bootloader relative pins. And I pulled high CAN2 Rx pins already to be ensure.

But I've noticed today that the MCU does enter DFU mode when the temperature is low. If I heat the MCU by using hot air, it doesn't enter DFU and UART bootloader. 

I had doupts about external crystal. Bu I read the document and it says the MCU use internal OSC when it doesn't detect USB cable and enter into uart bootloader. 

Even if I try to enter UART bootloader, the mcu doesn't reply to 0x7F when the ambient temperature is high. After a while and make the mcu cool, it can enters into DFU and UART bootloader...

Maybe the crystal has sloppy tolerances and only is inside the USB spec with low board temeratures? Does the crystal oscillate at all or does it start up very slow? Are the 10 pF load for the crystal what is calculated  or is that some standard value you use(AN2867)? Cold solder joints? Some supply voltage at an exteme end?

Dear Bonnes,

I've tried with different crystals and different crystal load capacitors. It works on main program and I see the crystal is working fine.

Today, I added some initialize code for manuel jumping to Bootloader(0x1FFF000)...

In this way, the mcu jumps to dfu bootloader and everything works fine.

But I am not able to enter DFU with using reset and boot pin.

Thanks for your helps, btw...