Страница 1 из 1

Протокол WAKE

Добавлено: Сб окт 10, 2015 18:25:25
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(созданную разработчиком протокола) для тестирования/управления устройств с компа.

Re: Протокол WAKE

Добавлено: Вс окт 11, 2015 20:11:57
The_D
Отвечу сам. Как мне подсказали, в программе WakeUp была применена версия CRC от Dallas. Проверил, работает.

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