December 5, 2020

USB - Introduction

What do I know getting started? I know there is USB 2 and USB 3. I intend to ignore USB 3 throughout all of this. My STM32 chips don't support it and I am happy to reduce what I need to learn at this stage.

Before I go any further, let me grind an axe. Whoever invented that stupid rectangular (USB A) connector ought to be shot, or at least go down in infamy. I don't think a single piece of technology has annoyed me more and more consistently over many years than this ridiculous thing that looks like I can be plugged in either way. I good example of how not to design something.

The STM32 chips describe their USB subsystem as "USB OTG", i.e. "USB On The Go". As near as I can tell this involves a few extentions to the USB standard and allows a device to act as either a master or a slave.

The USB subsystem in the STM32 gets a 48 Mhz clock and must get a clock at this rate to function properly.

My primary resource is Chapter 22 in the reference manual for the STM32F411. This is RM0383 from ST; an 844 page document. Chapter 22 extends from page 668 to page 806 (138 pages). The Chapter title introduces the acronym "OTG_FS" for "On the Go, Full Speed".

So the STM32 is not even USB 2.0. Never mind USB 3.0 which introduces "Super speed" at 5000 Mbps.

I think dealing strictly with "Full Speed" is just fine for a first introduction.


Feedback? Questions? Drop me a line!

Tom's Computer Info / [email protected]