I Need to Program 129 Bytes to an I2C EEPROM, but the Host Adapter Stops After Programming 16 Bytes – What Do I Need to Change, and How?

Question from the Customer:

We purchased an Aardvark I2C/SPI Host Adapter for our product development and manufacturing evaluation. We ‘re trying to use this adapter with the Flash Center Software to program 129 bytes to an ST Micro M24C02-W I2C EEPROM.  Our problem - it consistently fails with a “Slave NACK” error.


Checking the SCL and SDA signals, we found it only wrote 16 bytes of real data as shown in the first line of the Data Window to the EEPROM before the program failed.  Looking at the timing diagrams, the Aardvark adapter is communicating with the EEPROM.


159084-data2 159084-data3


Can you tell us why the Aardvark adapter stops after writing 16 bytes and what we need to do about it?

Response from Technical Support:

Thanks for your questions! Based on the information you provided, the issue you are experiencing is related to timing. This is easy to fix. In addition to using the XML-based memory device library as-is – you can customize the files for products not yet supported in the library or for new prototypes.

For this device, we recommend adding <writeTime> 10000 </writeTime> between the writeSize setting and the base device address setting for the ST Micro M24C02-W in the st-i2c.xml file. This will increase the wait time from 2.7ms to about 7.5ms, providing sufficient time to successfully program all 129 bytes.  Here is the code we recommend:

<manufacturerName> STMicro </manufacturerName>
<deviceAlgorithm>I2C EEPROM</deviceAlgorithm>

Additional resources that you may find helpful include the following:

We hope this answers your question. Looking for more information? You can contact us and request a demo that applies to your application, as well as ask about our Total Phase products.

Request a Demo