Simple PIC USB Interface

Jump To:
USB Theory
           To start, I will be straight forward and honest: USB is not a simple protocol. Understanding exactly how it works will take some effort on your part. Luckily, microchip has made it easier to implement USB 2.0 on PICs with their freely downloadable USB Framework in their applications library which provides us with a useable API for the MCC18/24/30 compilers. I suggest downloading and installing that package.
           The following 4 pages of USB related information will 'skim the surface' so that you have a working knowledge of what's happening with USB, but for those of you who require or desire the indepth knowledge of knowing exactly what is happening where and when, please refer to the USB developer's docs or this USB standards guide. The documents there are as detailed (and as boring to read) as it gets!

USB Theory: Connecting Things Together

           For the last decade USB has crept up in popularity because it offers an easy and universal method for very fast data transfer. Printers, cell phones, speakers and a large number of other devices have all adopted the USB standard simple because having this universal connection between devices makes everybody's life easier.

USB Theory: Host vs. Device

           USB theory is very similar to the way ethernet/internet connectivity theory works. There is one USB Host device and many client devices that communicate with the host device. You have likely seen these two types of devices already: any laptop built today (2011/2011) will have a USB host inside of it, and many USB ports for devices (printer, mouse, flash memory drive..etc) to plug into.
           The job of the USB host is to keep track of what type of devices are connected, to which port and what type of data it sends.
           The job of the USB device is to tell the Host what type of device it is and then proceed to do whatever it's suppose to do (save data/play music).