2025-04-25 7:48 AM
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:
Bootloader Configuration:
Tried multiple variations of Pattern 6 (per AN2606, Table 2) for the STM32F070C6.
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).
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?
2025-04-25 3:00 PM - edited 2025-04-25 3:02 PM
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.
2025-04-28 5:06 AM
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
2025-04-29 5:59 AM
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).
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.
2025-04-29 9:31 AM
@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.