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.

cc3200 spi slave模式下DMA传输没有完成,重新配置spi DMA传输数据出错问题



Hi TI 工程师:

请问在spi slave模式下,SPI DMA传输没有完成的情况下,如果要进行下一次传输,如何强制终止正在进行的SPI dma传输并且不对下一次传输造成影响?我这边测试发现如果上一次的dma传输没有终止,直接调用spi_transfer,rx和tx数据和主机传输的不一致。

static void interrupt_handler()
{
uint32_t status = MAP_SPIIntStatus(GSPI_BASE,true);
MAP_SPIIntClear(GSPI_BASE,SPI_INT_EOW);

}

void spi_transfer(uint8_t* tx, uint8_t* rx)
{
MAP_SPIDisable(GSPI_BASE);
SetupTransfer(UDMA_CH30_GSPI_RX,UDMA_MODE_BASIC,DMA_SIZE,
UDMA_SIZE_8,UDMA_ARB_1,
(void *)(GSPI_BASE + MCSPI_O_RX0),UDMA_SRC_INC_NONE,
rx,UDMA_DST_INC_8);

SetupTransfer(UDMA_CH31_GSPI_TX,UDMA_MODE_BASIC,DMA_SIZE,
UDMA_SIZE_8,UDMA_ARB_1,
tx,UDMA_SRC_INC_8,
(void *)(GSPI_BASE + MCSPI_O_TX0),UDMA_DST_INC_NONE);
MAP_SPIEnable(GSPI_BASE);
}