12 I
2
C (I2C)
S1C17F13 TeChniCal Manual
Seiko epson Corporation
12-7
(Rev. 1.0)
Data Reception in Master Mode
12.4.3
A data receiving procedure in master mode and the I2C Ch.
n
operations are shown below. Figures 12.4.3.1 and
12.4.3.2 show an operation example and a flowchart, respectively.
Data receiving procedure
1. Issue a START condition by setting the I2C
n
CTL.TXSTART bit to 1.
2. Wait for a transmit buffer empty interrupt (I2C
n
INTF.TBEIF bit = 1) or a START condition interrupt (I2C-
n
INTF.STARTIF bit = 1).
Clear the I2C
n
INTF.STARTIF bit by writing 1 after the interrupt has occurred.
3. Write the 7-bit slave address to the I2C
n
TXD.TXD[7:1] bits and 1 that represents READ as the data transfer
direction to the I2C
n
TXD.TXD0 bit.
4. Wait for a receive buffer full interrupt (I2C
n
INTF.RBFIF bit = 1) generated when a one-byte reception
has completed or a NACK reception interrupt (I2C
n
INTF.NACKIF bit = 1) generated when a NACK is re-
ceived.
i. Go to Step 5 when a receive buffer full interrupt has occurred.
ii. Clear the I2C
n
INTF.NACKIF bit and issue a STOP condition by setting the I2C
n
CTL.TXSTOP bit to 1
when a NACK reception interrupt has occurred. Then go to Step 8 or Step 1 if making a retry.
5. Perform one of the operations below when the last or next-to-last data is received.
i. When the next-to-last data is received, write 1 to the I2C
n
CTL.TXNACK bit to send a NACK after the
last data is received, and then go to Step 6.
ii. When the last data is received, read the received data from the I2C
n
RXD register and set the I2C
n
CTL.
TXSTOP to 1 to generate a STOP condition. Then go to Step 8.
6. Read the received data from the I2C
n
RXD register.
7. Repeat Steps 4 to 6 until the end of data reception.
8. Wait for a STOP condition interrupt (I2C
n
INTF.STOPIF bit = 1).
Clear the I2C
n
INTF.STOPIF bit by writing 1 after the interrupt has occurred.
Data receiving operations
Generating a START condition
It is the same as the data transmission in master mode.
Sending slave address
It is the same as the data transmission in master mode. Note, however, that the I2C
n
TXD.TXD0 bit must be
set to 1 that represents READ as the data transfer direction to issue a request to the slave to send data.
Receiving data
After the slave address has been sent, the slave device sends an ACK and the first data. The I2C Ch.
n
sets
the I2C
n
INTF.RBFIF bit to 1 after the data reception has completed. Furthermore, the I2C Ch.
n
returns
an ACK. To return a NACK, such as for a response after the last data has been received, write 1 to the
I2C
n
CTL.TXNACK bit before the I2C
n
INTF.RBFIF bit is set to 1.
The received data can be read out from the I2C
n
RXD register after a receive buffer full interrupt has oc-
curred. The I2C Ch.
n
pulls down SCL to low and enters standby state until data is read out from the I2C
n-
RXD register.
This reading triggers the I2C Ch.
n
to start subsequent data reception.
Generating a STOP or repeated START condition
It is the same as the data transmission in master mode.