This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6442: I2C EEPROM access for multi-core application

Part Number: AM6442

Hello, I am facing an issue with I2C EEPROM writing and reading in a multi-core application. The 2 applications exists on A53-0 and A53-1. 

The application on A53-0 uses the "ENET LWIP App" example that also uses I2C EEPROM for the setup of the ENET and ENET PHY through I2C0. 

The application on A53-1 needs to store information on EEPROM through I2C and then retrieve it later. I have configured it to use I2C1, but with this I2C instance the communication fails. It only works when I set it to I2C0, but if I change that then I have to adjust the I2C instance being used in A53-0 which breaks the "ENET LWIP App" and doesn't allow the ENET and ENET PHY to initiliaze. 

Thus the issue is that I can only read and write to EEPROM through I2C0 instance, but I can't share that same instance for the 2 different cores. From this I have these questions:

1. Is there a way to configure the I2C instances (I2C1, I2C2...) to communicate with the EEPROM? 
2. Why is this issue occurring? Is I2C0 hardcoded to be the only I2C instance that can communicate with EEPROM? 
3. What fixes do you suggest?

Thank you for your time and have a nice day.

  • Hi Daniil,

    I have configured it to use I2C1, but with this I2C instance the communication fails. It only works when I set it to I2C0,

    The EEPROM is connected with the I2C0 instance of the SoC. Please refer section 3.4.8.5 Board ID EEPROM Interface of the AM64x EVM User Guide for details. 

    Which version of SDK are you using? 

    1. Is there a way to configure the I2C instances (I2C1, I2C2...) to communicate with the EEPROM? 

    On TI EVM, EEPROM is connected to I2C0. EVM modification required to use it from other I2C instance.

    2. Why is this issue occurring? Is I2C0 hardcoded to be the only I2C instance that can communicate with EEPROM?

    As mentioned the EEPROM can only be accessed from I2C0 instance as it is connected to I2C0 on TI EVM.

    Regards,

    Tushar

  • Hi Tushar, thank you for the quick reply!

    I am using AM64X MCU+ SDK 12. 

    After reading through the resource you provided, I found this quote:
    "AT24CM01 from Microchip is used, this will be interfaced to I2C0 port of the SOCI2C address of the EEPROM can be modified by driving the A0, A1, A2 pins to LOW." 

    1. This implies that the I2C instance can be changed from I2C0 to any other I2C just by driving A0, A1, A2 pins low, correct? Is there any physical modification that needs to be made? Please provide the guidance on how to modify the I2C instance used to access the EEPROM. 

    2. Also, is it possible to configure multiple instances if I2C to be able to communicate with EEPROM?

    3. To clarify in default EVM I2C0 is hard wired to be the only instance that can communicate with EEPROM, correct? 

  • 1. This implies that the I2C instance can be changed from I2C0 to any other I2C just by driving A0, A1, A2 pins low, correct? Is there any physical modification that needs to be made? Please provide the guidance on how to modify the I2C instance used to access the EEPROM. 

    No, It means you can change the EEPROM device address by controlling this pins. It will not change I2C instance that is being hardwired with the device.

    2. Also, is it possible to configure multiple instances if I2C to be able to communicate with EEPROM?

    By multiple instance, what do you mean? Do you want to connect different device to I2C0 along with EEPROM?

    3. To clarify in default EVM I2C0 is hard wired to be the only instance that can communicate with EEPROM, correct? 

    You will need to check the EVM schematics for this details.

    I can see I2C0 is not only connected to EEPROM, but also connected to expansion connector, safety connector and other I2C device. Please refer image above.

    Regards,

    Tushar