Computer Interfacing
Discussions about interfacing and electronics
 

CRC16-usb for ELV DDS-110 Function Generator

Cannot figure out the algorithm...


 

       Computer Interfacing Forum Index -> Error detection and correction
Author Message
wortel
New User



Joined: 19 Jul 2009
Posts: 3
Location: Utrecht, The Netherlands

Jul 19, 2009 5:13 pm

I want to build a GUI for Linux for the ELV DDS110 Function Generator. It uses a USB interface via a virtual tty port. Using a USB sniffer on a windows machine and using the S/W application that came with the instrument. I captured the following message frames (all in hex):
02 00 10 82 00 78 00 96 ed
02 00 10 82 00 78 01 93 6d
02 00 05 00 66 00 05 7a 58 35 64
CRC16 is in bold and presumably byte-swapped according to the descriptions.
They also claim it is a CRC16-USB checksum, so I set up various routines, using 0x8005 als polynomial, experimenting with initial values to 0xffff and 0x0000, with or without reflecting in- or output data, etc. as suggested by the Painless Guide to CRC. Lammert's great tool does not help me any further either. So, looks like I'm stuck now....
Anyone?
Thanks in advance!
References:
The Windows application (no sources!) can be found here: www dot elv dot de/output/controller.aspx?cid=559&detail=1&detail2=10
and here is the description of the protocol: www dot elv dot de/output/controller.aspx?cid=588&detail=1&detail2=74[/i][/b]
gammatester
Guest







Jul 19, 2009 5:40 pm

A Rocksoft parameter record which reproduce the CRCs of your three data sets is (replace $ with 0x for C)

Poly=$8005 init=$800d xorout=$0000 refin=false refout=false
gammatester
Guest







Jul 19, 2009 5:51 pm

Just another observation: If you prepend two FF byted in front of your messages you get CRC-16/BUYPASS fom Greg's list:

Code:

===== Checking for known algorithms =====
Checked data sets
CRC1: $96ed,   Data1: ffff02001082007800
CRC2: $3564,   Data2: ffff020005006600057a58
Found known algorithm: CRC-16/BUYPASS
CRC=$ed96  Poly=$8005  init=$0000  xorout=$0000  refin=false  refout=false
 *** Second data set verified
===== done =====
wortel
New User



Joined: 19 Jul 2009
Posts: 3
Location: Utrecht, The Netherlands

Jul 20, 2009 4:58 pm

That's great! Thank you very much!
BTW: interesting tool you´re using there...
What is it?
gammatester
Guest







Jul 21, 2009 6:33 am

It is an unpublished GUI frontend for the open source Pascal units crcmodel and crcm_cat implementing Rocksoft Model CRC algorithms.

       Computer Interfacing Forum Index -> Error detection and correction
Page 1 of 1



Running on php BB © 2001, 2009 php BB Group
   Lammert Bies     Interfacing     Sitemap     Forum