CRC för 256 byte data

J

john2020

Guest
Hej allaKan följande kod användas för att upptäcka ett fel i ett datapaket på 256 byte?/ *
* Funktion: Do_CRC8
* * Beskrivning:
* Beräknar CRC värde med tanke på byte och den gamla CRC värde som ett statiskt värde
*
* Return Value: CRC värde
* Parametrar: Indata byte vara CRC'ed
* Anmärkningar:
* Används en tabell drivs metod för att påskynda det hela.
*
* * /
unsigned char Do_CRC8 (unsigned char xx)
(
/ / Detta förfarande beräknar
const unsigned char kodtabellen [256] = (
0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
0x70, 0x77, 0x7E, 0x79, 0x6c, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5D,
0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xac, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9a,
0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xec, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3a, 0x33, 0x34,
0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7f, 0x6A, 0x6D, 0x64, 0x63,
0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1a, 0x1D, 0x14, 0x13,
0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9f, 0x8A, 0x8D, 0x84, 0x83,
0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3

);

ucCRC = Tabell [ucCRC ^ XX];

return (ucCRC);
)svara mig med lite förslag och idéer så tidigt som möjligt

hälsningar
john

 
> Kan följande kod användas för att upptäcka ett fel i ett datapaket på 256 byte?

Det ser plausable.

En 8bit CRC kommer låta mycket dålig paket genom oupptäckta.När flera bitar i en påse få bläddrade eller om ett byte försvinner du har en grov 1 256 chans att det dåliga data med samma CRC8 som de ursprungliga uppgifterna så att felet inte upptäcks.

 
hej throwaway18

Tack för ditt reply.have du försökt genomföra en CRC 16bit eller 32bit? om så pls svara me.can du föreslå mig några bra bok, där jag kunde hämta mer information om genomförandet av barnkonventionen?

 
Ditt program är verkligen mycket snabbt, men det kräver mycket av blixt.
Om du har tillräckligt med tid kanske den här koden kan hjälpa er.

Gomez

/************************************************* ****************************
*** ***
*** Funktion: crc8 ***
*** Beskrivning: funktion calc crc8 summa ***
*** Ingång: pointer gamla CRC summa, nya uppgifter ***
*** Output: non ***
*** ***
************************************************** ***************************/
void crc8 (unsigned char * CRC, unsigned char data)
(
int index = 8;
int fb;

do (
fb = (* CRC ^ data) & 0x01;
data>> = 1;
* crc>> = 1;

if (fb)
* crc ^ = 0x8c;

) while (- index);
)

/************************************************* ****************************
*** ***
*** Funktion: crc16 ***
*** Beskrivning: funktion calc crc16 summa ***
*** Ingång: pointer gamla CRC summa, nya uppgifter ***
*** Output: non ***
*** ***
************************************************** ***************************/
void crc16 (unsigned int * CRC, unsigned char data)
(
int index = 8;
unsigned char fb;

* crc ^ = (unsigned long) data <<8;
do (
if (* CRC & 0x8000)
* crc = (* crc <<1) ^ 0x1021;
annan
* crc <<= 1;
) while (- index);
)

 
Dear Gomez

Tack för ditt pseudo code.i försöka att ut, men åt du säker på att det wil upptäcka CRC för 256 byte data? anyways
Låt mig kontrollera produktionen

hälsningar
john

 
john2020 skrev:

Tack för ditt pseudo code.i försöka att ut, men åt du säker på att det wil upptäcka CRC för 256 byte data? anyways

Låt mig kontrollera produktionen

 

Welcome to EDABoard.com

Sponsor

Back
Top