Other Parts Discussed in Thread: SYSCONFIG
Tool/software:
Hello
We are using the MSPM0L1105 as an SPI peripheral and have configured the pinmux using CCS and sysconfig.
Configuration for SPI is as follows:


We have setup the IRQ handler to perform some very basic benchmarking to test response time:
void PER_SPI_INST_IRQHandler(void)
{
uint32_t count = 0;
uint16_t buffer[256] = {0}};
switch (DL_SPI_getPendingInterrupt(PER_SPI_INST)) {
case DL_SPI_IIDX_RX_TIMEOUT:
loopCount++;
count = DL_SPI_drainRXFIFO16(PER_SPI_INST, buffer, 256);
DL_SPI_transmitDataBlocking16(PER_SPI_INST, loopCount);
break;
case DL_SPI_IIDX_RX:
loopCount++;
count = DL_SPI_drainRXFIFO16(PER_SPI_INST, buffer, 256);
gADCResult = convertAnalogInput(0);
gADCResult &= 0x0FFF;
DL_SPI_transmitDataBlocking16(PER_SPI_INST, loopCount);
break;
default:
break;
}
}
Data being sent is 16bit length per message and a total of 3 messages to represent a real-world messaging for a SPI ADC peripheral.
Command, dummy cycle, response:

There is no issue with receiving all the data and clock cycles:


The issue is I need the RX interrupt to occur between the first and second message to allow me to populate the transmit buffer to respond to the master.
I have tried to set the RX timeout to 125ns in the hope that it would trigger the IRQ in the chip select transition stage (we essentially have 12.5us).

Is there a way to make the SPI IRQ faster so I get notiified when the controller has received 1 message?
Thanks for any assistance.