STM32F4 HAL_CRC_Calculate() дает ложные результатыC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 STM32F4 HAL_CRC_Calculate() дает ложные результаты

Сообщение Anonymous »

У меня есть STM32F429ZI (Discovery Board) и этот очень простой код, вычисляющий CRC8:
uint32_t data[5] = { 0x28, 0x4f, 0x4c, 0x43, 0x29 };
uint8_t crc = HAL_CRC_Calculate(&hcrc, data, 5);

Результат crc — 0x51. https://crccalc.com/ дает мне 0xF3. Я получил этот код отсюда. Еще они получили 0xF3.
Я не понимаю, как в этом коде работает преобразование crc32 в crc8. Итак, я протестировал crc32:
uint32_t data[5] = { 0x28, 0x4f, 0x4c, 0x43, 0x29 };
uint32_t crc = HAL_CRC_Calculate(&hcrc, data, 5);

На этот раз я получаю 0x554C8351. Вместо этого crccalc.com дает мне 0x14822BBD. Опять другой результат.
STM32F4 не имеет никаких возможностей настройки CRC. Что я делаю не так? Я хочу вычислить CRC8 с помощью полинома: X8 + X2 + X + 1
Я нашел другого парня, который поделился своим кодом для расчета CRC8:
https:// Community.st.com/t5/stm32-mcus-security/crc-calculation-for-8-bit-values/td-p/191270 Но опять же, я не смог сравниться с его результатами.
Итак, мой вопрос:
Как правильно вычислить CRC8 массива uint8_t в STM32F4xx на C++?
< hr />
CRC клавиши F4 настроить невозможно. Итак, инициализация происходит напрямую из STM32CubeMX:
void MX_CRC_Init(void)
{
hcrc.Instance = CRC;
if (HAL_CRC_Init(&hcrc) != HAL_OK)
{
Error_Handler();
}
}

HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc)
{
if (hcrc == NULL)
{
return HAL_ERROR;
}

assert_param(IS_CRC_ALL_INSTANCE(hcrc->Instance));

if (hcrc->State == HAL_CRC_STATE_RESET)
{
hcrc->Lock = HAL_UNLOCKED;
HAL_CRC_MspInit(hcrc);
}

hcrc->State = HAL_CRC_STATE_READY;
return HAL_OK;
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... se-results
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Общая настройка для python crc (6.1.1) и аппаратного блока CRC stm32?
    Anonymous » » в форуме Python
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Ошибка SRST при попытке запустить openocd на stm32f4
    Anonymous » » в форуме Linux
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • MatchTemplate() пропускает обнаружения и дает ложные срабатывания, что я могу сделать?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • MatchTemplate() пропускает обнаружения и дает ложные срабатывания, что я могу сделать?
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Использование пользовательского типа носителя (не HAL)
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»