CNAOB-Communications-Protocol-Notes: Difference between revisions
Jump to navigation
Jump to search
Embeddedrf (talk | contribs) No edit summary |
Embeddedrf (talk | contribs) |
||
| Line 6: | Line 6: | ||
Only 8 data bits are involved in CRC calculation, with the exclusion of start bit and end bit. | Only 8 data bits are involved in CRC calculation, with the exclusion of start bit and end bit. | ||
Algorithm of 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 | *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 | *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, | ||
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); | *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 | ||
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; | *4) If the shift-out bit is 0, repeat step 3 (right-shifting one more bit); | ||
6) Repeating step 2 to step 5 to process the next byte of the communication message frame; | If the shift-out bit is1, XOR the CRC register data with polynomial A001 (1010 0000 0000 0001) | ||
7) When calculation procedures of the first 5 bytes in the communication message frame are completed, the 16-bit CRC verification | |||
*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. | code will be generated in the 16-bit CRC register. | ||
Revision as of 19:27, 7 July 2008
CRC CheckSum Algorithm
16-bit CRC verification code
Only 8 data bits are involved in CRC calculation, with the exclusion of start bit and end bit.
Algorithm of 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.