If it wasn't for FTDI chips, I would never be able to link my computer to a microcontroller. Since you can't really find a PC with a RS-232 port on it you're basically forced into using USB communication for projects these days (unless you use a converter). However, I have a really hard time understanding what exactly USB is and how it works. Yes, I've read the wiki article and read about to learn about handshake packets and token packets and data packets and blah blah blah but it still seems like a big mystery to me. And now they have uCs that have USB on board and other features like USB "On-The-Go" (PIC32, AVR32, etc) to confuse me even more. Is there anyway that you can spell it out for a newbie such as myself and maybe cover some of these USB-on-chip features and how to use them in a future blog?