Search...

There are some things one should be aware of when building the design above:

Resonator: According to the data sheet, the FX2LP has an on-chip oscillator circuit which requires an external 24MHz (±100ppm) parallel resonant, fundamental mode crystal with 500uW drive level and 12pF (5% tolerance) load capacitors. So, you can't just put any 24MHz crystal there but things don't seem to be as critical as one may expect. I'm using a 24MHz fundamental mode crystal (24-MA505 from Reichelt) with 10..15pF caps (or even 32pF).
(Note: In the schematic above, there are 2 crystal oscillators in parallel merely to have both options on the PCB (one of them is an SMD). Only one of them is actually soldered onto the board.)

EEPROM: You can use an optional serial EEPROM to store either USB configuration data or a complete program which is loaded into the microcontroller's RAM at startup. You can leave it away completely to use default USB config data and download firmware via the USB (thereby also changing, the config data, it's the so-called ReNumeration thingy). Note, however, that if you leave away the EEPROM, you must still put in both the 2.2k I2C bus pull-up resistors.

PWR_SEL: For USB-powered operation (500mA max), close a jumper between pins 2 and 3, for externally powered operation, apply 5V and GND to pins 2 and 1, respectively. There is an additional 5V, 3.3V and GND power connector called PWR_HUB to connect with add-on boards.

For 5V-to-3.3V conversion, you need to use an LDO (low-dropout regulator) like the LM2937. It should have a drop-out of 1.2V max since the USB specs allow the 5V voltage to be as low as 4.5V on the slave side.

Of course, usual voodoo applies like putting decoupling caps near by and keeping the USB data lines short. A massive ground plane is mandatory, at least for the analog half. Forget about Cypress telling you that you need at least a 4-layer PCB. My regular 2-layer PCB (ground plane on bottom) works stable in high-speed mode even with 3m USB cable.