STM32 SPI Slave send data Problem
Sending data using interrupts is quite tricky as if you do not have anything to send you should clear TEIE flag (disable the interrupt), and set it when you have something to send. Otherwise the interrupt will be triggered all the time.
You do not set the number of data bits. At can be any value as your struct may contain garbage data.
To send 8 bit of data you need to force the compiler to write byte (not the half word) to the DR register. Many SPL versions had it done wrong. If you write the halfword - half word is stored into the FIFO and you will send two bytes (not one!!). I do not use those silly libraries for such simply peripheral but I advice to step over the send function and see if it written properly

1506        *(volatile uint8_t *)&amp;SPIx -&gt; DR = command;
08005a9c:   strb    r1, [r0, #12]