I²C Current Address Read

Just tell me what you have where you are right now…

I²C current address reads are used to read one byte from the current address. The current address will be one beyond the address that was last acted upon.

i2c-current-addres-read.png

EEPROM Current Address Read Procedure

  1. Send start condition - wait for it to complete
  2. Send control byte
  3. Check for bus idle
  4. Read inone byte
  5. Send NACK, wait until ACK sequence complete
  6. Send stop condition - wait for it to complete

Example Code (PIC18)

Specific I²C function names and parameters may differ depending on your target device, compiler and/or peripheral library.

StartI2C();
while (SSPCON2bits.SEN);
// Initiate START condition
// Wait until START condition is over
WriteI2C(0xA1);// Write 1 byte - R/W bit should be 1 for read
IdleI2C();// Ensure module is idle
getsI2C(&dataOut, 1);// Read in one byte
NotAckI2C();
while (SSPCON2bits.ACKEN);
// Send NACK condition
// Wait until ACK sequence is over
StopI2C();
while (SSPCON2bits.PEN);
// Send STOP condition
// Wait until STOP condition is over