Hi Alice,
Debugging the code step by step shows that after the first successful transfer and before the Callback is triggered the app crashes showing the attached debug info. The Callback is never triggered.
See the code below:
spi_slave_config_t slaveConfig;
/* Get default Slave configuration. */
SPI_SlaveGetDefaultConfig(&slaveConfig);
/* Initialize the SPI slave. */
slaveConfig.sselPol = (spi_spol_t)EXAMPLE_SLAVE_SPI_SPOL;
SPI_SlaveInit(EXAMPLE_SPI_SLAVE, &slaveConfig);
/* DMA init */
DMA_Init(EXAMPLE_DMA);
/* configure channel/priority and create handle for TX and RX. */
DMA_EnableChannel(EXAMPLE_DMA, EXAMPLE_SPI_SLAVE_TX_CHANNEL);
DMA_EnableChannel(EXAMPLE_DMA, EXAMPLE_SPI_SLAVE_RX_CHANNEL);
DMA_SetChannelPriority(EXAMPLE_DMA, EXAMPLE_SPI_SLAVE_TX_CHANNEL, kDMA_ChannelPriority0);
DMA_SetChannelPriority(EXAMPLE_DMA, EXAMPLE_SPI_SLAVE_RX_CHANNEL, kDMA_ChannelPriority1);
DMA_CreateHandle(&slaveTxHandle, EXAMPLE_DMA, EXAMPLE_SPI_SLAVE_TX_CHANNEL);
DMA_CreateHandle(&slaveRxHandle, EXAMPLE_DMA, EXAMPLE_SPI_SLAVE_RX_CHANNEL);
/* Transfer */
uint32_t i = 0U;
//spi_transfer_t slaveXfer;
/* Initialzie the transfer data */
for (i = 0U; i < 128; i++)
{
k=i*4;
slaveTxData[k] = i & 0x000000FF;
slaveTxData[k+1] = (i & 0x0000FF00) >>8;
slaveTxData[k+2] = (i & 0x00FF0000) >>16;
slaveTxData[k+3] = (i & 0xFF000000) >>24;
slaveRxData[i] = 0U;
}
/* Create handle for slave instance. */
SPI_SlaveTransferCreateHandleDMA(EXAMPLE_SPI_SLAVE, &slaveHandle, SPI_SlaveUserCallback, NULL, &slaveTxHandle, &slaveRxHandle);
slaveXfer.txData = (uint8_t *)&slaveTxData;
slaveXfer.rxData = (uint8_t *)&slaveRxData;
//slaveXfer.dataSize = TRANSFER_SIZE * sizeof(slaveTxData[0]);
//slaveXfer.dataSize = TRANSFER_SIZE * sizeof(slaveTxData[0]);
slaveXfer.dataSize = TRANSFER_SIZE;
slaveXfer.dataSize = TRANSFER_SIZE;
/* Start transfer, when transmission complete, the SPI_SlaveUserCallback will be called. */
if (kStatus_Success != SPI_SlaveTransferDMA(EXAMPLE_SPI_SLAVE, &slaveHandle, &slaveXfer))
{
PRINTF("There is an error when start SPI_SlaveTransferDMA \r\n");
}
Thanks for your help.
Abi