This post is just wrong in almost everything and should not be selected as an answer!
> "highest byte transmitted first" is WRONG ! Ignore !
> data bytes 3, 2, 1, 0 (high to low byte) is BS too. I have no idea why this was put in there.
> The 32 bit data is just sent LSByte first and not as they incorrectly suggest 'MSbyte first'.
No, the byte order is indeed big-endian (highest byte first) like written in datasheet. Ironically you even disprove yourself. The default value for CHOPCONF register is 0x10000053, which you are setting in your example with a sequence:
0x05, 0x00, 0xEC, 0x10,0x00,0x00,0x53, 0x81
Where the data obviously is in a big-endian order. And your CRC is also wrong. The correct CRC for this sequence is 0x9C.
> You can use their example C source code to calulate it for each 7 byte datagram but they fail to advise that you also need a dummy 0x00 byte on the end to make it 8 bytes total.
This is the only thing that is almost correct in that post. The datasheet code example indeed takes N bytes, calculates the CRC for the first N-1 bytes and inserts the CRC in the last byte. But before the call that last byte can be of any value because it is initialized to 0 in that example code anyway.