That's a strange length to trigger some pointer copy, why?
void spiTransfer(byte registry, byte data[], int _length) {
if(_length < 0){
byte* intermediate = data;
SPI.transfer(intermediate, -1*_length);
The configuration without any CRC seems very dangerous to me.
spiTransfer((CONFIG | W_REGISTER), {0x52}, 1); //configure as TX and disable all IRQs instead of data sent
If you intend to make something more understandable,
it should not contain so many magic numbers.