Introduction: FX2LP CY7C68013A USB Dev Board (Logic Analyzer)
Cypress’s EZ-USB® FX2LP™ (CY7C68013A/14/15/16A) is a low power, highly integrated USB 2.0 microcontroller.
This chip is a General Programmable Interface (GPIF™) that is supposed to ease the development of USB devices such as keyboards, mouses (mice!), flash drives, etc.
The board that I ordered is a development board from AliExpress for $4.60 and I was really impressed with its quality.
There are 2 variants, one with one jumper & another with 2 jumpers. Both comes with a on/off switch and a RESET push button.
The board also has an EEPROM (ATMEL 24C128 on my board) which is used to hold the VID/PID/DID of the device - this is for the host to identify the device to determine the correct driver.
My board was of the 2 jumper model & I think both are the same.
J1 is to connect/disconnect 2 LEDs from Vcc - these LEDs are connected to D0 & D1
J2 controls the high address bit of the EEPROM making it appear at I2C address 0xA0 or 0xA2 depending on the jumper.
The FX2LP is designed with a unique feature that allows the firmware to be loaded to the chip RAM either from the host or from the EEPROM.
Here we will be discussing a very interesting firmware that converts this $4.60 board into a logic analyzer!
Step 1: Sigrok Analyzer Suite
Sigrok is a portable, cross-platform, Free/Libre/Open-Source signal analysis software suite.
It supports a variety of devices & boards (logic analyzers, oscilloscopes, digital multi-meters, ... etc.)
Sigrok GUI frontend is called PulseView and this is application that we'll be using.
To have the board working with PulseView we need the correct Windows driver - I downloaded it from here.
The driver will be recognized as: Cypress FX2LP No EEPROM Device.
This driver is probably not going to work with PulseView & we have to install a generic Windows USB driver using Zadig, which is an application that is installed with PulseView.
After installing the Cypress driver, run Zadig & from the Options menu make sure that "List all drivers" is checked.
Select the Cypress driver & press the button.
It may take a long time to install but eventually it will finish.
Now PulseView should be able to detect & use the board.
Step 2: Testing the Board
I used an Arduino as a simple 5-bit binary counter & monitor the output pins 8 to 12.
Connect the GND of the Arduino to GND of the FX2LP.
Connect pin 8 of the Arduino to PB0 of the FX2LP, pin 9 to PB1, pin 10 to PB2, pin 11 to PB3 & pin 12 to PB4
The code i very simple:
void setup() { Serial.begin(9600); DDRB = B11111; }
int i=0;
void loop() { Serial.println(i,HEX); PORTB = i ; i++; i&=0x1f; }
Setting the number of samples to 2M sample/second & the sampling rate to 1MHz will give us 2 seconds of sampled data.
Beautiful!