December 5, 2020


My goal in writing this is to understand (and perhaps also explain) the low level details of USB. I have poked at this on and off over several years, but I am now taking a fresh stab at it in this series:

A note on the above -- I now include the RP2040 chip on the Raspberry Pi Pico as an excellent candidate for learning USB.

I intended (back in 2020) to write my own USB device driver for an STM32 family chip, probably the STM32F411 and/or some other F4 chip in the STM32 family. These are ARM based microcontrollers, not that the CPU architecture particularly matters for the purpose of learning USB details.

So, I will unavoidably end up discussing specific aspects of the STM32 USB subsystem. And I will be writing a driver for a slave device, not a host driver as might be used in a linux or windows system.

Feedback? Questions? Drop me a line!

Tom's Computer Info /