Hi Pmt,
I am also writing routines to transmit a buffer out on UART3 via DMA channel 0. Followed the steps suggested by you
these are my configurations
/*URAT configuration*/
UART_C2_REG(uartch) &= ~(UART_C2_TE_MASK
| UART_C2_RE_MASK );
/* Configure the UART for 8-bit mode, no parity */
UART_C1_REG(uartch) = 0; /* We need all default settings, so entire register is cleared */
/* Calculate baud settings */
sbr = (uint16)((sysclk*1000)/(baud * 16));
/* Save off the current value of the UARTx_BDH except for the SBR field */
temp = UART_BDH_REG(uartch) & ~(UART_BDH_SBR(0x1F));
UART_BDH_REG(uartch) = temp | UART_BDH_SBR(((sbr & 0x1F00) >> 8));
UART_BDL_REG(uartch) = (uint8)(sbr & UART_BDL_SBR_MASK);
/* Determine if a fractional divider is needed to get closer to the baud rate */
brfa = (((sysclk*32000)/(baud * 16)) - (sbr * 32));
/* Save off the current value of the UARTx_C4 register except for the BRFA field */
temp = UART_C4_REG(uartch) & ~(UART_C4_BRFA(0x1F));
UART_C4_REG(uartch) = temp | UART_C4_BRFA(brfa);
UART_C5_REG(uartch) = 0xA0;
UART_PFIFO_REG(uartch) = 0xEE;
UART_CFIFO_REG(uartch) = 0xC0;
UART_S2_REG(uartch) = 0x00;
UART_C3_REG(uartch) = 0x00;
UART_TWFIFO_REG(uartch) = UART_TWFIFO_TXWATER(0);
UART_RWFIFO_REG(uartch) = UART_RWFIFO_RXWATER(1);
/* Enable receiver and transmitter */
UART_C2_REG(uartch) |= (UART_C2_TE_MASK
| UART_C2_RE_MASK | UART_C2_TIE_MASK | UART_C2_RIE_MASK);
/*Uart configuration looks good as I am bal eto put data on UART3_D buffer and watch on Tera term*/
/*DMA configuration*/
DMA_MemMapPtr DMA0 = DMA_BASE_PTR;
DMAMUX_MemMapPtr DMAMUX0 = 0x40021000;
DMAMUX0->CHCFG[0] = 0;
DMAMUX_CHCFG_REG(DMAMUX_BASE_PTR,0) = DMAMUX_CHCFG_ENBL_MASK|DMAMUX_CHCFG_SOURCE(0);
DMA0->TCD[0].BITER_ELINKNO = 0;
DMA0->TCD[0].CITER_ELINKNO = 0;
DMA0->TCD[0].SADDR = (uint32_t) &gau8Source0[0];
DMA0->TCD[0].ATTR = DMA_ATTR_SMOD(8) | DMA_ATTR_SSIZE(0) | DMA_ATTR_DMOD(0) | DMA_ATTR_DSIZE(0);
DMA0->TCD[0].SOFF = 1;
DMA0->TCD[0].NBYTES_MLNO = 1;
DMA0->TCD[0].SLAST = 0;
DMA0->TCD[0].DADDR = (uint32_t)(0x4006D007) ;//&(UART5->D);
DMA0->TCD[0].DOFF = 0;
DMA0->TCD[0].DLAST_SGA = 0;
DMA0->TCD[0].CSR = DMA_CSR_DREQ_MASK | DMA_CSR_DONE_MASK | DMA_CSR_INTMAJOR_MASK;
u32fnNVIC_EnableIRQ(INT_DMA0);
u32fnNVIC_EnableIRQ(INT_DMA1);
/*Transfer */
DMA0->TCD[0].BITER_ELINKNO = DMA_BITER_ELINKNO_BITER(8);
DMA0->TCD[0].CITER_ELINKNO = DMA_CITER_ELINKNO_CITER(8);
DMA0->SERQ = DMA_SERQ_SERQ(0);
--------------------------------------
Observation
1. Controller hits exception when I step through
DMAMUX_CHCFG_REG(DMAMUX_BASE_PTR,0) = DMAMUX_CHCFG_ENBL_MASK|DMAMUX_CHCFG_SOURCE(0);
2. How I can initiate the transfer on UART ?