Skip to main content
MZina.1
Associate II
July 28, 2026
Question

STM32U375KGU6 D+ pull up

  • July 28, 2026
  • 4 replies
  • 96 views

On STM32U375KGU6 pull up on D+ does not work when calling function HAL_PCD_Start, USB hardware works because if I start chip with BOOT0 pin to “VDD” it boots in DFU bootloader. What did I miss?

4 replies

Senior III
July 28, 2026

The DFU bootloader working confirms the USB pins and hardware path, but it does not prove your application has enabled the USB power domain.

On STM32U3, the USB transceiver is isolated after reset. Ensure VDDUSB is present and enable it before initializing USB:

HAL_PWREx_EnableVddUSB();

Also verify:

  • The 48 MHz USB kernel clock is enabled and selected.
  • D−/D+ are configured with the correct alternate function.
  • USB device middleware/class initialization runs before HAL_PCD_Start().
  • VBUS sensing matches your hardware configuration.

I would compare the power and clock initialization against a minimal CubeMX-generated USB device project. ST specifically notes that the USV bit must be set to remove USB-domain isolation once VDDUSB is valid: STM32U3 hardware-development note.

This custom STM32 board-design tutorial is also useful for reviewing the USB connector, MCU power and supporting circuitry. However, the STM32U375-specific requirement is enabling the VDDUSB domain and clearing its isolation through the USV bit.

MZina.1
MZina.1Author
Associate II
July 29, 2026

Seems like problem is with CubeMX, if you select option “Generate peripheral initialization as pair of ‘c./h.’ files” it does not generate call to HAL_PWREx_EnableVddUSB, but when this option is not enabled call is generated, should we report bug in CodeMX?

 

 

ST Technical Moderator
July 29, 2026

Hi ​@MZina.1 

First, Thank you for the question!
Second, there is no need to add pull up resistor as it is already embedded as explained in the reference manual.

Second, did you follow the example provided here, in the initialization you should see the generated code as in the example. Otherwise, attach your ioc to reproduce and report the issue.

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
MZina.1
MZina.1Author
Associate II
July 29, 2026

As I said, problem is with CubeMX v6.18.0 generated code, if you enable “Generate peripheral initialization as pair of ‘c./h.’ files” HAL_PWREx_EnableVddUSB is not called and USB peripheral is off.