OT Cela rodina STM32 a USART+DMA+IRQ

Petr Labaj labaj na volny.cz
Pátek Únor 27 21:26:46 CET 2015


Celé to vzniklo dříve tak, že se srovnávaly možnosti/výhody USARTu
s FIFO a bez FIFO ale s DMA. Padl názor, že DMA funkci FIFO zastane.
Já jsem tvrdil (a tvrdím stále), že ani náhodou.

Přerušení od DMA totiž taky není nic moc. Dá se udělat přerušení od
ukončení transferu (ale jak dlouhý bude?), od half-ukončeni (to je jediná
aspoň trochu použitelná možnost) a od chyby.
Kdyby existoval režim "IRQ po přijetí keždého znaku", ale znaky by se
stále automaticky ukládaly do nějakého kruhového bufferu, tak by to sice
pořád bylo trochu horší než FIFO (ve FIFO jsou i flagy), ale už by to bylo
aspoň srovnatelné. Pokud ale existuje jen přerušení po ukončení přenosu
(a já dopředu nevím, jak bude dlouhý, nevíc bych chtěl data zpracovávat
průběžně), tak je mi DMA celkem ku prdu.
Jedine používat minimální buffer na 2 byte a používat IRQ po polovině přenosu,
tedy po každém znaku. Ale pak mám "simulované FIFO" jenom na 1 znak.

PL

******************************

From: "Josef Štengl" <ok1ced na nagano.cz>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Friday, February 27, 2015 9:51 AM
Subject: Re: OT Cela rodina STM32 a USART+DMA+IRQ


Možná to mám vytržené z kontextu, ale k čemu by to bylo dobré?

  Používám dma a přijde znak. Při Rx přerušení
  - číst je to nesmysl, protože je to kopírováno do paměti (+ další zátěž sběrnice), takže bych dělal práci 2x.
  - informaci o tom že přišel znak mám (dma int)

Co jsem minul? To že to nejde, neznamená že je to chybně - když to není užitečné. Ale možná je to jen můj omezený rozhled.

ced


Dne 27.2.2015 v 08:10 Jan Waclawek napsal(a):

> Ze u 'F4 sa neda/nema pouzit prerusenie od USART Rx ak sa pouzije DMA,
> pokladam za chybu navrhu, a zaujima ma, ci tato chyba je specificka len
> pre 'F2/'F4, ako to naznacuju RM.



Další informace o konferenci Hw-list