ATSHA204A
I2C Interface
Any attempt to read beyond the end of the valid output buffer returns 0xFF to the system and the address
counter does not wrap around to the beginning of the buffer.
There may be situations where the system may wish to re-read the output buffer, for example when the
CRC check reveals an error. In this case, the master should send a two-byte sequence to the
ATSHA204A consisting of the correct device address and a word address of 0x00 (Reset, per Table
Table 6-2), followed by a Stop condition. This causes the address counter to be reset to zero and permits
the data to be re-written (re-read) to (from) the device. This address reset sequence does not prohibit
subsequent read operations if data were available for reading in the I/O buffer prior to the sequence
execution.
After one or more Read operations to retrieve the results of a command execution, the first Write
operation resets the address counter to the beginning of the I/O buffer.
6.5 I2C Synchronization
It is possible for the system to lose synchronization with the I/O port on the ATSHA204A, for example due
a system reset, I/O noise, or some other condition. Under this circumstance, the ATSHA204A may not
respond as expected, may be asleep, or may be transmitting data during an interval when the system is
expecting to send data. Any command results in the I/O buffer may be lost when the system and device
lose synchronization. To re-synchronize, the following procedure should be followed:
1. To ensure an I/O channel reset, the system should send the standard I2C software reset sequence,
as follows:
– A Start condition.
– Nine cycles of SCL with SDA held high.
– Another Start condition.
– A Stop condition.
It should then be possible to send a read sequence and if synchronization has completed properly,
the ATSHA204A will ACK the device address. The device either returns data or leaves the bus
floating (which the system interprets as a data value of 0xFF) during the data periods.
If the device does ACK the device address, the system should reset the internal address counter to
force the ATSHA204A to ignore any partial input command that may have been sent. This can be
accomplished by sending a write sequence to word address 0x00 (Reset), followed by a Stop
condition.
2. If the device does not respond to the device address with an ACK, then it may be asleep. In this
case, the system should send a complete wake token and wait tWHI after the rising edge. The
system may then send another read sequence and, if synchronization has completed, the device
will ACK the device address.
3. If the device still does not respond to the device address with an ACK, then it may be busy
executing a command. The system should wait the longest tEXEC (max) and then send the read
sequence, which is acknowledged by the device.
© 2018 Microchip Technology Inc.
DS40002025A-page 33