I'm seeing a larger than expected delay in between words on a multi word SPI transmission. I'm transferring thirty two 16-bit transmissions per SPITransfer. For each 16-bit transfer, the SPIEN is active low for 824nS, then goes high between words for 900nS. This is the code for testing:
// Test non TI-RTOS SPI performance
unsigned short transmitBuffer[256];
unsigned short receiveBuffer[256];
PinMuxConfig();
MAP_PRCMPeripheralClkEnable(PRCM_GSPI,PRCM_RUN_MODE_CLK);
MAP_PRCMPeripheralReset(PRCM_GSPI);
MAP_SPIReset(GSPI_BASE);
MAP_SPIConfigSetExpClk(GSPI_BASE,MAP_PRCMPeripheralClockGet(PRCM_GSPI),
20000000,SPI_MODE_MASTER,SPI_SUB_MODE_0,
(SPI_HW_CTRL_CS |
SPI_4PIN_MODE |
SPI_TURBO_ON |
SPI_CS_ACTIVELOW |
SPI_WL_16));
MAP_SPIEnable(GSPI_BASE);
while(1){
MAP_SPITransfer(GSPI_BASE,(unsigned char *)transmitBuffer,(unsigned char *)receiveBuffer,64,SPI_CS_ENABLE|SPI_CS_DISABLE);
}
For this attached SPI device, SPIEN must go high between each transfer. Currently it takes less time to send the 16-bits than it does to get the SPIEN back low for the next transfer. Is there anything I can do to reduce the between word delay? Does using the uDMA help?
Thanks,
Alex