1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| unsigned char cScmbusCrc8Calc ( unsigned char *pcBufData, unsigned short wNbData )
{
unsigned char cLoopBit, cCrc;
unsigned char *pcPtr;
unsigned short wLoopData;
/* Initialisation */
/*================*/
pcPtr = pcBufData;
cCrc = 0x00;
/* Calcul CRC8 */
/*=============*/
Uart3WriteCar ('A');
for ( wLoopData = 0 ; wLoopData < wNbData ; wLoopData ++ )
{
Uart3WriteCar ('B');
cCrc ^= *pcPtr;
pcPtr ++;
for ( cLoopBit = 0 ; cLoopBit < 8 ; cLoopBit ++ )
{
if ( (cCrc & 0x80) != 0 )
{
Uart3WriteCar ('1');
cCrc <<= 1;
cCrc ^= 0x99;
}
else
{
Uart3WriteCar ('0');
cCrc <<= 1;
}
}
}
Uart3WriteCar ('C');
/* Fin */
/*=====*/
Uart3WriteCar (KC_ASCII_CR);
return (cCrc);
} |