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).
[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
[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
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.
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
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
USB Live Osci, my a little dual
8 bit 10MS/s sampling USB oscilloscope.
Simple Software Radio Peripheral; basically an AD converter connected to
the FX2. Fast IO source code.
another programmer similar to my one, and also check out the
software radio link on that page.
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.