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.
Name | I2C Name | Direction | Description |
---|---|---|---|
Device Address | Device Address | To slave | This 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). |
Data | Data1,N | To master | The 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.