FX2LP Slave FIFO question

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
tostc_3976271
Level 1
Level 1

I'm going off of these two examples:

Interfacing FX2LP™ with Image Sensor – KBA95736

USB2.0 Camera Interface Using FX2LP™ and Lattice CrossLink FPGA - KBA222479

I have the DVK installed. When I try to program either small EEPROM or 64kb EEPROM with the example *.iic file, using USB Control Center, I get a message after a few seconds that it failed. Programming the RAM works though.

The board I'm using is the super-common "WINGONEER EZ-USB FX2LP CY7C68013A USB Development Board Core Board Logic Analyzer". You take the jumper off and the board is recognized correctly as a "Cypress FX2LP No EEPROM Device". The EEPROM on the board is a 16kB I2C EEPROM: Atmel AT24C128A, according to https://sigrok.org/wiki/Lcsoft_Mini_Board

Anyway, my *guess* as to why the EEPROM programming fails is because the EEPROM that is on this board is a different size to what "USB Control Center" expects. If you agree that my guess is correct, what else can be used to program it?

0 Likes
1 Solution

Hello,

You can use Keil uVision for compiling the code changes, we have included the limited version Keil uVision 2 with the FX2LP DVK. You can add any external editor on the IDE as well, please check µVISION: USING AN EXTERNAL EDITOR .

Best Regards,

Sananya

View solution in original post

0 Likes
7 Replies
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

The EEPROM on the board should have the address lines set as 0x51 since it is a large EEPROM as per the size. However,I think the jumper sets the address as 0x50 and hence the programming fails with Control Center. You could load the Vend_ax firmware into the RAM and then use the vendor commands to program the EEPROM after modifying the address.

Best Regards,
Sananya

0 Likes

I'm not sure the jumper has anything to do with the issue. There is only one jumper and removing it sets the device as "Cypress FX2LP No EEPROM Device" but connecting it seems to change the device to whatever is in the 16kb EEPROM. The problem is that the EEPROM never successfully gets programmed, only the RAM programming succeeds. The device fails to program before I put the jumper back on.

Maybe you're trying to say that *removing* the jumper sets the address as 0x50. If that is the case, I did not fully understand what the specific steps are to correct the issue and finish programming the EEPROM. I saw that there was a "second stage bootloader Vend_Ax.hex" link in the sigrok page but I don't know specifically what to do after loading Vend_ax.hex into RAM. Do you know what the specific steps are to resolve the EEPROM programming issue?

0 Likes

Hello,

Yes, what I meant was removing the jumper may set its address as 0x50 then Control Center will fail to program it. So, initially if the device comes up as "Cypress FX2LP No EEPROM Device" when the jumper is removed, and you set the jumper before programming the large EEPROM(which then sets the address as 0x51), the programming should be successful.

The Vend_ax firmware is present with the DVK at <install directory>\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Firmware, which could be used to modify the EEPROM address to the appropriate value in the vendor command and send the .iic file after loading the Vend_ax firmware into the RAM.

Best Regards,

Sananya

0 Likes

I previously was not connecting the jumper before trying to program the EEPROM. I was connecting the jumper afterwards. The steps below resulted in a successful programming of the EEPROM.

1. remove jumper

2. power on device

3. apply jumper

3. open USB control center and select program > FX2 > 64kb EEPROM (selecting small EEPROM results in failure)

Thanks for helping me with that.

I have a separate issue. Given the tutorial examples below, why does example one not get recognized as a USB video device, but example two does get recognized as a USB video device?

1. Interfacing FX2LP™ with Image Sensor – KBA95736

2. USB2.0 Camera Interface Using FX2LP™ and Lattice CrossLink FPGA - KBA222479

0 Likes

Hello,

The first example firmware uses Vendor Class implementation in FX2LP to send data from the image sensor and hence it binds to Cypress vendor driver in your host PC while the second example firmware uses UVC class implementation in FX2LP so it binds to standard video driver.

Best Regards,

Sananya

0 Likes

I plan to send stereo correspondence depth values, that only occupy up to 7 bits, from an FPGA to the FX2. I'm forced to go with the second example because it meets the requirement that the device shows up as a USB video device.

What is the easiest setup environment to make and compile KBA222479 code changes? Is it easy to set up a development environment that uses a more modern editor like VS Code or CLion? If so, what are the specific libraries and or other steps that would need to be performed to get a working development environment using a newer editor (on windows 10)?

0 Likes

Hello,

You can use Keil uVision for compiling the code changes, we have included the limited version Keil uVision 2 with the FX2LP DVK. You can add any external editor on the IDE as well, please check µVISION: USING AN EXTERNAL EDITOR .

Best Regards,

Sananya

0 Likes