1 2 Previous Next 18 Replies Latest reply on Jun 14, 2013 6:32 AM by nikhil.naik

    flash EEPROM with I2C

    malik.cisse
              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,   
         
         
        • 1. Re: flash EEPROM with I2C
          anand.srinivasan.asokan
                  use the switch to disable the EEPROM.... plug in the board... Now enable the EEPROM and reprogram it with whatever firmware you like...   
          • 2. Re: flash EEPROM with I2C
            malik.cisse
                    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,   
            • 3. Re: flash EEPROM with I2C
              anand.srinivasan.asokan
                      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...   
              • 4. Re: flash EEPROM with I2C
                malik.cisse
                        How do I program the big EEPROM?   
                • 5. Re: flash EEPROM with I2C
                  malik.cisse
                          sorry for the stupid question. lg EEPROM of course.   
                  • 6. Re: flash EEPROM with I2C
                    anand.srinivasan.asokan

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

                    • 7. Re: flash EEPROM with I2C
                      malik.cisse
                              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,   
                      • 8. Re: flash EEPROM with I2C
                        anand.srinivasan.asokan
                                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....   
                        • 9. Re: flash EEPROM with I2C
                          malik.cisse
                                  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?   
                          • 10. Re: flash EEPROM with I2C
                            malik.cisse
                                    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,   
                            • 11. Re: flash EEPROM with I2C
                              anand.srinivasan.asokan
                                      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...   
                              • 12. Re: flash EEPROM with I2C
                                konstantin.malax
                                        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   
                                • 13. Re: flash EEPROM with I2C
                                  andrew.smolak
                                          "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.   
                                  • 14. Re: flash EEPROM with I2C
                                    alessio.rugo

                                    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

                                    1 2 Previous Next