2.2.7.4 10-bit Transmission

The list below outlines the steps for 10-bit transmission in Slave mode:

  1. Master issues a Start condition.
  2. The Start (S) bit is set, SSPxIF is set; if SSPxIE is set, jump to ISR.
  3. Software clears SSPxIF.
  4. Slave receives upper address byte of 10-bit address with R/W bit clear, hardware sets BF and UA, and clears D/A. Hardware stretches the clock.
  5. Slave hardware compares the received address byte with the address loaded into SSPxADD.
  6. Slave transmits ACK sequence. If address does not match, slave transmits a NACK sequence.
  7. Slave hardware sets SSPxIF.
  8. Slave software reads SSPxBUF, hardware clears BF.
  9. Software clears SSPxIF.
  10. Software loads the lower 10-bit address into SSPxADD, clearing UA and releasing SCL.
  11. Slave receives lower address byte, sets BF and UA.
  12. Hardware compares the received address byte to the address loaded into SSPxADD.
  13. Slave transmits ACK sequence, sets SSPxIF.
  14. Software reads SSPxBUF, hardware clears BF.
  15. Software clears SSPxIF.
  16. Software loads SSPxADD with the high byte of the 10-bit address, hardware clears UA.
  17. Master issues a Restart condition and transmits high byte of 10-bit address with R/W set.
  18. Slave receives the high byte of the 10-bit address with the R/W bit set, hardware sets BF and R/W.
  19. Hardware compares the received address byte to the address loaded into SSPxADD.
  20. Software reads SSPxBUF, clearing BF.
  21. Hardware issues an ACK sequence, sets SSPxIF.
  22. After the 9th falling SCL edge, hardware clears CKP (clock stretch), allowing software to load SSPxBUF with data to transmit, setting BF.
  23. Software sets CKP, releasing the clock.
  24. Slave transmits full byte, hardware clears BF and sets D/A.
  25. Slave receives ACK from master, hardware clears ACKSTAT and sets SSPxIF.
  26. Software clears SSPxIF.
  27. Slave repeats steps 22 - 26 until all bytes have been transmitted.
  28. Slave receives Stop condition, setting the P bit.
Figure 2-15. I2C Slave Mode Waveform (Transmission, 10-bit Address)