29.5.3.2 7-Bit Transmission

A host device can transmit a read request to a client, and then clock data out of the client. The list below outlines what software for a client will need to do to accomplish a standard transmission. Figure 29-18 can be used as a reference to this list.

  1. The host sends a Start condition on SDA and SCL.
  2. The S bit is set; SSPxIF is set if interrupt on Start detect is enabled.
  3. Matching address with the R/W bit set is received by the Client, setting the SSPxIF bit.
  4. Client hardware generates an ACK and sets SSPxIF.
  5. The SSPxIF bit is cleared by user.
  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. The CKP bit is set 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 register.
  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.
  16. The client is no longer addressed.
Figure 29-18. I2C Client, 7-Bit Address, Transmission (AHEN = 0)