|
STM32F0 и CRC16, как быть с байтами? |
|
|
|
Feb 5 2016, 07:20
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(SSerge @ Dec 22 2015, 10:42)  Вы оба правы  У F030 и F070 полином не изменяемый, а у остальных: F0x1, F0x2 и F0x8 можно дополнительно грузить полином и настраивать его длину 7, 8, 16, 32 бита. Для обоих в реф. мануалах пишут что можно писать байтами, полусловами или словами. Подниму тему, у меня вопрос именно про CRC в STM32F070. Хочу использовать CRC 16-битный. Можно ли для этого задействовать аппаратный модуль данного МК ? Очень мутно написано в рефмануале про возможность выбора длины и вида полинома, в тексте есть такое: Цитата Uses CRC-32 (Ethernet) polynomial: 0x4C11DB7 X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1 • Alternatively uses a fully programmable polynomial with programmable size (7, 8, 16, 32 bits). • Handles 8-,16-, 32-bit data size • Programmable CRC initial value Но в списке регистров не вижу ничего, позволяющего "Alternatively uses a fully programmable polynomial with programmable size". То есть только CRC32 с полиномом 0x4C11DB7 ? И что будет считать быстрее: использовать имеющийся табличный расчет CRC16, или все-таки можно пробовать приспособить этот аппаратный модуль под что-то, дающее на выходе циклически рассчитанное 16-битное значение? Вопрос именно в скорости вычислений, нужно минимизировать задержку от момента появления данных до их отправки. Хм.Или вообще уйти от CRC на что-то ксоровидное, канал довольно чистый (межплатное соединение внутри корпуса), если аппаратный модуль не приклеивается...
|
|
|
|
|
Feb 5 2016, 13:19
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Ruslan1 @ Feb 5 2016, 10:20)  Хм.Или вообще уйти от CRC на что-то ксоровидное, канал довольно чистый (межплатное соединение внутри корпуса), если аппаратный модуль не приклеивается... Скажу банальность, но XOR - плохо. Лично наступал на грабли "при отвалившемся проводе принимаем 0xFF, контрольная сумма сходится". Хотя б байты складывать... (дополнил)Цитата(toweroff @ Feb 5 2016, 16:04)  Там все просто, пишем данные в регистр и после записи последнего слова имеем рассчитанную CRC Вот интересно мне, сиё для кого написано было?.. Цитата(SSerge @ Dec 22 2015, 11:42)  У F030 и F070 полином не изменяемый, а у остальных: F0x1, F0x2 и F0x8 можно дополнительно грузить полином и настраивать его длину 7, 8, 16, 32 бита. Цитата(Ruslan1 @ Feb 5 2016, 10:20)  Подниму тему, у меня вопрос именно про CRC в STM32F070. Хочу использовать CRC 16-битный.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Feb 5 2016, 15:34
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(esaulenka @ Feb 5 2016, 15:19)  Скажу банальность, но XOR - плохо. Лично наступал на грабли "при отвалившемся проводе принимаем 0xFF, контрольная сумма сходится". Хотя б байты складывать... Да, понимаю, спасибо. Кстати, у меня было как-то, что CRC16 у разных пакетов данных сходились: делал базу на всего-то пару тысяч записей (примерно по 260 байт), и делал индексирование для быстрого поиска, индексом(сигнатурой) была CRC16 блока. И данные заведомо разные (там в том числе и дата-время были в блоке, и номер записи). Но вот повторяющиеся сигнатуры встречались, и нередко. Пришлось дополнительно еще и дату-время проверять у вытащенной по индексу записи, CRC16 в качестве уникальной сигнатуры не хватало  Но у меня условия будут тепличные (длина линии связи сантиметров пять), да и просто не придет такой тривиальный пакет (у меня там SLIP фреймы принимать будет), ну и на уровне приложения тоже есть некоторая проверка кроме контрольной суммы. Цитата(toweroff @ Feb 5 2016, 17:20)  а ведь и правда... пятница...  Я почитал- там и CRC32 как-то по-странному нужно задействовать, чтобы совпало с софтовой реализацией (инверсия битов подсовываемого байта ?), то есть не все так просто как хочется. Чистый маркетинг. Оно есть, но подходит совсем далеко не всем.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|