реклама на сайте
подробности

 
 
> STM32 Процедура вычисления CRC32, без использования CRC engine
nanorobot
сообщение Sep 27 2016, 17:23
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Огромная просьба, поделитесь табличной процедурой вычисления CRC32, совместимой с блоком аппаратного вычисления CRC32 STM32Fxx
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ataradov
сообщение Sep 27 2016, 17:39
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Вот это должно работать.
CODE
// IEEE CRC32 with a polynomial of 0xedb88320

static uint32_t crc32_tab[256];

static void crc32_tab_gen(void)
{
for (int i = 0; i < 256; i++)
{
uint32_t value = i;

for (int j = 0; j < 8; j++)
{
if (value & 1)
value = (value >> 1) ^ 0xedb88320ul;
else
value = value >> 1;
}

crc32_tab[i] = value;
}
}

static uint32_t crc32(uint8_t *data, int size)
{
uint32_t crc = 0xffffffff;

for (int i = 0; i < size; i++)
crc = crc32_tab[(crc ^ data[i]) & 0xff] ^ (crc >> 8);

return crc;
}


Таблицу crc32_tab можно сгенерировать заранее, естественно.

Сообщение отредактировал IgorKossak - Sep 27 2016, 18:28
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016