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.

CCS/TM4C123BH6ZRB: I2C on TM4C123

Part Number: TM4C123BH6ZRB

Tool/software: Code Composer Studio

I am trying to create a wake up function for an i2c device that looks like the following.  

My current wake up looks like this.

Here is my code:

 Basically, I need half the number of clock cycles. Changing it to a write instead of a read just holds it low instead of high during the 2nd half of the clock cycles. Is there a way of doing this?

Thanks,

  • Hi,
    What type of I2C device are you interfacing with? The I2C transfer will consist of the address frame followed by the data frame. You can't just send a data frame without an address frame. In your first picture I think the master is attempting to write to the slave by sending the address frame with the slave address equal to 0. Since there is no slave responding then the NACK is returned to the master, hence the master terminates the transmission with a STOP.
    Take a look at the below I2C app note for details on the API usage and the I2C operations. I will also suggest you run the TivaWare i2c examples.

    www.ti.com/.../spma073.pdf
  • Hi,

    I am interfacing with the ATECC508A. Are you able to send an i2c message without the address frame? To wake up this i2c device, the Dev kit data line is held low for 80us and no address frame is used.

    Thanks, 

  • Hi,
    By design, It is not possible to send only the data frame. I will suggest you either manually drive the SDA long enough in open-drain GPIO mode to wake up your external device or use the address frame with slave address equal to 0 that last more than the wake up time. You might need to slow down the I2C clock rate. After wake up you will reconfigure the I2C clock rate.