7.5 I2C Transmission from the ATECC608B-TNGLoRaWAN

When the ATECC608B-TNGLoRaWAN is awake and not busy, the bus master can retrieve the current output buffer contents from the device using an I2C read. If valid command results are available, the size of the group returned is determined by the particular command which has been run. Otherwise, the size of the group (and the first byte returned) will always be four: count, status/error, and 2-byte CRC. The bus timing is shown in Figure 8-2.

Table 7-3. I2C Transmission from the ATECC608B-TNGLoRaWAN
NameI2C NameDirectionDescription
Device AddressDevice AddressTo slaveThis byte selects a particular device on the I2C interface and ATECC608B-TNGLoRaWAN will be selected if bits 1 through 7 of this byte match bits 1 through 7 of the I2C_Address byte in the Configuration zone. Bit 0 of this byte is the standard I2C R/W pin, and should be one to indicate that the bytes following the device address travel from the slave to the master (read).
DataData1,NTo masterThe output group, consisting of the count, status/error byte or the output packet followed by the two-byte CRC. See Section I/O Transactions.

The status, error, or command outputs can be read repeatedly by the master. Each time a Read command is sent to the ATECC608B-TNGLoRaWAN along the I2C interface, the device transmits the next sequential byte in the output buffer. See the following section for details on how the device handles the address counter.

If the ATECC608B-TNGLoRaWAN is busy, idle, or asleep, it will NACK the device address on a read sequence. If a partial command has been sent to the device and a read sequence [Start + DeviceAddress(R/W == R)] is sent to the device, then the ATECC608B-TNGLoRaWAN will NACK the device address to indicate that no data is available to be read.