Nu medans jag väntar på KFly panelerna (och KFlow kretskorten) så har jag tagit mig tiden att sätta in mig i DMAn i STM32F4orna.
Det jag har gjort är ett test för att kommunicera USART med två små buffrar enligt bilden:
uart_dma.png
Tanken är då att DMAn kan fylla en av de små buffrarna medans "Serial Manager" läser ur den andra.
På så vis behöver aldrig DMAn vänta på avkodningen och avkodningen körs enbart när det finns en full buffer.
Samt att byta buffrar, timeouts osv sköts automatiskt med nästan ingen kod alls - vilket get mycket snabb exekvering.
Ett problem som kan uppstå är om det kommer data, men det fyller inte en buffer. Som det visas i bilden så startar jag en timer som är "DMA Timeout", dvs om det finns bytes i buffern men den är inte full och det har gått för lång tid, så tvingar en "buffer switch" och den halvfulla buffern töms.
Jag gjorde lite tester med detta och det ser mycket lovande ut.

Pumpade data så fort som kopplingen tillät vid 3MBit/s (Mbaud) och inga problem alls.
Va tycker ni? Är det en bra eller dåligt metod? Kom gärna med kommentarer!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.