FX3 I2C EEPROM: Store additional data in the EEPROM

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

cross mob
suramyag1
Level 1
Level 1
5 sign-ins First question asked Welcome!

Hi!

I wanted to utilize the space remaining in the EEPROM for storing some data. However, with the I2C boot mode, it seems to fail.

I've set the PMODE settings to Z1Z (for I2C -> USB boot).

My IMG file size is 165 KB. I'm trying to use the last 1024 bytes for storing some custom data.

Whenever I try to do that with this boot mode, the boot from EEPROM fails and it falls back to the USB boot mode.

On reading back after programming the EEPROM, it seems that the full 256 KB is being utilized.

However from https://www.cypress.com/file/201991/download, it doesn't seem that the EEPROM should be full, as the EEPROM write should end with the checksum in the end.

Currently, Control Center is being used to program the I2C EEPROM (with the PMODE settings being changed accordingly).

0 Likes
1 Solution
AliAsgar
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 750 replies posted

Hello,

Data should be written on the I2C booting EEPROM, such that the writing of custom data does not overwrite the firmware.  The FX3 explorer kit has a 256KB EEPROM(M24M02-DRMN6TP) with 64KB of addressable memory space. The device addressing method for this EEPROM has been attached. Different EEPROMS have different device addressing methods.

If an FX3 superspeed explorer kit is used at your side. Kindly refer to the below procedure:

We programmed the I2C EEPROM, using  the 'UsbI2cDmaMode' firmware example on an FX3 superspeed explorer kit. The wValue field was made 0x0003 to write/read the last 64KB of addressable space of the 256KB of EEPROM memory and as the last 1024 bytes are needed for write/read the custom data, the wIndex value is kept as 0xFC00. 

In the setup packet of the control transfer,  the device address(wValue) and the register address(wIndex) have to be configured such that only the free address space in the EEPROM is accessed.

Best Regards.

AliAsgar

View solution in original post

0 Likes
1 Reply
AliAsgar
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 750 replies posted

Hello,

Data should be written on the I2C booting EEPROM, such that the writing of custom data does not overwrite the firmware.  The FX3 explorer kit has a 256KB EEPROM(M24M02-DRMN6TP) with 64KB of addressable memory space. The device addressing method for this EEPROM has been attached. Different EEPROMS have different device addressing methods.

If an FX3 superspeed explorer kit is used at your side. Kindly refer to the below procedure:

We programmed the I2C EEPROM, using  the 'UsbI2cDmaMode' firmware example on an FX3 superspeed explorer kit. The wValue field was made 0x0003 to write/read the last 64KB of addressable space of the 256KB of EEPROM memory and as the last 1024 bytes are needed for write/read the custom data, the wIndex value is kept as 0xFC00. 

In the setup packet of the control transfer,  the device address(wValue) and the register address(wIndex) have to be configured such that only the free address space in the EEPROM is accessed.

Best Regards.

AliAsgar

0 Likes