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

The text of this book presented the connection of USB to various computerindustry standard interfaces such as RS232, parallel, and SCSI. This appendix deals with other low-level digital interfaces such as I2C, thermometers, infrared signaling, motors, lighting, general analog, and data acquisition/instrumentation.
I chose these diverse applications so that I could demonstrate different techniques for implementing a variety of USB devices. Let s hope that your application is close to one of those covered here.
While debugging the second example in Chapter 9 (a generic microcontroller with an I2C-attached USB peripheral), I realized that I had much more than just another buttons-and-lights example. I have modified how this example is drawn (see Figure B-1) so that the impact is clearer. Now we see an I2C bus being controlled by the PC host to put it another way, the application program running on the PC host can send and receive I2C messages. We have an I2C development system!
The example in Chapter 9 used I2C as a means to an end. Our goal was to control buttons and lights, and the I2C connection was a convenient method to implement a solution. If we shift our focus to the I2C bus, we can change the PC host application program to be a potent I2C development system.
Before getting too involved in the details, I ll provide an overview of the I2C bus architecture. You will discover that many diverse components use an I2C...