реклама на сайте
подробности

 
 
> SIM5215 & Xmodem, CRC-XMODEM или CRC-CCITT
KAlex
сообщение Apr 28 2010, 07:53
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Пытаюсь залить файл в модуль по протоколу Хмодем. После посылки первого блока модуль отвечает NAK(0x15).
Есть подозрение что у меня неправильно считается CRC.
Сведения из разных источников противоречивы. В одних говотиться, что в протоколе используется CRC-CCITT(полином 0х1021) в других CRC-XMODEM (полином 0х8408).
Пробовал и тот и другой, что то ничего не получилось.
Также непонятно поведение модуля при старте передачи.
После "AT+CRXFILE="ххх.ххх",0" модуль выдает три раза С(0х43) затем начинает выдавать NAK(0x15).
Толковых описаний Xmodem протокола не нашел, везде какие то обрывки и нестыковки.
Какую именно версию модема использует 5215? И может уже у кого есть наработки? Поделитесь, плз.


Вот например.
Ссылка: http://electronix.ru/forum/lofiversion/index.php/t52779.html
Цитата:
CRC-XMODEM calculation. Polynomial: x^16 + x^12 + x^5 + 1 (0x1021) Initial value: 0x0
CRC-CCITT calculation. Polynomial: x^16 + x^12 + x^5 + 1 (0x8408) Initial value: 0xffff

Ссылка: http://www.zorc.breitbandkatze.de/crc.html
Цитата:
CRC-CCITT: 0x1021 = x16 + x12 + x5 + 1
CRC-XMODEM: 0x8408 = x16 + x15 + x10 + x3
Какому бреду верить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KAlex
сообщение Apr 29 2010, 07:34
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Все, разобрался. Дело было действительно в CRC.
Путем перебора разных вариантов выяснил.
Полином CCITT: 0x1021

const unsigned short crc16_table[256] = { 0x0000, 0x1021, 0x2042, 0x3063, ...
int crc16_xmodem( char* data, char len) {
int crc = 0;
char* ptr = data;
while (len--) crc = (crc << 8) ^ crc16_table[((crc >> 8) ^ *ptr++) & 0x00ff];
return crc;
}
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 19 2010, 06:33
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(KAlex @ Apr 29 2010, 10:34) *
Все, разобрался. Дело было действительно в CRC.
Путем перебора разных вариантов выяснил.
Полином CCITT
А не кажется ли странным, что полином для xmodem называется не CRC-XMODEM, а CRC-CCITT? Возможно правы все же те, кто называет CRC с полином 0x11021 CRC-XMODEM?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016