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.

I2C Nack on start byte

I am working with I2c on the RM48 and found this in the datasheet for the NACK bit of I2CSTR: This bit is NOT set by no-acknowledgement after Start byte. Is there any way to detect a nack in the start byte?

Thanks,

Westin

  • Westin,

    Since this NACK is intentionally created and master is already aware of this intentionally inserted NACK, this bit is not set during the start byte transfer. Can you please explain us on what you are intending to do with this NACK to see if we can help ?

  • Are you telling me the acknowledgement on the start byte is generated by the master? The RM48 is the master in my configuration.

  • I am working with Atmel's ATSHA204 chip, which uses the ack/nack of the start byte to indicate whether or not the chip is busy.

  • Do you have just only 1 slave i.e. ATSHA204 conneted to this I2C interface ?

  • Yes. 1 master and 1 slave.

    Thanks,

    Westin

  • Since the start byte is generally used to inform a slave to wake-up or increase the sampling clock if not and generally master doesn't expect an ACK, the NACK is ignored by the Master when start byte is initiated by master.

    If you just have only 1 master RM48 talking to this I2C slave, then I believe you just need to make sure you wake up the slave device may be using a start byte with sufficient timing and start the communication, if already up I believe the salve ignores the wake-up and stays ready for communication. pls let us know.

  • You are correct, but waking the device is not what I am concerned with. After sending a command, you can poll the device to see if it has completed the command. The alternative to this is wait the maximum amount of time the command could take. This is what I am currently doing, but do not want to stay this way as some of the commands take a significant amount of time. To poll the device for completion of the command, the datasheet says to send a start byte and check for an ACK. If you receive an ACK, the command is complete. Is there any way to do this?

    Thanks,

    Westin