CRC errors would typically be caused by signal integrity issues along the SPI bus communcation path. These are not typically seen for a navX-MXP directly connected to the MXP connector on the RoboRIO, but become more frequent in cases when an extension cable is used.
The two related issues involved here would be the strength of the signal, and the timing of the pulses. So in addition to a long cable, issues could also occur at higher SPI bitrates. So you might see improved error rates at a lower bitrate (the latest libraries use 2Mhz, which can be lowered if you'd like through one of the alternate constructors for the AHRS class in the roboRIO navX-MXP library.
In addition to cable signal integrity issues, and timing issues, it's also theoretically possible that if the POWER and especially the GROUND signals (on the MXP connector, and on the navX-MXP) were having noise injected into them by other connected devices on the RoboRIO, or on the navX-MXP expansion port, and since these are used as reference voltages by which the "HIGH" and "LOW" states of the SPI bus communication are referenced, that these would be potential noise sources might cause data corruption. To detect this type of noise source, an oscilloscope could be used to probe each of the POWER, GROUND, MISO, MOSI and SCL pins on the SPI connector.
All of that said, do note that because all numerical integration of key values occurs directly on the navX-MXP (yaw, pitch, roll as well as the integrated velocity and displacement values), a CRC error once a second is likely not to be noticed within the system, and likely won't cause any problems. Of course it's not optimal (since it means that about once a second, your robot software will "miss" an update), but it's certainly not going to cause any incorrect calculations.