Using STM32H743 SPI to transfer large data packets
Hello,
I am using the SPI on the STM32H743ZITx as a SPI Master in Full-duplex mode to transfer large data packets (1600 bytes). But instead of seeing the data being transferred in a constant burst, I see it being sent out a byte at a time with gaps in between, apart from a burst at the start of the SPI transaction.
Here is my SPI3 settings in STM32CubeIDE, v1.16.1:

The SPI initialization is the default MX_SPI3_Init() provided by Core/Src/spi.c in STM32CubeIDE.
I am using the interrupt transfer method. My code is as follows:
// TxRx complete callback
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
{
post_semaphore_from_isr(spi_trans_complete_sem);
}
[...]
// here, size = 1600
spi_transaction(uint8_t * txbuff, uint8_t * rxbuff, uint16_t size)
{
HAL_StatusTypeDef retval = HAL_ERROR;
// code to assert SPI CS (GPIO signal)
retval = HAL_SPI_TransmitReceive_IT(&hspi3, txbuff, rxbuff, size);
// wait for callback for completion
get_semaphore(spi_trans_complete_sem, HAL_MAX_DELAY);
// code to deassert SPI CS (GPIO signal)
return retval;
}This is what I see on the logic analyzer:

I expect the SPI CLK signal to be continuous during the transfer, instead of a byte-by-byte transfer with gaps in between.
What can I do to push up the performance of the SPI transaction?
