Т.е
*(uint8_t *)&SPI_REGS[port]->DR = (uint8_t)data;
и
SPI_REGS[port]->DR = data;
отправляют разное число бит.