flash EEPROM with I2C

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

cross mob
Anonymous
Not applicable
        Hi,   
   
I tested vend_ax programm with:   
CY3684 USB 2.0 DEVELOPMENT BOARD   
I think I damaged the large EEPROM because the board is not recognized anymore.   
Is there a way to set the Large EEPROM back to its default value or flash:   
C:\Cypress\USB\Examples\FX2LP\EEPROM Images\   
on it.   
   
Thanks,   
   
   
0 Likes
22 Replies
Anonymous
Not applicable
        use the switch to disable the EEPROM.... plug in the board... Now enable the EEPROM and reprogram it with whatever firmware you like...   
0 Likes
Anonymous
Not applicable

Hi

whenever i used to program the eeprom (24lc128) on development kit FX2LP(CY3684) ,following error occur "EEPROM NOT ENABLED"  Is there any way to load / program the new eeprom according to development kit FX2LP(CY3684)?  Below is the link of website from where i bought the new eeprom for development kit FX2LP(CY3684).

https://www.digikey.com/products/en/integrated-circuits-ics/memory/774?k=24lc128-i

0 Likes
Anonymous
Not applicable
        Hi,   
   
I followed your suggestion without success:   
1- plug off USB cable   
2-set EEPROM ENABLE to NO EEPROM   
3-set EEPROM SELECT to LARGE EEPROM   
4-plug USB cable   
5-set switch EEPROM ENABLE to EEPROM (as you said)   
6-try to flash with EZ-USB Interface and S EEPROM (I used Fx2LP_C0.iic from EEPROMImages folder) but it failed   
EZ-USB Interface application said EEPROM not enabled as if the switch did not work while the board is powered.   
   
Thanks,   
0 Likes
Anonymous
Not applicable
        S EEPROM is used to program the small EEPROM... either you have not switched the EEPROM enable switch properly or you have not switched the other switch from large eeprom to small eeprom...   
0 Likes
Anonymous
Not applicable
        How do I program the big EEPROM?   
0 Likes
Anonymous
Not applicable
        sorry for the stupid question. lg EEPROM of course.   
0 Likes
Anonymous
Not applicable

Is your problem solved???
Just on a friendly note: There is no stupid question, it is either simple or complex.    

0 Likes
Anonymous
Not applicable
        Thanks a lot for great support so far (also on other threads)   
What I am actually trying to do is as follows:   
First things first.   
I implemented firmware, driver (linux, windows, mac os) and hardware interface in VHDL for following chip:   
CY7C68013A: USB High-Speed Peripherals > EZ-USB FX2 / FX2LP   
This all works perfectly and some of our enciris LT101 boards have been chipped to clients already.   
   
For the driver I implemented custom driver with our own device and product ID.   
I flashed a 4096x8 bit EEPROM (M24C32) attached to FX2LP using S EEPROM command with our firmware.   
After flashing the deevice is not seen anymore by cypress tools (normal).   
But now I want to update the firmware.   
What is the best approch:   
1- try to implement a vendor command like the one in vend_ax in my own firmware (I have some troubles doing that). and used vendor commands to flash EEPROM.   
2-try to download vend_ax from our driver and flash the EEPROM like above using A2 vendor command. Not sure this is feasible.   
3- other strategy...   
Maybe you have a beter idea what to do?   
   
Thanks,   
0 Likes
Anonymous
Not applicable
        Say when u say u use s eeprom button... the prime thing to understand is that FX2LP talks to the EEPROM assuming that it is a single address EEPROM... so it can address only 256 Bytes... You can see what might be happening right... you are talking to a EEPROM which needs two byte addressing by using single byte addressing... using vend_ax is the best way to go as far as i know... or for a mass production environment... you can program one EEPROM checks it working... then take that EEPROM and copy its image and write the same to many EEPROM using a manufacturing end EEPROM programmer....   
0 Likes
Anonymous
Not applicable
        Ok,   
I think I am almost done.   
I copied the vend_ax example to my FW and I can perform read access.   
One think is unclear to me though:   
I am using the following command from vend_ax:   
I2C_Addr = SERIAL_ADDR | ((I2CS & 0x10) >> 4);   
which will be 0x51, but my EEPROM address is 0xA2 (but I did not tell that the FW)   
How does firmware know the correct address of the attached EEPROM?   
0 Likes
Anonymous
Not applicable
        additionally to the question:   
How does firmware know the correct address of the attached EEPROM?   
Do you know why I2C write (to eeprom) IOCTL commands must be in chunks of 16?   
When I send chunks of 64bytes or above, write process will fail (when using VR_EEPROM vendor command)   
   
I got everything to work but still these 2 questions remain.   
   
Thanks,   
0 Likes
Anonymous
Not applicable
        The EEPROM address is not known by the firmware. You will have to take care of that in your firmware...   
Regarding the chunks of 16 byte transfer that you are talking about can you point me to which doc u r referring to... one thing i can think of is that I2C speed is much lower than USB speed... Here the data is being sent to the buffer of EP0 (a endpoint which cannot say no to setup commands) so if before the write to I2C slave is completed, if the next request comes in the it'll corrupt the data of the previous transfer...   
0 Likes
Anonymous
Not applicable
        Hello, i have fx2lp cy3684/3674.   
Can I install eeprom 24LC512-I/SM 512K, SO8, 32Kx8, 2.5V, EEPROM vice 24lc128.   
   
   
Will it work?   
What models of memory eeprom i can use? I want upgrade my fx2lp   
0 Likes
Anonymous
Not applicable
        "How does firmware know the correct address of the attached EEPROM? "   
   
Most standard "boot" EEPROMS actually do have a standard address and don't even have pins to set it. If you look in the Reference Manual it explains what these standard addresses and also what "assumptions" the hardware makes about them in terms of the boot sequence.   
0 Likes
Anonymous
Not applicable

I read the discussion above with interest. 

   

Could you please tell me if I'm right or wrong?

   

1- Using FX2LP internal firmware/data  (no EEPROM firmware download and no firmware has been downloaded into RAM - first stage, just standard VID/PID/DID), the firmware download is possible thanks to the 0xA0 vendor request, which is the only vendor request available at this stage.

   

2- 0xA9 (large EEPROM load) MUST be implemented as a vendor request in a custom firmware. Otherwise, you can use vend_ax firmware example to download it.

   

3- Which technology cyConsole implements to program small and large EEPROM at the first stage (without any firmware other than the internal FX2LP information)?

   

Thanks in advance for your help

0 Likes
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hi,

Your understanding regarding the points 1 and 2 is correct.

Regarding your point 3:

- First thing: Now instead of CyConsole use control center (latest application) which is improved version of CyConsole and has all the features CyConsole has.

You can find that in the following location after installing FX2LP DVK:

C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Windows Applications\Application Source files\c_sharp\controlcenter\bin\Release

This is not related to the point 3 but mentioned here as a suggestion.

- Second: When you use Control center to program the EEPROM, it downloads Vend_Ax firmware in the background first into the FX2LP RAM and then issues the vendor commands needed for EEPROM write.

You will not be seeing this Vend_Ax download in the device manager (meaning: the device does not enumerate with Vend_Ax firmware it is just used to program the EEPROM)

If you want to observe these sequences, then you would have to take USB trace using a sniffer.

Regards,

Hemanth

Hemanth
0 Likes
Anonymous
Not applicable

The Problem is when we plug in the USB device it did not detect the eeprom however switch positions as below:

   SW2 - EEPROM

   SW1 - Large EEPROM

Now using control center to program the Large EEPROM with the required .iic file it shows the error eeprom "not enabled".

actually i developed my own USB Board and the problem is eeprom not detected in it or SDA line is not connected.

but if i use the eeprom (24lc128) of development kit FX2LP(CY3684) then my board is working properly with it .

i just want to know that what is actually the difference between the new eeprom /blank eeprom(24lc128) and the eeprom which is on cypress development kit FX2LP(CY3684) and what i need to be done with new eeprom so that it also starts working properly with my new board.

Regards

Aroosa

0 Likes
Anonymous
Not applicable
        hai.i have been working on cy7c67300.i need your help.i don't have bootload code.how to write bootload code and how to build in eeprom.plz tell me.   
0 Likes
Anonymous
Not applicable
        hai.i have been working on cy7c67300.i need your help.i don't have bootload code.how to write bootload code and how to build in eeprom.plz tell me.   
0 Likes
Anonymous
Not applicable

 Sri4ever

   

You dont have to write any bootcode. It is already there in fx2lp.

   

The only thing you need to have is an .iic file to write into eeprom.

   

Refer the following App note: http://www.cypress.com/?rID=34253

0 Likes
Anonymous
Not applicable

I can't understand the concept of I2C  and EEPROM in EZ-USB® Technical Reference Manual,CY7C68013A using FX2LP.

   

Please help me to undertand the concepts.I am having very less time to do my task.

0 Likes
Anonymous
Not applicable

Hi All,

   

I read all discussion above but having query regarding Vend_Ax command example.

   

I am not able to understand the significance of SERIAL_ADDR = 0x50?

   

can anybody please explain me? also I want to interface Large EEPROM through I2C as assuming cypress FX2LP chip as Master and EEPROM as slave.

   

Can anybody give me some idea how I proceed for this?

0 Likes