So your basic systems clocks are 48MHz -- what is their primary source? How accurate are these clocks? UART byte framing can work with up to about +/-3% overall baud rate tolerance. RS232 signals should be 'pretty darn reliable' up to 115,200 and out to 'several meters' (but can't be shared by multiple transmitters), and RS485 can do 10Mbits/s out to 100 meters or more. Either one works on three wires, two signal plus ground. I don't use PE so I can't really help you with their components. I use the CRC module directly myself, in this case for a CRC32. You don't mention what polynominal you are using. This use is to scan thru my on-chip flash (four words at a time) out to, and including, the CRC at the end so that the result must be zero.
uint 32_t * memptr=(uint32_t *)boot_CRC_start;
| SIM_SCGC6 |= SIM_SCGC6_CRC_MASK; |
| CRC_CTRL = CRC_CTRL_WAS_MASK | CRC_CTRL_TCRC_MASK; //32bit CRC |
| CRC_CRC = 0xFFFFFFFF; | //Starting value |
| CRC_CTRL = CRC_CTRL_TCRC_MASK; |
| CRC_GPOLY = 0x04C11DB7; | //Poly to match IAR 32-bit default |
| do{ |
| CRC_CRC = *memptr++; |
| CRC_CRC = *memptr++; |
| CRC_CRC = *memptr++; |
| CRC_CRC = *memptr++; |
| }while (memptr <= (uint32_t *)&__checksum); |
......