CNAOB-Communications-Protocol-Notes
CRC CheckSum Algorithm
4) 16-bit CRC verification code With the verification code, themaster or slave device can check if it has received the right message. Errors may occur during the transmission process of message, due to electronic noise or some other disturbance. The verification code can be used to check whether the communication message in master/slave transmission has errors or not. The 16-bit CRC verification code, placed at the end of the message frame being delivered, is calculated by the device which sends the message. The message-receiving device will recalculate CRC of the receivedmessage to compare with the received CRC. CRC inconsistency indicates errors. Only 8 data bits are involved in CRC calculation, with the exclusion of start bit and end bit. Algorithmof CRC code: 1) Presetting a 16-bit register to hex FFFF (namely 1 for all bits in binary system). The register is called CRC register; 2) XORing the first 8-bit binary data (the first byte of the communication message frame) with the low 8-bit of 16-bit CRC register, then storing the result in CRC register; 3) Right-shifting the register data by one bit (towards lower bit) and filling the highest bit with 0, then checking the shift-out bit; 4) If the shift-out bit is 0, repeat step 3 (right-shifting one more bit); If the shift-out bit is1, XOR the CRC register data with polynomial A001 (1010 0000 0000 0001); 5) Repeating step 3 and step 4 until all of the 8-bit data have been processed after 8 right-shift operations; 6) Repeating step 2 to step 5 to process the next byte of the communication message frame; 7) When calculation procedures of the first 5 bytes in the communication message frame are completed, the 16-bit CRC verification code will be generated in the 16-bit CRC register.