CRC надо понять
- Войдите на сайт для отправки комментариев
В общем есть некий пакет длиной в 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 последних бита пакета.
для какого устройства требуется? просто интересно чем пытаешься управлять
Похоже на дополнение до 1111 суммы предыдущих 4-х битных чисел
IR. RC вертолётик.
На данный момент пациент на пакеты реагирует(т.е миганием лампочки показывает что видит отправляемые данные), но вот отрабатывает только некоторые из параметров, по видимому те, которые в пакетах со случайно совпавшим четырёхбитным концом.
Andy: Я правильно понял, что для проверки мне надо пакет поделить на 7 четырёх битных значений(32-4бита хвоста / 4), сложить это семь цифр и результат дополнить таким образом что бы последние четыре бита равнялись единицам?
Andy Спасибо! Я пока в управлении не проверил, то сам расчёт - верен. Можно узнать, как вам удалось так быстро понять, чисто опыт?
Полиномы на 4 разрядных числах теряют смысл, остается только сложение.