Client Mode 10-Bit Address Reception

This section describes a standard sequence of events for the MSSP module configured as an I2C client in 10-bit Addressing mode. Figure 1 shows a standard waveform for a client receiver in 10-bit Addressing mode with clock stretching enabled.

This is a step-by-step process of what must be done by the client software to accomplish I2C communication.

  1. 1.Bus starts Idle.
  2. 2.Host sends Start condition; S bit is set; SSPxIF is set if SCIE is set.
  3. 3.Host sends matching high address with the WR/ bit clear; the UA bit is set.
  4. 4.Client sends ACK and SSPxIF is set.
  5. 5.Software clears the SSPxIF bit.
  6. 6.Software reads received address from SSPxBUF, clearing the BF flag.
  7. 7.Client loads low address into SSPxADD, releasing SCL.
  8. 8.Host sends matching low address byte to the client; UA bit is set.
    Important: Updates to the SSPxADD register are not allowed until after the ACK sequence.
  9. 9.Client sends ACK and SSPxIF is set.
    Important: If the low address does not match, SSPxIF and UA are still set so that the client software can set SSPxADD back to the high address. BF is not set because there is no match. CKP is unaffected.
  10. 10.Client clears SSPxIF.
  11. 11.Client reads the received matching address from SSPxBUF, clearing BF.
  12. 12.Client loads high address into SSPxADD.
  13. 13.Host clocks a data byte to the client and clocks out the client ACK on the ninth SCL pulse; SSPxIF is set.
  14. 14.If the SEN bit is set, CKP is cleared by hardware and the clock is stretched.
  15. 15.Client clears SSPxIF.
  16. 16.Client reads the received byte from SSPxBUF, clearing BF.
  17. 17.If SEN is set the client software sets CKP to release the SCL.
  18. 18.Steps 13-17 repeat for each received byte.
  19. 19.Host sends Stop to end the transmission.
Figure 1. I2C Client, 10-Bit Address, Reception (SEN = 1, AHEN = 0, DHEN = 0)