Datasheet

ADM1064
Rev. D | Page 28 of 32
Block Read Error Correction
In a block read operation, the master device reads a block of data
from a slave device. The start address for a block read must have
been set previously. In the ADM1064, this is done by a send byte
operation to set a RAM address, or a write byte/word operation
to set an EEPROM address. The block read operation itself consists
of a send byte operation that sends a block read command to
the slave, immediately followed by a repeated start and a read
operation that reads out multiple data bytes, as follows:
The ADM1064 provides the option of issuing a packet error
correction (PEC) byte after a write to the RAM, a write to the
EEPROM, a block write to the RAM/EEPROM, or a block read
from the RAM/ EEPROM. This option enables the user to verify
that the data received by or sent from the ADM1064 is correct.
The PEC byte is an optional byte sent after the last data byte has
been written to or read from the ADM1064. The protocol is the
same as a block read for Step 1 to Step 12 and then proceeds as
follows:
1.
The master device asserts a start condition on SDA.
2.
The master sends the 7-bit slave address followed by the
write bit (low).
13. The ADM1063 issues a PEC byte to the master. The master
checks the PEC byte and issues another block read if the
PEC byte is incorrect. 3.
The addressed slave device asserts an ACK on SDA.
4.
The master sends a command code that tells the slave
device to expect a block read. The ADM1064 command
code for a block read is 0xFD (1111 1101).
14. A NACK is generated after the PEC byte to signal the end
of the read.
15.
The master asserts a stop condition on SDA to end the
transaction. 5.
The slave asserts an ACK on SDA.
6.
The master asserts a repeat start condition on SDA.
Note that the PEC byte is calculated using CRC-8. The frame
check sequence (FCS) conforms to CRC-8 by the polynomial
7.
The master sends the 7-bit slave address followed by the
read bit (high).
C(x) = x
8
+ x
2
+ x
1
+ 1
8.
The slave asserts an ACK on SDA.
9.
The ADM1064 sends a byte-count data byte that tells the
master how many data bytes to expect. The ADM1064
always returns 32 data bytes (0x20), which is the maximum
allowed by the SMBus Version 1.1 specification.
See the SMBus Version 1.1 specification for details.
An example of a block read with the optional PEC byte is shown
in Figure 42.
04633-047
SLAVE
ADDRESS
SWA
2
COMMAND 0xFD
(BLOCK READ)
413
A
5
S
6
SLAVE
ADDRESS
7
BYTE
COUNT
910 1211
ARA
8
DATA
1
DATA
32
A
13
PEC
14
A
15
P
A
10.
The master asserts an ACK on SDA.
11.
The master receives 32 data bytes.
12.
The master asserts an ACK on SDA after each data byte.
13.
The master asserts a stop condition on SDA to end the
transaction.
04633-046
SLAVE
ADDRESS
SWA
2
COMMAND 0xFD
(BLOCK READ)
413
A
5
S
6
SLAVE
ADDRESS
7
BYTE
COUNT
910 1211
ARA
8
DATA
1
DATA
32
A
13
P
A
Figure 42. Block Read from the EEPROM or RAM with PEC
Figure 41. Block Read from the EEPROM or RAM