вы неправильно про работу SPI прочитали
Код
/// \fn uint8_t RW(const uint8_t pData)
/// Запись-чтение данных.
/// Данная функция записывает значение в буфер отправки SPI. По окончанию
/// отправки возвращает значение принятое по SPI.
/// \param pData - значение отправляемое по SPI.
/// \return значение принятое по SPI.
uint8_t RW(const uint8_t pData)
{
SPI_I2S_SendData(mSPI, pData);
while(SPI_I2S_GetFlagStatus(mSPI, SPI_I2S_FLAG_RXNE) == RESET);
return SPI_I2S_ReceiveData(mSPI);
}