Hello Danish,
my colleague sent me some source code, which he uses for CRC32 calculation in Kinetis microcontrollers. Because ENET module is the same, you can use this code also for MPC5748G:
void ENET_AddMulticastGroup(ENET_Type *base, uint8_t *address)
{
assert(address);
uint32_t crc = 0xFFFFFFFFU;
uint32_t count1 = 0;
uint32_t count2 = 0;
/* Calculates the CRC-32 polynomial on the multicast group address. */
for (count1 = 0; count1 < ENET_FRAME_MACLEN; count1++)
{
uint8_t c = address[count1];
for (count2 = 0; count2 < 0x08U; count2++)
{
if ((c ^ crc) & 1U)
{
crc >>= 1U;
c >>= 1U;
crc ^= 0xEDB88320U;
}
else
{
crc >>= 1U;
c >>= 1U;
}
}
}
/* Enable a multicast group address. */
if (!((crc >> 0x1FU) & 1U))
{
base->GALR |= 1U << ((crc >> 0x1AU) & 0x1FU);
}
else
{
base->GAUR |= 1U << ((crc >> 0x1AU) & 0x1FU);
}
}
Regards,
Martin