A faster way for data access
Even though it is frequently related to I2C, automatic incrementation is not part of any I2C standard but rather a common feature found in many I2C devices. What it means is that the device maintains an internal pointer which is automatically incremented upon data read or write activities and which can be manually set to a fixed value. This comes in handy when storing larger amounts of data for instance in an ordinary I2C RAM or EEPROM.
A typical communication scheme looks like this
- Send a start condition
- Send an address byte with read/write bit, for instance, 0xa1 for a device with address 0x50 if we want to set the autoincrement pointer
- Write value of the auto increment pointer e.g. 0x00
- Send a Repeated Start Condition because we want to read data starting at location 0 now
- Again send an address byte (0xa0 in our example)
- Read an arbitrary number of bytes from the device – the autoincrement feature will internally add 1 to the address pointer allowing us to obtain consecutive bytes starting with the data byte at location 0 we originally wrote to the bus
- Send a stop condition