Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

CCS/TMS320C5535: C5535 using DMA to receive UART, not return Interrupt.

$
0
0

Part Number:TMS320C5535

Tool/software: Code Composer Studio

Hi all,

I am using DSP/BIOS config HWI_INT8 for DMA Interrupt. - useDispatcher : Dma_Isr.

Config Uart and DMA : 

UartSetup.clkInput = sysClk;

status = SYS_setEBSR(CSL_EBSR_FIELD_PPMODE,CSL_EBSR_PPMODE_1);
ASSERT(status == CSL_SOK);

/* Initialize CSL UART module */
status = UART_init(&UartObj,CSL_UART_INST_0,UART_POLLED);
ASSERT(status == CSL_SOK);

status = SYS_setEBSR(CSL_EBSR_FIELD_PPMODE,CSL_EBSR_PPMODE_1);
ASSERT(status == CSL_SOK);

/* Handle created*/
UartHandle = (CSL_UartHandle)(&UartObj);

status = UART_setup(UartHandle,&UartSetup);
ASSERT(status == CSL_SOK);

//Uart_Test();

/* Configure the DMA channel for UART receive */
DmaConfig.pingPongMode = CSL_DMA_PING_PONG_DISABLE;
DmaConfig.autoMode = CSL_DMA_AUTORELOAD_ENABLE;
DmaConfig.burstLen = CSL_DMA_TXBURST_1WORD;
DmaConfig.trigger = CSL_DMA_EVENT_TRIGGER;
DmaConfig.dmaEvt = CSL_DMA_EVT_UART_RX;
DmaConfig.dmaInt = CSL_DMA_INTERRUPT_ENABLE;
DmaConfig.chanDir = CSL_DMA_READ;
DmaConfig.trfType = CSL_DMA_TRANSFER_IO_MEMORY;
DmaConfig.dataLen = (TRANSASM_RDBUF_SIZE*4);
DmaConfig.srcAddr = (Uint32)&(UartHandle->uartRegs->THR);
DmaConfig.destAddr = (Uint32)u32UartDmaReadBuf;

DmaRdHandle = CSL_configDmaForUart(&DmaRdChanObj, CSL_DMA_CHAN4);
ASSERT(DmaRdHandle != NULL);

IRQ_globalDisable();
IRQ_clearAll();
IRQ_disableAll();

IRQ_clear(DMA_EVENT);
IRQ_enable(DMA_EVENT);
IRQ_globalEnable();

status = DMA_start(DmaRdHandle);
ASSERT(status == CSL_SOK);

void Dma_Isr(void)
{
CSL_Status status;
ifrValue = CSL_SYSCTRL_REGS->DMAIFR;
CSL_SYSCTRL_REGS->DMAIFR |= ifrValue;

}

Program not return interrupt, but I am using DMA Polled ,it wil be ok!

Thanks ! 


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>