> 19.7.4 | Error Handling on the I²C Bus

> Protocol error:
> If a protocol error is detected the ASCII value "!" is sent to the AT interface. Also, a Stop Condition is sent to the I²C device.
> A protocol error occurs if

> • | any data / address characters do not equal 0...9, a...f and A...F

> • | the length of a read word is smaller or greater than 16 bits

> • | the number of ASCII data is odd (e.g. "af1" instead of "af01")

> • | the Read or Write request is greater than 2 KB (0x0800).

> Acknowledge:
> Once a transmission has completed successfully (Write or Read), the special character "+" (ACK) is included in the Response sent to the AT interface.
> During a Write Transfer, the I²C driver acknowledges each transferred byte, but the Response contains only one ACK which is transmitted only if all bytes are successfully transferred. During a Read Transfer, an ACK is sent when the I²C slave device notifies that it has recognized the I²C Slave Address.
> Not Acknowledge:
> During a Transmit Transfer, a NAK is given when the I²C Slave Device notifies a failure to receive either the I²C Slave Address or a data byte. In this case, a Stop Condition is sent to the I²C device.
> During a Receive Transfer, a NAK is transmitted only when the I²C does not receive any reponse for the I²C Slave Address. The I²C device never acknowledges the validity of the received data (by sending an ACK the master acknowledges each received byte to the slave).