This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RTOS/AWR1642BOOST: SPI Callback mode as SLAVE

Part Number: AWR1642BOOST

Tool/software: TI-RTOS

Reposting since I didn't get a response on my query part of another thread. 

I managed to get SPI in blocking mode as a slave working, but I'm facing issues when I configure it to work in non-blocking mode. 
What's happening is, SPI_Transfer in callback mode doesn't trigger the callback when transfer is completed, Neither is it receiving/transmitting data.

Within the mssInitTask, I initialize DMA and SPI

DMA_Params_init(&dmaParams);
  gDmaHandle = DMA_open(0, &dmaParams, &errCode);
  if(gDmaHandle == NULL)
  {
      printf("Open DMA driver failed with error=%d\n", errCode);
      return;
  }
    SPI_Params_init(&params);
    params.mode = SPI_SLAVE;
    params.dataSize = 8;
    params.dmaEnable = 1;
    params.dmaHandle = gDmaHandle;
    params.u.slaveParams.dmaCfg.txDmaChanNum =1U;
    params.u.slaveParams.dmaCfg.rxDmaChanNum =0U;
    params.frameFormat = SPI_POL0_PHA1;
    params.shiftFormat = SPI_MSB_FIRST;
    params.pinMode = SPI_PINMODE_4PIN_CS;
    params.transferMode = SPI_MODE_CALLBACK;
    params.eccEnable = 1;
    params.csHold = 1;
    params.transferCallbackFxn = spiCallback;

And then start the task

    Task_Params_init(&spiTaskParams);
    spiTaskParams.priority = 4;
    spiTaskParams.stackSize =  3*1024;
    Task_create(SPITask,&spiTaskParams, NULL);

    Semaphore_post(SPISem);

I define my callback

void spiCallback(SPI_Handle handle, SPI_Transaction *transaction)
{
   if(transaction->status == SPI_TRANSFER_COMPLETED)
   {
       Semaphore_post(SPISem);
   }
 return;
}

I create a task to perform SPI related stuff

void SPITask(UArg arg0, UArg arg1)
{

    char *msg = "1abcdefghijklmnopqrstuvwxyzDONE2abcdefghijklmnopqrstuvwxyzDONE";
    char rx[63];
    System_printf("SPI Task Started \n");
    spiTransaction.count = (size_t)62;
    spiTransaction.txBuf = (void*) msg;
    spiTransaction.rxBuf = (void * )rx;
    spiTransaction.arg = NULL;
    spiTransaction.slaveIndex = 0U;
    while(1){
        Semaphore_pend(SPISem, BIOS_WAIT_FOREVER);
        System_printf("Transfer now\n");
        SPI_transfer(handle, &spiTransaction);
    }
}

SPI in blocking mode works fine until the transaction.count goes to beyond 50 bytes, whereafter, SPI_Transfer stops blocking. 
In non blocking mode, my callbacks are never called after SPI Transfer is complete. I don't either see signals coming out from the MISO line.