https://www.analog.com/en/products/ds28ec20.html


Я записал некоторые данные в первые 32 байта памяти. Ниже приведены 32 байта считанных данных, а также команда 0xA5 и два байта адреса 0x00, а также вычисленная CRC. Поэтому я считаю, что для воспроизведения CRC необходимы всего 35 байт, включая командный байт 0xA5 и два адресных байта 0x00.
Код: Выделить всё
0xA5
0x00
0x00
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x30
0x31
0x32
0x33
0x34
CRC: 0x1181 4481 0001000110000001
Данные для чтения из файла и скрипт:
Код: Выделить всё
0xA5
0x00
0x00
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x30
0x31
0x32
0x33
0x34
Код: Выделить всё
#!/usr/bin/env perl
use strict;
use warnings;
my($file_old, $file_new) = @ARGV;
my $index = 0;
my $num;
my $num2;
my @number_set_1;
my $crc;
my $crc_init = 0;
#my $crc_init = 0xFFFF;
my $crc_n;
my $poly = hex("0x8005");
my $poly_reflected = hex("0xA001");
die "$file_old name must have at least three chars, $!" if length($file_old) < 3;
die "$file_new name must have at least three chars, $!" if length($file_new) < 3;
open (IN, "