One error i can see is:
You do not wait for SPIM_WriteTxData() has successfully transmitted the data.
You could wait until there is data in the read buffer by waiting until SPIS_GetRxBufferSize() returns > 0.
The SPI interface is fast, but a bit complicated to handle: there is no explicit SPI_Read function. instead you have to send a dummy byte to receive one from the slave.
For every bit (byte) the SPI interface gets, one bit (byte) is returned immediately. When the very first byte is sent, the interface does not "know" yet what to answer, so a dummy byte is returned which should be skipped.
SPI has no read command, so you must send dummy bytes to retrieve the information wanted.
A pitfall is the select line, which is automatically taken low when a byte is sent. When the buffer is empty it is taken high again. This can lead to interface errors when the byte sequence is not provided fast enough resulting in ss-line glitches.
It is always easier to help when you post your complete project so that we all can have a look at all of your settings. To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file.
Please follow the way I showed to create a workspace bundle, do not use your own compress functions.