USB Design by Example: A Practical Guide to Building I/O Devices, Second Edition

In this chapter I present an overview of the USB Architecture to ensure that we are all using the same terms in the same way. I discuss the upwards and backwards compatible way that USB 2.0 was designed and I stress the continued development and use of USB 1.1 products. I explain that both I/O device design and PC host software are layered to enable easy support of additional I/O devices. The first range of the I/O devices I cover in this book are implemented as Human Interface Devices, or HID, since the operating system already contains all of the software drivers to support this class of device. I cover all other data transfer types, with working examples, in later chapters. I also review the impact of USB on PC host design, and non-PC host design, as giving further impetus to drive the creation of even more USB-based I/O devices.
In this chapter I study the data transfer requests on the USB bus from the bottom up. I look at the signaling scheme on the wires and show that it reveals a packetized structure. I identify the three speeds of the bus (low, full and high) along with the mechanisms that a device uses to identify itself. I explain that sequences of packets are used to generate transactions and that three types of transactions are used during run time (interrupt, bulk, and isochronous),...