AnsweredAssumed Answered

fetch rx uart stream with sdma

Question asked by lars traeger on Feb 27, 2013
Latest reply on Apr 14, 2015 by Akshay Bhat
Branched to a new discussion



i want to fetch a continuous Uart Stream over a SDMA Channel. The common Packet size is greater then 32Bytes.


Until now i manage to build my own sdma script that is triggert by the uart rx dma request. I use UART2, so that i'm working with the Peripheral Funktion Unit to fetch the data and the Burst Unit to store the data in my memory. All works fine with Packet sizes under 32Bytes.


The Problem is now, when i transmit Packets greater then 32 Bytes ,the UART FIFO overruns and the tailing data will be dropped. For me it seems that the procedure--> generate dma request/ trigger as runnable channel / load context/ run channel,  takes so long, that the UART FIFO is already full and begin to drop data. I test it with 9600 Baud-rate but the same Problem occurs. I also test it with a running dma channel that read the rx fifo and store it in memory when value is valid (check CHARRDY flag) to omit the context switches etc. But every time i get an Overrun issue.


My Question is now, is my Goal possible and somebody done this work already. if so, could  i achieve fetching continuous Uart Streams till 1-4MHZ?


some hints will be very helpful.