代码如下:
UDMACC32XX_init();
UDMACC32XX_open();
uDMAChannelAssign(UDMA_CH6_GSPI_RX);
uDMAChannelControlSet(UDMA_CH6_GSPI_RX|UDMA_PRI_SELECT, UDMA_SIZE_32|UDMA_SRC_INC_NONE|UDMA_DST_INC_32|UDMA_ARB_1024);
uDMAChannelTransferSet(UDMA_CH6_GSPI_RX|UDMA_PRI_SELECT,UDMA_MODE_BASIC,(void *)(GSPI_BASE + MCSPI_O_RX0),(void *) &dmaRxBuffer[2], 1024);
uDMAChannelEnable(UDMA_CH6_GSPI_RX);
checkdma = uDMAChannelIsEnabled(UDMA_CH6_GSPI_RX);
spiParams.bitRate = 24000000;
spiParams.dataSize= 32;
spiParams.mode = SPI_MASTER;
spiParams.frameFormat = SPI_POL0_PHA1;
SPI_open(1,&spiParams);
SPIDmaEnable( GSPI_BASE,SPI_RX_DMA);
SPIIntRegister(GSPI_BASE,SPIIntHandler);
SPIIntClear(GSPI_BASE, SPI_INT_EOW);
SPIIntEnable(GSPI_BASE, SPI_INT_EOW);
SPIEnable(GSPI_BASE);
void SPIIntHandler(void)
{
UART_PRINT("\n/********Enter_SpiDmaInterrupt***********/\n");
}
checkdma 那里输出为1,就是说UDMA_CH6_GSPI_RX开启了,但是后续一次也没没进中断函数,示波器看也显示dma没有在调spi
请问这个配置哪里出错了,怎么改呢?
user6224149:
ps:最后是想已24MHz的速度用dma从spi的Rx那里搬1024个数据,每个数据32字节,搬进自己的dmaRxBuffer
Viki Shi:
请参考SDK中的SPICC32XXDMA.c 驱动文件