Как выполнить 32-байтовое расширенное чтение CRC16 на DS28EC20, 20 КБ, 1-проводная EEPROMPython

Программы на Python
Anonymous
Как выполнить 32-байтовое расширенное чтение CRC16 на DS28EC20, 20 КБ, 1-проводная EEPROM

Сообщение Anonymous »

Я использую однопроводную EEPROM AD DS28EC20 (полагаю, изначально от Maxim) и пытаюсь использовать 32-байтовое расширенное чтение с функцией CRC (команда 0xA5). Я надеюсь получить помощь от некоторых экспертов CRC на этом форуме. Меня интересует реализация на Python, Perl или C.
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
Я создал неудачный Perl-скрипт для вычисления данных, который считывает файл с 35 байтами данных.
Данные для чтения из файла и скрипт:

Код: Выделить всё

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, "

Вернуться в «Python»