Chapter 5 Parameters|VFD-M-D Series
5-80 Revision Jan. 2007, MDE2, SW V1.05
Step 4: 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 a pointer to the message buffer
Unsigned char length the quantity of bytes in the message buffer
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;
}
3.5 Address list
The contents of available addresses are shown as below: