Code: Select all
static uint32_t chunk[5] =
{ 0x12345678, 0x9ABCDEF0, 0x12345678, 0x00000000, 0xffffffff };
printf("[0x00000000]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[3], 1));
printf("[0xffffffff]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[4], 1));
printf("[0x12345678]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[0], 1));
printf("[0x9ABCDEF0]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[1], 1));
printf("[0x12345678,0x9ABCDEF0]: 0x%08lx\r\n",
HAL_CRC_Calculate(&hcrc, &chunk[0], 2));
printf("[0x9ABCDEF0,0x12345678]: 0x%08lx\r\n",
HAL_CRC_Calculate(&hcrc, &chunk[1], 2));
Code: Select all
/* USER CODE BEGIN StartTestTask */
uint32_t crc = 0xffffffff;
// static uint32_t chunk[5] = {0x12345678, 0x9ABCDEF0, 0x12345678, 0x00000000, 0xffffffff};
static uint32_t chunk[5] = {0x78563412, 0xF0DEBC9A, 0x78563412, 0x00000000, 0xffffffff};
printf("=== crc test ===\r\n");
// printf("[0x00000000]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[3], 1));
ESP_LOGI("crc_test", "[0x00000000]: 0x%08lx\r\n", ~esp_rom_crc32_be(~crc, (const uint8_t *)&chunk[3], 4));
ESP_LOGI("crc_test", "[0x00000000]: 0x%08lx\r\n", ~esp_rom_crc32_le(~crc, (const uint8_t *)&chunk[3], 4));
// printf("[0xffffffff]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[4], 1));
ESP_LOGI("crc_test", "[0xffffffff]: 0x%08lx\r\n", ~esp_rom_crc32_be(~crc, (const uint8_t *)&chunk[4], 4));
ESP_LOGI("crc_test", "[0xffffffff]: 0x%08lx\r\n", ~esp_rom_crc32_le(~crc, (const uint8_t *)&chunk[4], 4));
// printf("[0x12345678]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[0], 1));
ESP_LOGI("crc_test", "[0x12345678]: 0x%08lx\r\n", ~esp_rom_crc32_be(~crc, (const uint8_t *)&chunk[0], 4));
ESP_LOGI("crc_test", "[0x12345678]: 0x%08lx\r\n", ~esp_rom_crc32_le(~crc, (const uint8_t *)&chunk[0], 4));
// printf("[0x9ABCDEF0]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[1], 1));
ESP_LOGI("crc_test", "[0x9ABCDEF0]: 0x%08lx\r\n", ~esp_rom_crc32_be(~crc, (const uint8_t *)&chunk[1], 4));
ESP_LOGI("crc_test", "[0x9ABCDEF0]: 0x%08lx\r\n", ~esp_rom_crc32_le(~crc, (const uint8_t *)&chunk[1], 4));
// printf("[0x12345678,0x9ABCDEF0]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[0], 2));
ESP_LOGI("crc_test", "[0x12345678,0x9ABCDEF0]: 0x%08lx\r\n", ~esp_rom_crc32_be(~crc, (const uint8_t *)&chunk[0], 8));
ESP_LOGI("crc_test", "[0x12345678,0x9ABCDEF0]: 0x%08lx\r\n", ~esp_rom_crc32_le(~crc, (const uint8_t *)&chunk[0], 8));
// printf("[0x9ABCDEF0,0x12345678]: 0x%08lx\r\n", HAL_CRC_Calculate(&hcrc, &chunk[1], 2));
ESP_LOGI("crc_test", "[0x9ABCDEF0,0x12345678]: 0x%08lx\r\n", ~esp_rom_crc32_be(~crc, (const uint8_t *)&chunk[1], 8));
ESP_LOGI("crc_test", "[0x9ABCDEF0,0x12345678]: 0x%08lx\r\n", ~esp_rom_crc32_le(~crc, (const uint8_t *)&chunk[1], 8));
Code: Select all
static uint32_t SW_CRC_Calculate(uint32_t init, const uint32_t pBuffer[], uint32_t wordLength)
{
uint32_t crc32 = init;
for (int k = 0; k < wordLength; k++)
{
crc32 = crc32 ^ pBuffer[k];
for (int i = 0; i < 32; i++)
{
if (crc32 & 0x80000000)
crc32 = (crc32 << 1) ^ 0x04C11DB7;
else
crc32 = (crc32 << 1);
}
}
return crc32;
}