SLVAFL0 July   2024 PCA9535 , PCA9555 , TCA6416A , TCA6424A , TCA9535 , TCA9539 , TCA9539-Q1 , TCA9555 , TCAL6416R , TCAL9539 , TCAL9539-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1What is Auto Increment?
  5. 2How is Auto Increment Useful?
  6. 3Do All I2C Devices Support Auto Increment?
  7. 4Are There Different Types of Auto Increment?
  8. 5Does Auto Increment Need to be Enabled?
  9. 6References

How is Auto Increment Useful?

Using the auto increment feature allows for the user to read or write data without needing to perform a stop condition. This can save time and computation cycles for the I2C controller during the initialization sequence for the I2C bus. An example of a burst write using the auto increment function is shown in Figure 2-1. The example showcases 4 bytes of data being written to the I2C target. Each byte of data is written to the next register in the stack beginning with the first register (register 0). The total amount of bytes sent to the I2C target is 6. If the auto increment function was not used, the number of bytes needed to perform the same transaction can total 12. This transaction cut the time required in half (for this example).

 I2C Auto Increment Burst WriteFigure 2-1 I2C Auto Increment Burst Write

A read transaction example with an auto increment is shown in Figure 2-2. This example shows the beginning register is register 5 (it does not need to start at register 0) and increments up to register 9. The total amount of bytes read from the I2C device is 5 and the number of bytes required to do this was 8. If the I2C controller (or user) had chosen to not use the auto increment, an additional 3 bytes are needed to set up to read the next register (register 6 in this example). This increment totaled 8 bytes to read 2 bytes of data. Seeing this, it is clear that auto increment provides the user with more efficient programming methods.

As an additional note, the I2C controller in this example can have theoretically continued to read bytes from this I2C target had it ACK’d after receiving data from register 9 and there was data in register 10 that it needed to collect. Essentially, read transactions can continue until the controller ends the transaction.

 I2C Auto Increment Burst ReadFigure 2-2 I2C Auto Increment Burst Read