7
\$\begingroup\$

I recently downloaded the stm32 app for MCU search and found out that for example STM32F429 has "NO" in "USB Device" peripheral, while it says "YES" in "USB OTG FS" and "USB OTG HS". Which is quite surprising since STM32F429 is fully functional as USB Device, i.e. it supports all the libraries and USB classes.
Some other MCUs have "USB Device" stated in it, eg. STM32L052 enter image description here

Then I tried to check CubeMX and found out that there is USB_Device peripheral in their search(and again STM32F429 does not include it, USB stuff is done through OTG).

It may be quite easy question since I suspect that USB Device simply means the one that does not support OTG, but I am not sure, usually MCUs use OTG anyway(and moreover there is only one library, so why state "NO" in USB peripheral). I couldn't find information about it in google or in CubeMX documentation.

I am not really concerned much about it since USB OTG HS seems to work OK with the library, but I'm wondering about terminology.

I understand that probably ST forum is a better place for this question, but many topics there are just don't get answered or answered after 2 years have past. :)

Thanks.

\$\endgroup\$
  • 1
    \$\begingroup\$ I've had that experience with the ST forums, so I sympathise... \$\endgroup\$ – dim May 16 '16 at 12:59
  • \$\begingroup\$ Regarding that ST forum has bad contribution, it is apparently not only the forum, but also per Email, I opened a ticket about a possible mistake in one of their documentation and USB examples, but nobody (yet) bothered himself to write me back. Which is really annoying. \$\endgroup\$ – Mohammed Noureldin Jun 4 at 12:16
12
\$\begingroup\$

Your thought are correct: the devices that are marked "Yes" in the USB device column are just able to act as a USB device. They don't support the OTG spec, and they are not able to act as a host either.

But of course, any device capable of USB OTG can, on the other hand, act as a simple device. He who can do more can do less.

They identify them in this way because the "USB device", "OTG FS", and "OTG HS" are three different IP cores in the chips. They all have their particular capabilities/specs, and they may require different drivers (as you noticed).

To sum up:

  • USB device: only able to act as a device, at full speed (12Mbps)
  • USB OTG FS: able to act as a device/host/OTG peripheral, at full speed (12Mbps)
  • USB OTG HS: able to act as a device/host/OTG peripheral, at full speed (12Mbps) or high speed (480Mbps). Note that the HS core with ST MCUs require an external ULPI PHY chip to actually support high speed. The on-chip PHY can only do full speed.
\$\endgroup\$
  • \$\begingroup\$ Ok, thanks, just wanted to hear it not from my own head :) \$\endgroup\$ – ScienceSamovar May 16 '16 at 13:02
  • 1
    \$\begingroup\$ Relatedly I have an iMX system which has both "usb host" and "otg fs", giving it two usable USB ports - but they require different drivers! Something similar may apply to ST - same functionality requiring different software. \$\endgroup\$ – pjc50 May 16 '16 at 13:07
  • \$\begingroup\$ Indeed, I'm sure they have, or had in the past, devices which had multiple peripheral ports with differing feature level. This is an unambiguous way of listing the features for a range of parts (or it would have seemed so in the past) \$\endgroup\$ – Sean Houlihane May 16 '16 at 20:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.