I am using a poorly documented system where a CRC16 is needed in a structure that I need to modify. Modification will not take effect unless I provide the correct checksum.
Technical support has indicated that they were using the standard CRC16, but using the CRC16 CCITT would not give me the result.
I have a small snippet of data and the checksum that it is supposed to have.
Can someone help me find the proper CRC16 parameters (polynomial, initial value) that will match my data set?
Another thing. On the platform in question, addresses are organized with 16 bit words for each address, so I tried both the original byte order and the reversed byte order.
Data Set # 1
crc 0xb19f
data @b306: 7a b1 74 44 9f 84 74 5b
length 8 bytes
Data Set # 2
crc 0x447b
data @0036 00 43 e2 05 5b 03 00 02 00 16 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 c0 00 00 00 07 f7 ff 3f e5 ff ff 3f ff 75 30
3a 98 00 01 00 9d 00 0f 00 09 00 0a 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 0a 80 0f
47 44 09 6d 0a 35 09 c4 f0 00 00 40 10 00 00 01
07 d0 27 10 00 00 ff 38 00 5a ff 06 0a fd 00 05
length 128 bytes
Knowing what I know now, I thing I choose poorly when I selected the organization that does not provide much technical support, I know that now.
[EDIT:] Processor is ~ 8051 but not sure about endianness. My test code tests for both types of endianness as a matter of course.
[EDIT:] I found this other question helpful: CRC16 and data communications
Set-up as follows: