Nav:  [home][elec][periph] > [usb-fx2]
Go:  [index] [circuit] [software] [eeprom]

Electronics -- USB-FX2 Interface Board (USB-2.0)

A small microcontroller-steered 16bit parallel IO interface board connecting external devices to a computer applying USB-2.0 (high-speed).


USB-FX2 Rev.2 board image (top) [14kb]
[click to enlarge: 233kb JPEG]

This is a USB (universal serial bus) interface board supporting USB-2.0 high speed mode (480Mbit/s).


  • Throughput: Actual continuous transfer rates of 35Mb/s (mega bytes not bits).
  • Flexibility: On-board 8051 microcontroller with 16kb RAM.
  • FIFO IO: 8 or 16 bit wide, additional handshake lines, 3.3V logic.
  • Several USB endpoints and buffering configurations (up to 512 bytes, quad-buffered); bulk, isochronous and interrupt transfer.
  • Several additional free digital IO lines.
  • Firmware download via USB; optional non-volatile 64kb EEPROM.
  • USB-powered and externally powered operation.
  • Very few discrete components.

If you would simply like to connect a microcontroller board to a computer using USB but don't need massive bandwidth (less than 800kb/s), then you may want to have a look at the smaller and cheaper USB8Bit board.


USB-FX2 schematic [7kb]
[click to enlarge: 153kb PDF]

The main component is the CY7C68013A USB-2.0 interface IC ("FX2", actually it's "FX2LP" but don't mind) from Cypress Semiconductor with integrated 8051 microcontroller. Beyond that, really few external components are required.

It includes a 5V-to-3.3V low-drop regulator to provide the 3.3V logic level. Access to all data, control, handshake and clock pins is granted via dedicated connectors and allows direct interfacing to a variety of high-speed devices (like AD/DA converters, hard drives, FIFOs, etc.).

For more information, have a look at the detailed circuit description.

Host Software and Firmware

First of all, the software part is not as easy as with the USB8Bit board, especially if you're after high transfer rates. In order to write your own software, you need:

  • The CY7C8601xA Data Sheet and, even more important, the EZ-USB Technical Reference Manual, both available from Cypress.
  • An '8051 compiler like SDCC for the firmware.
  • libusb, including headers, GCC, and of course all the usual development tools assumed to be on the hard drives of anybody who is surfing these pages...

Here is a list of local and external resources around the FX2:

  • My software collection: Local tools and examples verified to work with my FX2 board, including high-speed IO transfer program FX2Pipe.
  • USB Live Osci, my a little dual 8 bit 10MS/s sampling USB oscilloscope.
  • SSRP: Simple Software Radio Peripheral; basically an AD converter connected to the FX2. Fast IO source code.
  • FX2 programmer, another programmer similar to my one, and also check out the software radio link on that page.

EEPROM Configuration

As shown in the schematic above, you can attach an EEPROM (e.g. 24LC64) to the FX2 in order to permanently store the firmware for the 8051. This way, you do not have to download the firmware each time the FX2 is plugged into the USB. Instead, it starts up with the firmware and can configure the endpoint descriptors. Here is how you do it.

[home] [site map] [Impressum] [Datenschutz/privacy policy]
Valid HTML 4.01!
Copyright © 2006-2009 by Wolfgang Wieser
Last modified: 2009-08-23 16:53:54