Client device reception with AHEN
and DHEN set operate the same as without these options with extra interrupts and
clock stretching added after the eighth falling edge of SCL. These additional interrupts
allow the client software to decide whether it wants to ACK the receive address or data byte, rather than the hardware. This
functionality adds support for PMBusā¢ that was not present on previous versions of this
module.
This list describes the steps that need to be taken by client
software to use these options for I2C communication.
Figure 1 displays a module using both address and data holding. Figure 2
includes the operation with the SEN
bit set.
- 1.The Start (S)
bit is set; SSPxIF is set if SCIE is set.
- 2.Matching address with the WR/ bit clear is clocked in. SSPxIF is set and
CKP cleared after the eighth falling edge of SCL.
- 3.Software clears the SSPxIF.
- 4.Client can look at the ACKTIM bit to determine if the SSPxIF was after or before the ACK.
- 5.Client reads the address value from SSPxBUF,
clearing the BF flag.
- 6.Client transmits an ACK to the host by clearing ACKDT.
- 7.Client releases the clock by setting CKP.
- 8.SSPxIF is set after an ACK, not after a NACK.
- 9.If SEN =
1
, the client hardware will stretch
the clock after the ACK.
- 10.Client clears SSPxIF.
Important: SSPxIF is still set after the ninth falling edge of SCL even if
there is no clock stretching and BF has been cleared. Only if a NACK is sent to the
host is SSPxIF not set.
- 11.SSPxIF is set and CKP cleared after eighth falling edge of SCL
for a received data byte.
- 12.Client looks at the ACKTIM bit to determine the source of the
interrupt.
- 13.Client reads the received data from SSPxBUF, clearing BF.
- 14.Steps 7-14 are the same for each received data byte.
- 15.Communication is ended by either the client sending a NACK, or
the host sending a Stop condition. If a Stop is sent and the Stop Condition Interrupt
Enable (PCIE) bit is clear, the client will only know by polling the Stop (P)
bit.
Figure 1. I2C Client, 7-Bit Address, Reception (SEN = 0
, AHEN =
1
, DHEN = 1
)
Figure 2. I2C Client, 7-Bit Address, Reception (SEN = 1
, AHEN =
1
, DHEN = 1
)