Functional Description
http://www.motorola.com/computer/literature 3-31
3
I2C Sequential Read
The I2C sequential read can be initiated by either an I2C random read
(described here) or an I2C current address read.
The first step in the programming sequence of an I2C random read
initiation is to test the i2_cmplt bit for the operation-complete status. The
next step is to initiate a start sequence by firs t setting the i2_start and
i2_enbl bits in the I2C Control Register and then writing the device a ddress
(bits 7-1) and write bit (bit 0=0) to the I2C Transmitter Data Register. The
i2_cmplt bit is automatically cleared with the write cycle to the I2C
Transmitter Data Register.
The I2C Status Register must now be polled to test the i2_cmplt and
i2_ackin bits. The i2_cmplt bit becomes set when the device address and
write bit are transmitted, and the i2_ackin bit provides status as to whethe r
or not a slave device acknowledged the device address. With the successful
transmission of the device address, the init ial word address is loaded into
the I2C Transmitter Data Register to be transmitted to the slave device.
Again, i2_cmplt and i2_ackin bits must be tested for proper response.
At this point, the slave device is still in a write mode. Therefore, another
start sequence must be sent to the slave to change the mo de to read by first
setting the i2_start, i2_ackout, and i2_enbl bits in the I2C Control Register
and then writing the device address (bits 7-1) and read bit (bit 0=1) to the
I2C Transmitter Data Register. After i2_cmplt and i2_ackin bits are tested
for proper response, the I2C master controller writes a dummy value
(data=don’t care) to the I2C Transmitter Data Register.This causes t he I2C
master controller to initiate a read transmiss ion from the slave device.
After the I2C master controller has received a byte of data (indicated by
i2_datin=1 in the I2C Status Register) and the i2_cmplt bit has also been
tested for proper status, the I2C master controller responds with an
acknowledge and the system software may then read the data by polling
the I2C Receiver Data Register.