Specifications

©Copyright 2001-2013 SD Group (Panasonic, SanDisk, Toshiba) and SD Card Association
Physical Layer Simplified Specification Version 4.10
63
CRC16
In the case of one DAT line usage, the CRC16 is used for payload protection in block transfer mode.
The CRC check sum is a 16-bit value and is computed as follows:
Generator polynomial G(x) = x
16
+x
12
+x
5
+1
M(x) = (first bit) * x
n
+ (second bit)* x
n-1
+...+ (last bit) * x
0
CRC[15...0] = Remainder [(M(x) * x
16
)/G(x)]
The first bit is the first data bit of the corresponding block. The degree n of the polynomial denotes the
number of bits of the data block decreased by one (e.g. n = 4095 for a block length of 512 bytes). The
generator polynomial G(x) is a standard CCITT polynomial. The code has a minimal distance d=4 and
is used for a payload length of up to 2048 Bytes (n <= 16383).
The same CRC16 method shall be used in single DAT line mode and in wide bus mode.
In wide bus mode, the CRC16 is done on each line separately.
data in
data out
Figure 4-21: CRC16 Generator/Checker
CRC16 Example
512 bytes with 0xFF data --> CRC16 = 0x7FA1