There are two levels of acknowledge.
- The low-level acknowledges indicating reception of each byte that is part of the I2C protocol. This is managed by the hardware if proper I2C settings are set on the slave registers.
- The high-level acknowledge indicates that the checksum of the BSL core command obtained is correct and as expected. In some cases, this ACK can indicate the command was properly executed. This is the first byte of RDATA. If this is NAK (other than 0x00), it indicates that a proper command was not received and the master should consider that command transmission as a failure. If this is ACK (0x00), it indicates that the transmission or reception of the command was correct with the right checksum and that the data which follows is the response, if any, from the slave. The slave can keep the CLK line low if it needs time to process before it responds to the command.