Scratching my head on this one. I am using a Nucleo H743ZI2 board.

The manual claims it is recommended to use an external power source when using the USB OTG port. Up until now I was using the STLink USB as it was the most convenient when testing things out.

I am getting ready to port the project into the actual system and am using the only available power source, a 3.3V from a shield.

According to the manual (chapter 6.4.5) this is fine:

When the 3.3 V is provided by a shield board, it is interesting to use the 3V3 (CN8 pin 7 or CN11 pin 16) directly as power input (Refer to Table 9 and Figure 14). In this case, programming and debugging features are not available, since the STLINK-V3E is not powered.

However, this either fails to mention that using a 3.3V source will prevent the USB OTG from enumerating, or I must be missing something obvious.

edit: the datasheet also gives this warning in the USB OTG FS chapter (6.6.6), not sure if it's relevant to the issue though.

Warning: USB Micro-AB connector (CN13) cannot power the Nucleo- 144 board. To avoid damaging the STM32H7, it is mandatory to power the Nucleo-144 before connecting a USB cable on CN13. Otherwise, there is a risk of current injection on STM32H7 I/Os.

  • \$\begingroup\$ Is the STM32 functioning as the USB host or device? If as the host, you must be able to supply 5v power on the USB connector to the device. \$\endgroup\$ Sep 29, 2020 at 20:44
  • \$\begingroup\$ thanks for the comment. the STM32 USB OTG is configured as a device. \$\endgroup\$
    – zytra
    Sep 29, 2020 at 21:06
  • \$\begingroup\$ Is your software monitoring VBus through PA9 and appropriately activating the enumeration pullup? Does the host see that something has been plugged in but fail to read the descriptors, or does it not even notice that anything purporting to be a USB device has been connected? What firm evidence do you have that your MCU firmware is even running? \$\endgroup\$ Sep 29, 2020 at 21:09
  • \$\begingroup\$ I have a couple indications that the H7 is running (I have a couple of debug LED's, and it's correctly communicating with the board supplying the 3.3). Nothing is happening on the computer when the USB is plugged in, no new device is added to the device manager, no chime, etc). I do have Vbus and SOF disabled. The only way I get the device to be recognized is when I also connect the STlink USB which effectively powers the nucleo with 5V from the STlink USB. I haven't tried using a 5V external source, I don't have any 5V source on this system \$\endgroup\$
    – zytra
    Sep 29, 2020 at 21:21
  • \$\begingroup\$ First thing to realize is that simply connecting a resistor from D+ to VBus will cause a computer to think a USB device has been plugged in and try to read out its descriptors (or D- for low speed). So if that isn't happening, the MCU software isn't applying its (in this case apparently internal) pull up resistor, typically because the firmware is not running, wrong, or not managing to monitor the USB VBus. \$\endgroup\$ Sep 29, 2020 at 21:23


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.