Enumerates with Default Cypress VID (0x4B4) / PID (0x8613). Firmware downloads via USB RAM. I2C (24LC64+)
Utilizes dual data pointers (DPTR) for rapid memory copying. Endpoint Buffer Memory Contains 4KB of configurable FIFO memory. Supports endpoints EP2, EP4, EP6, and EP8. Configurable for double, triple, or quad buffering. GPIF (General Programmable Interface) A hardware state machine.
The FX2LP acts as the master, generating waveforms to read or write to an external peripheral. cy7c68013a programming guide
| Feature | Description | |---------|-------------| | CPU | 8051 core, clock up to 48 MHz (derived from USB clock) | | USB Interface | High-speed (480 Mbps), 3.3V I/O | | Endpoints | 8 configurable endpoints (EP0-7) + control endpoint EP0 | | Buffering | Dual/triple buffering for isochronous/bulk transfers | | GPIF | General Programmable Interface for external peripherals (ASICs, FPGAs, FIFOs) | | Slave FIFO | Allows external master to access endpoint FIFOs directly |
Connects external logic (FPGAs, DSPs) directly to USB FIFOs. Bypasses the 8051 core during high-speed streaming. Development Environment Setup Enumerates with Default Cypress VID (0x4B4) / PID (0x8613)
Waveforms are generated using the Cypress GPIF Designer tool.
void Poll_USB_Data(void) unsigned int count; unsigned int i; // Check if EP2 has received data (Not Empty) if (!(EP2468STAT & 0x01)) count = (EP2BCH << 8) Use code with caution. 2. Slave FIFO Mode Endpoint Buffer Memory Contains 4KB of configurable FIFO
When attached to a host, the FX2LP reads descriptor tables to present its identity (VID, PID, Endpoint layouts). Customizing dscr.a51
: Allows the firmware to be downloaded from a host PC over USB or loaded from an external I2C EEPROM. This means the device can change its identity (VID/PID) and functionality dynamically without hardware changes. General Programmable Interface (GPIF™)
void TD_Init(void) CPUCS = 0x12; // 48 MHz clock, no 8051 reset IFCONFIG = 0x03; // Slave FIFO, external clock EP2CFG = 0xA2; // Bulk OUT, double buffered, 512 bytes EP6CFG = 0xE2; // Bulk IN, double buffered, 512 bytes EP2FIFOCFG = 0x00; // Auto commit off EP6FIFOCFG = 0x0D; // Auto commit on, word wide