Протокол WAKE

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Протокол WAKE

Сообщение The_D »

Понадобился открытый протокол для обмена данными. Нашел спецификацию протокола Wake - http://digit-el.com/files/open/wake/wake.html .
Все понятно. Реализовал свой вариант разбора и сборки пакетов. Одно маленькое НО меня гложет. У меня проблема с CRC8. Не совпадает реализация вычисления CRC в программе WakeUp (http://digit-el.com/files/open/wake/dn_wake/wakeup.zip) с описанным в протоколе.
Делаю по описанию протокола:
СRC: Байт контрольной суммы CRC-8. Может отсутствовать в некоторых реализациях протокола. Контрольная сумма CRC-8 рассчитывается перед операцией стаффинга для всего пакета, начиная с байта FEND и заканчивая последним байтом данных. Если в пакете передается адрес, то при вычислении контрольной суммы используется его истинное значение, т.е. единичный старший бит не учитывается. Для расчета контрольной суммы используется полином CRC = X8 + X5 + X4 + 1. Значение CRC перед вычислением инициализируется числом DEh.
Пример:
Посылаем пакет
Изображение
Ловим:
Изображение
Дешифруем пакет и пробуем проверить CRC(по протоколу)

Изображение

Как-то не совпадает. 0x96 != 0x33
Калькулятор верный(проверял). Что делать? Кто знает "правильный" полином и "нужный" байт инициализации?
С одной стороны можно забить и использовать свою реализацию CRC(которая на ура проверятся калькуляторами). С другой было желание использовать программу WakeUp(созданную разработчиком протокола) для тестирования/управления устройств с компа.
Реклама
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Re: Протокол WAKE

Сообщение The_D »

Отвечу сам. Как мне подсказали, в программе WakeUp была применена версия CRC от Dallas. Проверил, работает.

Реализация отлично гуглится - http://forum.arduino.cc/index.php?topic=37648.0
Реклама
Ответить

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