Hi
I try to enable DMA transfer from the Uart Tx on CC1310 by software request
but without success. I use simplelink_cc13x0_sdk_2_20_00_38
As a memory to Memory transfer, Dma works fine.
What I miss in the following code?
With regards
u8 u8DMAControlTable[64] __attribute__ ((aligned(1024))); extern u8 u8uart_tx_Buf[200]; // Source buffer used for the DMA transfer. // ---------------------------------------------------------------------------- void uDma_init(void) { EventRegister(EVENT_O_UDMACH2BSEL, EVENT_UDMACH2BSEL_EV_UART0_TX_DMABREQ); UARTDMAEnable(UART0_BASE, UART_DMA_TX); // uart dma enable for transmit PRCMPeripheralRunEnable(PRCM_PERIPH_UDMA); PRCMLoadSet(); uDMAEnable(UDMA0_BASE); // Enable the uDMA controller. uDMAControlBaseSet(UDMA0_BASE, u8DMAControlTable); // register the channel control table. uDMAChannelAttributeDisable(UDMA0_BASE, UDMA_CHAN_UART0_TX, UDMA_ATTR_ALL); uDMAChannelAttributeEnable (UDMA0_BASE, UDMA_CHAN_UART0_TX, UDMA_ATTR_USEBURST | // burst transfer UDMA_ATTR_REQMASK); // set up characteristics of the transfer uDMAChannelControlSet( UDMA0_BASE, UDMA_CHAN_UART0_TX | UDMA_PRI_SELECT, UDMA_SIZE_8 | // 0x00000000 UDMA_SRC_INC_8 | // 0x00000000 UDMA_DST_INC_NONE | // 0xC0000000 UDMA_ARB_8); // 0x0000c000 } // ---------------------------------------------------------------------------- void uDma_startTransfer(void) { uDMAChannelTransferSet( UDMA0_BASE, UDMA_CHAN_UART0_TX | UDMA_PRI_SELECT, UDMA_MODE_BASIC, // transfer automatically runs to completion after the request &u8uart_tx_Buf[1], // pointer to the data source (u8 *)(UART0_BASE + UART_O_DR), // pointer to the destination, u8uart_tx_Buf[0]); // transfer size uDMAChannelEnable (UDMA0_BASE, UDMA_CHAN_UART0_TX); uDMAChannelRequest(UDMA0_BASE, UDMA_CHAN_UART0_TX); }