There are a number of widely used methods to connect microcontroller projects to USB, all of which are not entirely satisfactory:
- The commonly used FTDI chips are somewhat expensive, and their manufacturer has made some unpopular decisions with their driver support (although technically, the FTDI drivers work quite well).
- Atmel also offers microcontrollers with built in USB, but those also tend to be a bit expensive.
- Software USB stacks use a considerable proportion of the microcontroller’s processing power, and as not always as reliable as hardware solutions.
To a large part, this follows a reference design from the vendor datasheet, using an Eagle part made by blogger [Ian]. I added a few customizations:
- Boxtec’s Christoph Schneeberger successfully convinced me to include a fuse. Though one might suspect a nefarious plot to sell more fuses, he’d probably make a bigger profit selling replacement parts for melted down unprotected boards (not to speak of potentially frying the USB port of a laptop).
- I added LEDs on the RX and TX lines. Since serial lines are high when quiescent, I made them active low.
- I put an ICSP header on the board so it could easily also be used as a bitbang programmer.