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

Are There Different Types of Auto Increment?

Yes, some devices can only auto increment within a certain set of registers. An example of this is with TI I2C IO expander. For IO expander with 2 ports (16 bits of expansion), the auto increment can occur within the set of port registers. An example of this special auto increment case is shown in Figure 4-1 using a 16-bit IO expander like TCAL6416. Doing consecutive writes after setting the register to 0x02h (the output port 0 register) can result in the data written into the register to alternate between register 0x02h (output port 0 register) and 0x03h (output port 1 register).

 Auto Increment IO ExpanderFigure 4-1 Auto Increment IO Expander

This type of auto increment feature results in an initialization sequence that requires multiple I2C transactions (with start/restart and/or stop conditions) since the user cannot write to all the registers in one go. While this is a disadvantage from an initialization perspective, this auto increment approach does come with an advantage. Being able to write or read from only one set port allows for better latency in receiving/outputting useful data.

Figure 4-2 shows a 4-bit IO expander (TCA9536) is used to toggle bits 2 and 3. The auto increment feature is being used to immediately toggle the bits after each ACK. Since the device only has one port, the auto increment feature continuously increments into the same register (output register 0x01h) so every time new data is written, the device updates at each ACK. This approach lowers the latency of the outputs toggling because after sending the register byte (0x01h) the device can freely change the output state. The alternative is to always write to the device by sending the device address, the register, and then the data in between start and stop conditions.

 Scope Example Write BurstFigure 4-2 Scope Example Write Burst

From a read perspective, applications where the inputs of an IO expander need to be polled make this kind of auto increment efficient because the device does not need to increment across all of the registers before looping back to the one of interest.