29.2.3.7.2 7-Bit Transmission

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 29-22 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 R/W 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 29-22. I2C Client, 7-Bit Address, Transmission (AHEN = 0)