DS1922L/DS1922T
42 of 48
CRC GENERATION
With the DS1922L/T there are two different types of CRCs (Cyclic Redundancy Checks). One CRC is an 8-bit type
and is stored in the most significant byte of the 64-bit ROM. The bus master can compute a CRC value from the
first 56 bits of the 64-bit ROM and compare it to the value stored within the DS1922L/T to determine if the ROM
data has been received error-free. The equivalent polynomial function of this CRC is: X
+ X
+ X
+ 1. This 8-bit
CRC is received in the true (non-inverted) form. It is computed at the factory and lasered into the ROM.
The other CRC is a 16-bit type, generated according to the standardized CRC16-polynomial function x
16
+ x
15
+ x
2
+ 1. This CRC is used for error detection when reading register pages or the datalog memory using the Read
Memory with CRC command and for fast verification of a data transfer when writing to or reading from the
scratchpad. In contrast to the 8-bit CRC, the 16-bit CRC is always communicated in the inverted form. A CRC-
generator inside the DS1922L/T (Figure 15) calculates a new 16-bit CRC as shown in the command flow chart of
Figure 9. The bus master compares the CRC value read from the device to the one it calculates from the data and
decides whether to continue with an operation or to reread the portion of the data with the CRC error. With the
initial pass through the Read Memory with CRC flow chart, the 16-bit CRC value is the result of shifting the
command byte into the cleared CRC generator, followed by the 2 address bytes and the data bytes. The password
is excluded from the CRC calculation. Subsequent passes through the Read Memory with CRC flow chart generate
a 16-bit CRC that is the result of clearing the CRC generator and then shifting in the data bytes
.
With the Write Scratchpad command the CRC is generated by first clearing the CRC generator and then shifting in
the command code, the Target Addresses TA1 and TA2 and all the data bytes. The DS1922L/T transmits this CRC
only if the data bytes written to the scratchpad include scratchpad ending offset 11111b. The data may start at any
location within the scratchpad.
With the Read Scratchpad command the CRC is generated by first clearing the CRC generator and then shifting in
the command code, the Target Addresses TA1 and TA2, the E/S byte, and the scratchpad data starting at the
target address. The DS1922L/T transmits this CRC only if the reading continues through the end of the scratchpad,
regardless of the actual ending offset. For more information on generating CRC values see
Application Note 27
.
Figure 15. CRC-16 Hardware Description and Polynomial
Polynomial = X
16
+ X
15
+ X
2
+ 1
X
0
X
1
X
2
X
3
X
4
X
5
X
6
X
7
X
8
X
9
X
10
X
11
X
12
X
13
X
14
X
15
X
16
1
st
STAGE
2
nd
STAGE
3
rd
STAGE
4
th
STAGE
6
th
STAGE
5
th
STAGE
7
th
STAGE
8
th
STAGE
9
th
STAGE
10
th
STAGE
11
th
STAGE
12
th
STAGE
13
th
STAGE
14
th
STAGE
15
th
STAGE
16
th
STAGE
INPUT DATA
CRC
OUTPUT