3 ms·
USB is designed to solve a complex, but necessary problem. 1. Hot-plug. 2. High speeds with long cables of dubious quality. 3. Multiplexing multiple devices
by vbezhenar 1y ago
USB is designed to solve a complex, but necessary problem.
1. Hot-plug.
2. High speeds with long cables of dubious quality.
3. Multiplexing multiple devices on a single wire with hubs.
4. Reliable transmission on lower layer, so higher level protocols don't need to worry about it.
5. Multiple speeds with negotiation.
6. Newer USB standards support multiple power voltages with negotiation.
All that said, old USB protocols like USB 1.1 is not that hard. You don't need those hundreds of pages, only a subset of them. There are some tutorials in the Internets which will help you to understand everything, from wire signalling to application interface. Don't use USB reference as a learning source. These days ChatGPT probably will guide you over every layer. Just stick with old standards, they are simpler and plenty of devices use them.
With enough persistence and some fast enough MCU you should be able to bit-bang USB 1.1 LS (1.5 Mbps) and write some simple USB device. That will require to implement all layers of USB and I'm pretty sure it's not impossible task.