The LM94 supports I2C block reads. The following sequence of events occur in this transaction:
- The master sends a START to start this transaction .
- The master send 7-bit slave address followed by a write bit (low).
- The slave asserts an ACK.
- The master sends the register address and the slave asserts an ACK.
- The master sends a repeated START.
- The master sends the 7-bit slave address followed by a read bit (high).
- The slave asserts an ACK.
- The master receives Data Byte 1 and asserts an ACK.
- The master continues to receive bytes and asserting an ACK for each byte received.
- The master receives the last byte.
- The master asserts a NACK.
- The master issues a STOP.
1 | 2 | | 3 | 4 | | 5 | 6 | | 7 | 8 | | 9 | | ∼ | 10 | 11 | 12 |
S | Slave Address | W | A | Register Address | A | S | Slave Address | R | A | Data Byte 1 | A | Data Byte 2 | A | ∼ | Data Byte N | /A | P |
Special Notes:
- The LM94 returns 00h when address locations outside of normal address space are read.
- Block reads do not wrap around from address FFh to 00h.
- If the master acknowledges more bytes that it requested, the LM94 continues to supply data until the master does not acknowledge a byte.
- If the master does not acknowledges a byte to prematurely abort a block read, the LM94 gets off the bus to allow the master to issue a STOP signal.