I would like to use the SPI CRC capabilities to generate the CRC7 byte for a SD SPI command frame. The command frame is 6 bytes long, with the final CRC byte structure as follows:

CRC[7:1] -- CRC7 of first 5 bytes of command frame

CRC[0] -- 1

The generator polynomial for CRC7 is:

G(x) = x^7 + x^3 + x^0

The part I'm having trouble with is how to get the resulting CRC7 to be shifted to the left by one bit, and have the 0 bit set before the SPI sends out the CRC byte. As it is, it seems to just calculate the CRC7 and leave it in the low 7 bits.

Is there a way to change the CRC polynomial so it will effectively shift the generated CRC over 1 bit and set the 0 bit?

CRC[7:1] -- CRC7 of first 5 bytes of command frame

CRC[0] -- 1

The generator polynomial for CRC7 is:

G(x) = x^7 + x^3 + x^0

The part I'm having trouble with is how to get the resulting CRC7 to be shifted to the left by one bit, and have the 0 bit set before the SPI sends out the CRC byte. As it is, it seems to just calculate the CRC7 and leave it in the low 7 bits.

Is there a way to change the CRC polynomial so it will effectively shift the generated CRC over 1 bit and set the 0 bit?

A byte or nibble table method would be quite effective if speed is critical.