cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F373 USB DFU does not identify with USB C adapter, does identify without adapter

Dazai
Associate II

We have a custom design using a STM32F373 and USB (USB micro connector). In the past this board has been updated via USB DFU and DFuSe Demo.

I am trying to use USB DFU to program the board in STM32CubeProgrammer v2.16, but it appears when the board is plugged into a USB C adapter, it does not correctly identify in Windows 11 64-bit (USB Device Descriptor Request Failed).

I've tested this board on 4 different PCs which make me think the USB C adapter and/or Windows 11 is causing the problem:

- The board correctly identified on PCs 1 and 2, which had USB A sockets and Windows 10.  Board connected using USB micro to USB A cable.

- The board failed to identify on PCs 3 and 4, which had USB C sockets and Windows 11.  Board connected using USB micro to USB A cable, and a USB A to USB C adapter (hub).

 

Is the system memory USB DFU bootloader compatible with USB C/USB 3.0?

Are there any known problems using USB A to C adapters with the USB DFU bootloader?

 

Notes on PCB design:

- USB D+/D- on STM32F373 are connected to the micro USB port's D+/-.

- USB D+ has a 1.5k ohm pullup resistor, connected to USB 5V.

- STM32F373 power during programming supplied by USB 5V, shifted to 3.3V by a linear regulator.

 

EDIT: This Adafruit USB C to USB Micro cable description states "Internally it has a 5.1Kohm pulldown, to make the USB C port configure itself for 5V, 500mA USB 2.0 standard," what is the pulldown on? I'm going to purchase this cable and see if I have better results, perhaps the adapters are trying to run at USB 3.0 speeds instead of USB 2.0.

https://www.adafruit.com/product/3878

 

EDIT2: For anyone else that might be having this problem, a USB C to USB Micro cable (no hub/adapter) fixed the issue for me and the device identifies correctly now.

1 ACCEPTED SOLUTION

Accepted Solutions
AScha.3
Chief

>- USB D+ has a 1.5k ohm pullup resistor, connected to USB 5V.

Really to 5V ?? Thats WRONG ! 

USB D+ -> 1.5k ohm pullup resistor to 3V3 !

+

try a USB-C -> micro-B  cable , like this :

https://www.reichelt.de/usb-2-0-kabel-c-stecker-auf-micro-b-stecker-1-m-logilink-cu0197-p348554.html?&trstct=pos_2&nbc=1

AScha3_0-1715366918295.pngAScha3_1-1715366949152.png

+

ed

Yes, the  Adafruit USB C to USB Micro seems similar , try it.

If you feel a post has answered your question, please click "Accept as Solution".

View solution in original post

4 REPLIES 4
Uwe Bonnes
Principal III

I suspect the USB A to C adapters has a reduced wiring, causing the problems. Check other adapters.

Thank you for the reply, I should have mentioned in the OP that I've tried numerous USB A to C adapters, including a Dell USB C dock, two different Dell USB A to C adapters, and another USB A to C hub by a company called Cowzuc, and the USB Device Descriptor request failed with all of them.  I've used the Dell dock and adapter with other USB devices successfully.

AScha.3
Chief

>- USB D+ has a 1.5k ohm pullup resistor, connected to USB 5V.

Really to 5V ?? Thats WRONG ! 

USB D+ -> 1.5k ohm pullup resistor to 3V3 !

+

try a USB-C -> micro-B  cable , like this :

https://www.reichelt.de/usb-2-0-kabel-c-stecker-auf-micro-b-stecker-1-m-logilink-cu0197-p348554.html?&trstct=pos_2&nbc=1

AScha3_0-1715366918295.pngAScha3_1-1715366949152.png

+

ed

Yes, the  Adafruit USB C to USB Micro seems similar , try it.

If you feel a post has answered your question, please click "Accept as Solution".

@AScha.3 wrote:

>- USB D+ has a 1.5k ohm pullup resistor, connected to USB 5V.

Really to 5V ?? Thats WRONG ! 

USB D+ -> 1.5k ohm pullup resistor to 3V3 !


Yeah that seemed weird to me (we inherited the design), since the micro is running on 3.3V, and I don't see the USB D+/- lines from the connector being level shifted so presumably they range from 0-5V? Strange that it works on some PCs anyway, but I've seen weirder things.

I'll get one of those cables and see if it helps, and see if there's a way to pullup to 3.3V instead.