Goodrive350-19 series VFD Communication protocols
- 426 -
CRC values are not equal to each other, errors occur in the transmission.
During CRC, 0xFFFF is stored first, and then a process is invoked to process a minimum of 6
contiguous bytes in the frame based on the content in the current register. CRC is valid only for the
8-bit data in each character. It is invalid for the start, end, and check bits.
During the generation of the CRC values, the "exclusive or" (XOR) operation is performed on the
each 8-bit character and the content in the register. The result is placed in the bits from the least
significant bit (LSB) to the most significant bit (MSB), and 0 is placed in the MSB. Then, LSB is
detected. If LSB is 1, the XOR operation is performed on the current value in the register and the
preset value. If LSB is 0, no operation is performed. This process is repeated 8 times. After the last bit
(8
th
bit) is detected and processed, the XOR operation is performed on the next 8-bit byte and the
current content in the register. The final values in the register are the CRC values obtained after
operations are performed on all the bytes in the frame.
The calculation adopts the international standard CRC check rule. You can refer to the related
standard CRC algorithm to compile the CRC calculation program as required.
The following example is a simple CRC calculation function for your reference (using the C
programming language):
unsigned int crc_cal_value(unsigned char*data_value,unsigned char data_length)
{
int i;
unsigned int crc_value=0xffff;
while(data_length--)
{
crc_value^=*dat+;
for(i=0;i<8;i++)
{
if(crc_value&0x0001)
crc_value=(crc_value>>1)^0xa001;
else
crc_value=crc_value>>1;
}
}
return(crc_value);
}