|
STM32F0 и CRC16, как быть с байтами? |
|
|
|
 |
Ответов
|
Dec 22 2015, 07:45
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(spf @ Dec 22 2015, 06:41)  Цитата(slavokhire5 @ Dec 22 2015, 09:42)  разве я спрашивал о сути CRC или программной реализации? вопрос только об аппаратном модуле CRC у STM32F0 Цитата(VAI @ Dec 22 2015, 08:23)  А я всегда думал, что блок расчета CRC в STM32 считает CRC32... Вот здесь я выкладывал 2 функции, программную и железную для STM32. Результат их работы одинаков. И да, на вход блока CRC32 должны подаваться 32-х битные слова. В "железной" функции по ссылке применена "uint32_t __rbit( uint32_t )", Кеил её прекрасно понимает. Она реверсирует слово. И, похоже, в Cortex-M0 такой команды нету... А здесь я сейчас нашел статейку про аппаратный блок расчета CRC в STM32... спасибо, буду посмотреть а у F0 таки да, можно менять и полином, и размер полинома и начальное значение
|
|
|
|
|
Dec 22 2015, 08:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(Сергей Борщ @ Dec 22 2015, 15:23)  У F0x0 - нельзя. Вы оба правы  У F030 и F070 полином не изменяемый, а у остальных: F0x1, F0x2 и F0x8 можно дополнительно грузить полином и настраивать его длину 7, 8, 16, 32 бита. Для обоих в реф. мануалах пишут что можно писать байтами, полусловами или словами. Хорошо бы код посмотреть повнимательнее, потому что DR описан как __IO uint32_t DR; и если просто писать в CRC->DR то запись всегда будет происходить словами.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
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-битный.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
Сообщений в этой теме
toweroff STM32F0 и CRC16 Dec 21 2015, 20:14 spf Цитата(toweroff @ Dec 22 2015, 01:14) Как... Dec 22 2015, 03:41 VAI А я всегда думал, что блок расчета CRC в STM32 счи... Dec 22 2015, 05:23 Сергей Борщ Цитата(VAI @ Dec 22 2015, 08:23) А я всег... Dec 22 2015, 07:44 slavokhire5 Если вы пишете расчет контрольной суммы для переда... Dec 22 2015, 06:42 spf Цитата(toweroff @ Dec 22 2015, 12:45) раз... Dec 22 2015, 07:55  toweroff Цитата(spf @ Dec 22 2015, 10:55) Теоретич... Dec 22 2015, 08:08   toweroff Цитата(SSerge @ Dec 22 2015, 11:42) Вы об... Dec 22 2015, 11:44     Ruslan1 Цитата(esaulenka @ Feb 5 2016, 15:19) Ска... Feb 5 2016, 15:34 ViKo Вот здесь погоняйте свои байты в хвост и в гриву, ... Dec 22 2015, 12:56 toweroff Цитата(ViKo @ Dec 22 2015, 15:56) Вот зде... Dec 22 2015, 13:10 toweroff Все, заработало.
Скармливаю побайтно, обращение ... Dec 22 2015, 16:41 Сергей Борщ Цитата(toweroff @ Dec 22 2015, 19:41) Все... Dec 22 2015, 16:54  toweroff Цитата(Сергей Борщ @ Dec 22 2015, 19:54) ... Dec 22 2015, 17:08   Сергей Борщ Цитата(toweroff @ Dec 22 2015, 20:08) Пох... Dec 22 2015, 19:04    toweroff Цитата(Сергей Борщ @ Dec 22 2015, 22:04) ... Dec 22 2015, 19:15 toweroff Там все просто, пишем данные в регистр и после зап... Feb 5 2016, 13:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|