AnsweredAssumed Answered

BF548 UART1 receive DMA

Question asked by caw on Aug 24, 2011
Latest reply on Aug 30, 2011 by vinodbableshwar

I'm trying to configure the UART1 port for receive DMA but can't seem to get it right. I have taken the following steps when initializing the port, registers, and interrupts, as per the documentation I found online:

 

1. Configure the UART port properties (baud rate, parity settings, etc).

2. Disable DMA for channel 8 (DMA8) by setting DMA8_CONFIG to 0.

3. Configuring the rest of the DMA channel registers (DMA8_START_ADDR, DMA8_X_COUNT, DMA8_X_MODIFY, DMA8_Y_COUNT, DMA8_Y_MODIFY, DMA8_IRQ_STATUS). Ensure these values are actually store using SSYNC before continuing.

4. Enable IVG10 interrupts using adi_int_CECHook().

5. Enable ADI_INT_DMA8_UART1_RX peripheral interrupts using adi_int_SICEnable().

6. Enable DMA for channel 8 (FLOW = 0, DI_EN = 1, WNR = 1, NDSIZE = 0, DI_SEL = 0, WDSIZE = 1, DMA2D = 0, SYNC = 0).

7. Finally, enable Rx interrupts for UART1 by setting the ERBFI bit in the IER_SET register.

 

After doing all of this, the ISR I pass in to adi_int_CECHook, which handles the DMA interrupts, is never invoked. What am I missing?

 

Any help would be appreciated.

 

Thanks,

Chris

Outcomes