Hi Bruce, I am trying to use DMA scatter gather mode for my project now because I think it will help me more. After reading documents, I set up my code but I think I am making mistake in somewhere DMA Interrupt handler. As, I am not interested to receive data from slave side, is it necessary for me to transfer data &EUSCI_B1_SPI->RXBUF to any other folder ?? because I want to write 3-byte data and in one task I can transfer maximum 1-byte data. what I did according to my understanding ,i defined source address addition.For that please check following code: DMA_ControlTable spiDacDmaSeq[TX_TASKS] = { /* Task1, Dummy read RX buffer to clear IFG DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &EUSCI_B1_SPI->RXBUF, UDMA_DST_INC_NONE, &dummyRX, UDMA_ARB_4, (UDMA_MODE_MEM_SCATTER_GATHER+UDMA_MODE_ALT_SELECT)),*/ /* Task2, Clear Chip select P6.2 DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &outputLow, UDMA_DST_INC_NONE, &P6->OUT, UDMA_ARB_4, (UDMA_MODE_MEM_SCATTER_GATHER+UDMA_MODE_ALT_SELECT)),*/ /* Task3, load TX buffer to initiate SPI */ DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &SpiTxBuffer[0], UDMA_DST_INC_NONE, &EUSCI_B1_SPI->TXBUF, UDMA_ARB_4, (UDMA_MODE_PER_SCATTER_GATHER+UDMA_MODE_ALT_SELECT)), /* Task4, Dummy read RX buffer to clear IFG, wait for RXIFG trigger DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &EUSCI_B1_SPI->RXBUF, UDMA_DST_INC_NONE, &dummyRX, UDMA_ARB_4, (UDMA_MODE_MEM_SCATTER_GATHER+UDMA_MODE_ALT_SELECT)), /* Task 5, load TX buffer to initiate SPI */ DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &SpiTxBuffer[1], UDMA_DST_INC_8, &EUSCI_B1_SPI->TXBUF, UDMA_ARB_4, (UDMA_MODE_PER_SCATTER_GATHER+UDMA_MODE_ALT_SELECT)), /* * Task 6, Dummy read RX buffer to clear IFG * This delay ensures that the chip select happens after the last byte is transmitted DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &EUSCI_B1_SPI->RXBUF, UDMA_DST_INC_NONE, &dummyRX, UDMA_ARB_4, (UDMA_MODE_MEM_SCATTER_GATHER+UDMA_MODE_ALT_SELECT)), /* Task 7, load TX buffer to initiate SPI */ DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &SpiTxBuffer[2], UDMA_DST_INC_16, &EUSCI_B1_SPI->TXBUF, UDMA_ARB_4, (UDMA_MODE_BASIC)) /* Task 8, set GPIO, chip select DMA_TaskStructEntry(1, UDMA_SIZE_8, UDMA_SRC_INC_NONE, &DAC_CS, UDMA_DST_INC_NONE, &P6->OUT, UDMA_ARB_4, UDMA_MODE_BASIC)*/ };
↧