Инструкция по эксплуатации Delta Electronics VFD-VE
Страница 200
РЭ серии VFD-VE
ГЛАВА 4 Программируемые параметры.
- 200 -
CRC (циклическая проверка по избыточности) рассчитанная следующими шагами:
Шаг 1 : Загрузка 16-bit регистра (называемого CRC регистром) с FFFFH;
Шаг 2: Исключающее ИЛИ первому 8-bit байту из командного сообщения с байтом
младшего
порядка из 16-bit регистра CRC, помещение результата в CRC регистр.
Шаг 3: Сдвиг одного бита регистра CRC вправо с MSB нулевым заполнением. Извлечение и
проверка LSB.
Шаг 4: Если LSB CRC регистра равно 0, повторите шаг 3, в противном случае исключающее
ИЛИ
CRC регистра с полиномиальным значением A001H.
Шаг 5: Повторяйте шаг 3 и 4, до тех пор, пока восемь сдвигов не будут выполнены. Затем,
полный
8-
bit байт будет обработан.
Шаг 6: Повторите шаг со 2 по 5 для следующих 8-bit байтов из командного сообщения.
Продолжайте пока все байты не будут обработаны. Конечное содержание CRC регистра
CRC
значение. При передачи значения CRC в сообщении, старшие и младшие байты значения
CRC должны меняться, то есть сначала будет передан младший байт.
На следующем примере приведена CRC генерация с использованием языка С. Функция
берет два аргумента
:
Unsigned char* data <- a pointer to the message buffer
Unsigned char length <- the quantity of bytes in the message buffer
The function returns the CRC value as a type of unsigned integer.
Unsigned int crc_chk(unsigned char* data, unsigned char length){int j;
unsigned int reg cre=0xFFFF;
while(length--){
reg_crc ^= *data++;
for(j=0;j<8;j++){
if(reg_crc & 0
х01){ /*LSB(b0)=1 */
reg_crc=(reg_crc>>1) ^ 0xA001;
}else{
reg crc=reg_crc>>1;
}
}
}
return reg_crc;
}
ООО "НПО "СТОИК ЛТД", 107392 Москва ул.Просторная 7, (495) 661-24-61, http://www.stoikltd.ru