A host device can transmit a read request to a client, and then
clock data out of the clien. The list below outlines what software for a client will need
to do to accomplish a standard transmission. Figure 1 can
be used as a reference to this list.
- 1.Host sends a Start condition.
- 2.The Start (S)
bit is set; SSPxIF is set if SCIE is set.
- 3.Matching address with WR/ bit set is received by
the Client, setting SSPxIF bit.
- 4.Client hardware generates an ACK and sets SSPxIF.
- 5.The SSPxIF bit is cleared by software.
- 6.Software reads the received address from SSPxBUF,
clearing BF.
- 7.R/W is set so
CKP was automatically cleared after the ACK.
- 8.The client software loads the transmit data into SSPxBUF.
- 9.CKP bit is set by software, releasing SCL, allowing the host to
clock the data out of the client.
- 10.SSPxIF is set after the ACK response from the host is loaded into the ACKSTAT bit.
- 11.SSPxIF bit is cleared.
- 12.The client software checks the ACKSTAT bit to see if the host
wants to clock out more data.
Important:
- 1.If the host
ACKs then the clock will be stretched.
- 2.ACKSTAT is the only bit
updated on the rising edge of the ninth SCL clock instead of the falling
edge.
- 13.Steps 9-13 are repeated for each transmitted byte.
- 14.If the host sends a not ACK; the clock is not held, but SSPxIF is still set.
- 15.The host sends a Restart condition or a Stop.
Figure 1. I2C
Client, 7-Bit Address, Transmission (AHEN = 0
)