Delta C2000 series User Manual page 346

Classical field oriented. control ac motor drive
Hide thumbs Also See for C2000 series:
Table of Contents

Advertisement

If the LSB of CRC register is 0, shift the CRC register one bit to the right with MSB zero filling, then
repeat step 3. If the LSB of CRC register is 1, shift the CRC register one bit to the right with MSB
zero filling, Exclusive OR the CRC register with the polynomial value A001H, then repeat step 3.
Step 5:
Repeat step 3 and 4 until eight shifts have been performed. When this is done, a complete 8-bit
byte will have been processed.
Step 6:
Repeat step 2 to 5 for the next 8-bit byte of the command message. Continue doing this until all
bytes have been processed. The final contents of the CRC register are the CRC value. When
transmitting the CRC value in the message, the upper and lower bytes of the CRC value must be
swapped, i.e. the lower order byte will be transmitted first.
The following is an example of CRC generation using C language. The function takes two
arguments:
Unsigned char* data
Unsigned char length
The function returns the CRC value as a type of unsigned integer.
Unsigned int crc_chk(unsigned char* data, unsigned char length)
{
int j;
unsigned int reg_crc=0Xffff;
while(length--){
reg_crc ^= *data++;
for(j=0;j<8;j++){
if(reg_crc & 0x01){ /* LSB(b0)=1 */
reg_crc=(reg_crc>>1) ^ 0Xa001;
}else{
reg_crc=reg_crc >>1;
}
}
}
return reg_crc;
Chapter 12 Description of Parameter Settings|C2000 Series
a pointer to the message buffer
the quantity of bytes in the message buffer
// return register CRC
12-139

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents