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.

TCA9539: I2C Read operation clarification

Part Number: TCA9539

Hi, TCA9539 data sheet section 8.6.3.1.2 describes the read operation as below. This is bit confusing. Can anyone please help to understand what is RESTART mentioned here and how the Port0, Port1 accesses are happening exactly from the below description? 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Section 8.6.3.1.2

After a restart, the value of the register defined by the command byte matches the register being accessed when the restart occurred. For example, if the command byte references Input Port 1 before the restart, the restart occurs when Input Port 0 is being read. The original command byte is forgotten. If a subsequent restart occurs, Input Port 0 is read first. Data is clocked into the register on the rising edge of the ACK clock pulse. After the first byte is read, additional bytes may be read, but the data now reflect the information in the other register in the pair. For example, if Input Port 1 is read, the next byte read is Input Port 0.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • A restart is an I²C start condition without a previous stop condition. It does not matter whether you are using stop+start or a restart.

    The quoted paragraph matters only when some data bytes were transferred before the restart. For example, when you write a byte with register address 6, then a byte with the C0 register value, then do a restart, then the next byte read would be from register C1. For a normal read, you will write only the register addres, so this will not happen.

  • Thanks for the help on this Clemens.

    Thomas,

    Let us know if you have any further questions.

    Best,

    Chris