Martyn,
No, it is not the case. Because only after the slave push all the data into fifo, it trigger a GPIO as interrupt to the Master, then Master will start the spi transfer.
Part of my init code is as follow:
/* Disable and clear SPI */
dspi0_ptr->MCR = DSPI_MCR_HALT_MASK | DSPI_MCR_CLR_TXF_MASK | DSPI_MCR_CLR_RXF_MASK;
dspi0_ptr->MCR &= (~ DSPI_MCR_MDIS_MASK); //leave it '0' in slave mode, since a slave doesn't have control over master transactions.
/* SPI0 work in Slave mode*/
dspi0_ptr->MCR &= ~DSPI_MCR_MSTR_MASK;
/* Receive FIFO overflow disable */
dspi0_ptr->MCR |= DSPI_MCR_ROOE_MASK;
/* Set CS0-7 inactive high */
dspi0_ptr->MCR |= DSPI_MCR_PCSIS(0xFF);
//set up the spi mode, frame size = 8, CPOL = 0 , CPHA = 1
dspi0_ptr->CTAR[0] = (DSPI_CTAR_FMSZ(0x7)|DSPI_CTAR_CPHA_MASK);
dspi_info_ptr ->CTAR_TIMING = dspi0_ptr->CTAR[0];
/* Disable interrupts */
dspi0_ptr->RSER = 0;
/* Clear all flags */
dspi0_ptr->SR = DSPI_SR_EOQF_MASK|DSPI_SR_TFUF_MASK|DSPI_SR_TFFF_MASK|DSPI_SR_RFOF_MASK|DSPI_SR_RFDF_MASK;
/* Enable SPI */
dspi0_ptr->MCR &= (~ DSPI_MCR_HALT_MASK);