Error Type TE6 occurs when the R/W bit in a Private transfer is
corrupted. This happens when the Controller intends to initiate a Private Write
transfer, but the Target interprets it as a Private Read transfer due to the corrupted
R/W bit. This results in both Controller and Target taking
control of the SDA line, and the write data from the Controller conflicting with the
read data from the Target.
The Target detects this error by always monitoring the SDA line and the data it
transfers. If the data on the SDA line differs from the data the Target intended to
transmit (with the exception of data transferred during arbitration requests like
Hot-Join, IBI or Dynamic Address Assignment), the Target considers this to be an error.
The
TE6ERR
bit and the
BUSEIF
Bus Error Interrupt Flag are set upon successful detection of TE6 type error. Once set,
the TE6ERR and BUSEIF bits will not self-clear. The user must clear them in software to
re-arm the functionality of each bit individually.
The Target recovers from this error by stopping its transmission and then waiting for the
next Stop or Restart condition.