Current location - Quotes Website - Signature design - Kneel for the C language program of 24-bit CRC check and generate the polynomial G (x) = x 24+x 23+x 6+x 5+x+ 1.
Kneel for the C language program of 24-bit CRC check and generate the polynomial G (x) = x 24+x 23+x 6+x 5+x+ 1.
Long int generate checksumcrc24 _ d32 (unsigned long ulNumValues, unsigned long *pulData)

{

Unsigned length I, ulData, lfsr = 0xFFFFFF.

for(I = 0x 0; I & ltulNumValuesi++)

{

ul data = pul data[I];

lfsr = CRC24_D32(lfsr,ul data);

}

Return to lfsr

}

Static unsigned long CRC24_D32 (constant unsigned long old_CRC, constant unsigned long data)

{

Unsigned length d [32];

Unsigned long integer C [24];

Unsigned long integer newcrc [24];

Unsigned long integer ulCRC24 _ D32

Unsigned long integer f, tmp

Unsigned long integer bit _ mask = 0x000001;

tmp = 0x000000

//Convert the previous CRC value to binary.

bit _ mask = 0x 00000 1;

for(f = 0; f & lt= 23; f++)

{

c[f]=(old _ CRC & amp; bit_mask)>& gtf;

bit_mask = bit_mask <& lt 1;

}

//Convert data to binary.

bit _ mask = 0x 00000 1;

for(f = 0; f & lt= 3 1; f++)

{

d[f]=(Data & amp; bit_mask)>& gtf;

bit_mask = bit_mask <& lt 1;

}

//Calculate a new LFSR value.

new CRC[0]= d[3 1]^ d[30]^ d[29]^ d[28]^ d[27]^ d[26]^ d[25]^

d[24]^ d[23]^ d[ 17]^ d[ 16]^ d[ 15]^ d[ 14]^ d[ 13]^

d[ 12]^ d[ 1 1]^ d[ 10]^ d[9]^ d[8]^ d[7]^ d[6]^

d[5]^ d[4]^ d[3]^ d[2]^ d[ 1]^ d[0]^ c[0]^ c[ 1]^

c[2]^ c[3]^ c[4]^ c[5]^ c[6]^ c[7]^ c[8]^ c[9]^

c[ 15]^ c[ 16]^ c[ 17]^ c[ 18]^ c[ 19]^ c[20]^ c[2 1]^

c[22]^ c[23];

new CRC[ 1]= d[23]^ d[ 18]^ d[0]^ c[ 10]^ c[ 15];

new CRC[2]= d[24]^ d[ 19]^ d[ 1]^ c[ 1 1]^ c[ 16];

new CRC[3]= d[25]^ d[20]^ d[2]^ c[ 12]^ c[ 17];

new CRC[4]= d[26]^ d[2 1]^ d[3]^ c[ 13]^ c[ 18];

new CRC[5]= d[3 1]^ d[30]^ d[29]^ d[28]^ d[26]^ d[25]^ d[24]^

d[23]^ d[22]^ d[ 17]^ d[ 16]^ d[ 15]^ d[ 14]^ d[ 13]^

d[ 12]^ d[ 1 1]^ d[ 10]^ d[9]^ d[8]^ d[7]^ d[6]^

d[5]^ d[3]^ d[2]^ d[ 1]^ d[0]^ c[0]^ c[ 1]^ c[2]^

c[3]^ c[4]^ c[5]^ c[6]^ c[7]^ c[8]^ c[9]^ c[ 14]^

c[ 15]^ c[ 16]^ c[ 17]^ c[ 18]^ c[20]^ c[2 1]^ c[22]^

c[23];

LFSR code example

The signature is a polynomial x24+ x23+ x6.

+ x5

24-bit CRC of +x+ 1 The initial value is 0xFFFFFF.

AN- 1 160

Revision A | Page 7 of 8

new CRC[6]= d[28]^ d[ 18]^ d[5]^ d[0]^ c[ 10]^ c[20];

new CRC[7]= d[29]^ d[ 19]^ d[6]^ d[ 1]^ c[ 1 1]^ c[2 1];

new CRC[8]= d[30]^ d[20]^ d[7]^ d[2]^ c[ 12]^ c[22];

new CRC[9]= d[3 1]^ d[2 1]^ d[8]^ d[3]^ c[0]^ c[ 13]^ c[23];

new CRC[ 10]= d[22]^ d[9]^ d[4]^ c[ 1]^ c[ 14];

new CRC[ 1 1]= d[23]^ d[ 10]^ d[5]^ c[2]^ c[ 15];

new CRC[ 12]= d[24]^ d[ 1 1]^ d[6]^ c[3]^ c[ 16];

new CRC[ 13]= d[25]^ d[ 12]^ d[7]^ c[4]^ c[ 17];

new CRC[ 14]= d[26]^ d[ 13]^ d[8]^ c[0]^ c[5]^ c[ 18];

new CRC[ 15]= d[27]^ d[ 14]^ d[9]^ c[ 1]^ c[6]^ c[ 19];

new CRC[ 16]= d[28]^ d[ 15]^ d[ 10]^ c[2]^ c[7]^ c[20];

new CRC[ 17]= d[29]^ d[ 16]^ d[ 1 1]^ c[3]^ c[8]^ c[2 1];

new CRC[ 18]= d[30]^ d[ 17]^ d[ 12]^ c[4]^ c[9]^ c[22];

new CRC[ 19]= d[3 1]^ d[ 18]^ d[ 13]^ c[5]^ c[ 10]^ c[23];

new CRC[20]= d[ 19]^ d[ 14]^ c[6]^ c[ 1 1];

new CRC[2 1]= d[20]^ d[ 15]^ c[7]^ c[ 12];

new CRC[22]= d[2 1]^ d[ 16]^ c[8]^ c[ 13];

new CRC[23]= d[3 1]^ d[30]^ d[29]^ d[28]^ d[27]^ d[26]^ d[25]^

d[24]^ d[23]^ d[22]^ d[ 16]^ d[ 15]^ d[ 14]^ d[ 13]^

d[ 12]^ d[ 1 1]^ d[ 10]^ d[9]^ d[8]^ d[7]^ d[6]^

d[5]^ d[4]^ d[3]^ d[2]^ d[ 1]^ d[0]^ c[0]^ c[ 1]^

c[2]^ c[3]^ c[4]^ c[5]^ c[6]^ c[7]^ c[8]^ c[ 14]^

c[ 15]^ c[ 16]^ c[ 17]^ c[ 18]^ c[ 19]^ c[20]^ c[2 1]^

c[22]^ c[23];

ulc rc24 _ D32 = 0;

// LFSR values range from binary to hexadecimal.

bit _ mask = 0x 00000 1;

for(f = 0; f & lt= 23; f++)

{

ul RCC 24 _ D32 = ul RCC 24 _ D32+new CRC[f]* bit _ mask;

bit_mask = bit_mask <& lt 1;

}

return(ulrcc 24 _ D32 & amp; 0x 00 ffffff);

}