The master is trying to communicate with slave every 375us. This means the slave should prepare all of its data and make it ready for master. Unfortunately, there is a lot of work going on the slave micro-controller, so it is struggling to prepare the data. Given this, I just extended the interval from 375us to 750us and now I couldn't see any frame losses on MISO line. Here is the code:
/* trigger a SPI transfer each 375us - 6x 62.5us */
if( 12 <= lu8_spiTrigger++ )
{
spi_TriggerTransfer(HAL_SPI_TX_BUF_SIZE);
lu8_spiTrigger = 0;
}
Also, I didn’t check for SPI overrun errors. Adding that check might indeed save a lot of debugging time!