cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F070C6 USB bootloader issue on custom board

diego_bouvier
Associate II

I am unable to get the USB bootloader to work on a custom board with an STM32F070C6. This board uses an 8 MHz crystal (chosen to avoid HSI issues when the HSE frequency is too high—due to space constraints, a lower-frequency crystal is not an option).

For reference, I have another custom board (nearly identical in design) with an STM32F070F6, where the USB bootloader works correctly. On that board:

  • With a 16 MHz crystal, the USB bootloader fails.

  • With an 8 MHz crystal, the USB bootloader works as expected.


The device is connected via a USB hub to account for the USB HUB issue.

Tests Performed:

  1. Bootloader Configuration:

    • Tried multiple variations of Pattern 6 (per AN2606, Table 2) for the STM32F070C6.

  2. Crystal Validation:

    • Swapped crystals between the STM32F070C6 and STM32F070F6 boards to rule out crystal defects.

    • Measured crystal capacitor values to ensure proper loading.

    • Verified HSE and PLL functionality using a test firmware (confirming the crystal itself works).

  3. USB Functionality Check:

    • Loaded a Virtual COM Port example code—USB communication works, ruling out hardware connection issues.


Despite these tests, the USB bootloader still fails, consistently returning the error:
USB\VID_0000&PID_0002\7&1062C37C&0&1


Has anyone encountered similar issues with the STM32F070C6 USB bootloader? Are there additional configuration steps or hardware considerations I might be missing?

4 REPLIES 4
Pavel A.
Evangelist III

Error "USB\VID_0000&PID_0002" ?  This looks like error reading the device descriptor, for whatever reason - hardware or firmware. So Windows cannot even recognize the device.

 

 

Hi Pavel,

Thank you for your response.

I understand the implications of the VID_0000&PID_0002 error. My question is specifically whether others have encountered this issue with the STM32F070C6 MCU. Since the firmware in question is the built-in USB bootloader (unmodifiable), I’ve already ruled out most common hardware-related causes, such as:

  • Crystal oscillator configuration (HSE/PLL stability).

  • USB signal integrity/power delivery.

At this point, I’m seeking insights into potential MCU-specific quirks or overlooked bootloader requirements. Have you or others observed similar behavior with this model?

Best regards

diego_bouvier
Associate II

Follow up.

I've captured and decoded the USB communication using a logic analyzer. Here is a comparison between the STM32F070F6 (Working) and STM32F070C6 (Not working).

diego_bouvier_0-1745931294979.png

In the working MCU (STM32F070F6), after the first DATA0 there is an ACK, while in the other case (STM32F070C6) there is not. I think the MCU USB bootloader is not working and never replies to the PC.


@diego_bouvier wrote:

Since the firmware in question is the built-in USB bootloader (unmodifiable), I’ve already ruled out most common hardware-related causes, such as:

  • Crystal oscillator configuration (HSE/PLL stability).

  • USB signal integrity/power delivery.

But you have a custom board, so all bets for the hardware are off. The built-in bootloader, like any other software, works well only if its assumed environment conditions are met.

Indeed, the sniffer log shows that the device never responds to the descriptor read request.