Moreover, the I²C protocol also helps at dealing with communication problems. Any device
present on the I²C listens to it permanently. Potential masters on the I²C detecting a STARTcondition will wait until a STOP is detected to attempt a new bus access. Slaves on the I²C bus
will decode the device address that follows the START condition and check if it matches theirs.
All the slaves that are not addressed will wait until a STOP condition is issued before listening
again to the bus. Similarly, since the I²C protocol foresees active-low acknowledge bit after each
byte, the master / slave couple is able to detect their counterpart presence. Ultimately, if anything
else goes wrong, this would mean that the device ‘talking on the bus’ (master or slave) would
know it by simply comparing what it sends with what is seen on the bus. If a difference is
detected, a STOP condition must be issued, which releases the bus.