CRC надо понять

mahatm
mahatm аватар
Offline
Зарегистрирован: 15.10.2015

В общем есть некий пакет длиной в 32 бита, пакет устроен так:

111111 000000 111111 000000 11 00 11 00 1111

4 поля по 6 бит, в которых передаётся соответственно четыре параметра

2 поля по 2 бита, - это ещё два параметра, которые почти никогда не меняются, и думаю в расчёте CRC  не участвуют.

и собственно суть вопроса - поле в четыре бита, в котором передаётся некая разновидность CRC высчитанная либо со всего пакета, либо с 24 бит четырёх параметров, которые меняются почти в каждом пакете.

Не могу понять как этот CRC в точности считается, может кто обьяснить?

Примеры пакетов:

0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1

это один из 32 пакетов передающихся в начале работы, и все 32 совершенно одинаковые.

1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0

Первый и четвёртый параметры на максимуме - 127, так же видно что изменён один из двух двухбитных параметров.

                                                               
1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1

Ещё один параметр изменился.

1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1
1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0
1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1
1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1
1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0
1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0
1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0

До кучи, включая изменение в один бит.

В точности, нужна формула по которой формируются 4 последних бита пакета.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

для какого устройства требуется? просто интересно чем пытаешься управлять

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Похоже на дополнение до 1111  суммы предыдущих 4-х битных чисел

mahatm
mahatm аватар
Offline
Зарегистрирован: 15.10.2015

IR. RC вертолётик.

На данный момент пациент на пакеты реагирует(т.е миганием лампочки показывает что видит отправляемые данные), но вот отрабатывает только некоторые из параметров, по видимому те, которые в пакетах со случайно совпавшим четырёхбитным концом.

mahatm
mahatm аватар
Offline
Зарегистрирован: 15.10.2015

Andy:  Я правильно понял, что для проверки мне надо пакет поделить на 7 четырёх битных значений(32-4бита хвоста / 4), сложить это семь цифр и результат дополнить таким образом что бы последние четыре бита равнялись единицам?

mahatm
mahatm аватар
Offline
Зарегистрирован: 15.10.2015

Andy Спасибо! Я пока в управлении не проверил, то сам расчёт - верен. Можно узнать, как вам удалось так быстро понять, чисто опыт?

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Полиномы на 4 разрядных числах теряют смысл, остается только сложение.