I'm not a C programmer, but I've stubled through the WinTest source code. I believe I've found and understtod the CRC calculation. But I'm missing something, becuse my crc calculations don't match those I've see WinTest generating. Can someone take a look at the following and let me know where I'm stumbling?
Send ping packet from host to CFA633
Type: 0 ttcccccc
00000000
Data Length: 0
Packet to send: 0x0000 0x0000
Calculate the CRC
b1 = data
w1 = seed
w2 = w1 ^ b1
b2 = w2 & 0xFF
w3 = crcLookup(b2)
w4 = seed >> 8
crc = w4 ^ w3
First byte -> data = 0x0000 seed = 0xFFFF
b1 = 0x0000
w1 = 0xFFFF
w2 = 0xFFFF ^ 0x0000 = 0xFFFF
b2 = 0xFFFF & 0x00FF = 0x00FF
w3 = crcLookupTable(16) = 0x0F78
w4 = 0xFFFF >> 8 = 0x0
crc = 0x0000 ^ 0x0F78 = 0x0F78
Second Byte -> data = 0x0000 seed 0x0F78
b1 = 0x0000
w1 = 0x0F78
w2 = 0x0F78 ^ 0x0000 = 0x0F78
b2 = 0x0F78 & 0x00FF = 0x0078
w3 = crcLookupTable(120) = 0xFFCF
w4 = 0x0F78 >> 8 = 0x000F
crc = 0x000F ^ 0xFFCF = 0xFFC0
So my crc calculates to 0xFFC0 but WinTest is generating 0x0F47... can anyone tell me what I'm doing wrong? Thanks.
Send ping packet from host to CFA633
Type: 0 ttcccccc
00000000
Data Length: 0
Packet to send: 0x0000 0x0000
Calculate the CRC
b1 = data
w1 = seed
w2 = w1 ^ b1
b2 = w2 & 0xFF
w3 = crcLookup(b2)
w4 = seed >> 8
crc = w4 ^ w3
First byte -> data = 0x0000 seed = 0xFFFF
b1 = 0x0000
w1 = 0xFFFF
w2 = 0xFFFF ^ 0x0000 = 0xFFFF
b2 = 0xFFFF & 0x00FF = 0x00FF
w3 = crcLookupTable(16) = 0x0F78
w4 = 0xFFFF >> 8 = 0x0
crc = 0x0000 ^ 0x0F78 = 0x0F78
Second Byte -> data = 0x0000 seed 0x0F78
b1 = 0x0000
w1 = 0x0F78
w2 = 0x0F78 ^ 0x0000 = 0x0F78
b2 = 0x0F78 & 0x00FF = 0x0078
w3 = crcLookupTable(120) = 0xFFCF
w4 = 0x0F78 >> 8 = 0x000F
crc = 0x000F ^ 0xFFCF = 0xFFC0
So my crc calculates to 0xFFC0 but WinTest is generating 0x0F47... can anyone tell me what I'm doing wrong? Thanks.
Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.