OT Cela rodina STM32 a USART+DMA+IRQ
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Čtvrtek Únor 26 19:45:15 CET 2015
DMA i u Rx je pomerne uzitecne, delam to tak, ze plnim cyklicky buffer
dle aplikace 64-512B a mam nastaveno generovani preruseni v pulce a na
konci. Cili pri rychlych prenosech mi to generuje preruseni v pripade
potreby.
Mimo to buffer obsluhuju v tasku s nizkou prioritou periodicky, takze
zachytim i kratsi prijate sekvence. Vyhodou je, ze to minimalne zatezuje
procesor, pokud dela neco duleziteho a pokud nedela, obsluhuje to zase
rychle prijem.
U vysilani je to jasne, tam zadny problem neni, pripravim buffer a
nastavim DMA. Pokud potrebuju neco odeslat pred ukoncenim vysilani,
pozastavim DMA, upravim buffer a nastaveni a jede se dal. Ja uz bez DMA
v podstate ani ranu.
Dne 26. 2. 2015 v 18:41 Miroslav Mraz napsal(a):
> Nějak v tom nevidím příliš smysl. To původní vlákno se týkalo spíš
> srovnání vlastností DMA a FIFO při příjmu. Ale nic nenutí to DMA
> používat i když to jde. Ve většině případů to není příliš vhodné.
> 1. Obvykle musím nějak reagovat na každý jediný znak.
> 2. ARM má výkonu dost, mezi znaky mám např. při 57600 desetiny ms,
> takže v přerušení můžu udělat pár set instrukcí. Což stačí na průchod
> nějakým konečným automatem a zapsáním bytu do buferu.
> 3. Pokud potřebuji víc času, stejně musím řešit frontu a odloženou
> proceduru. Ale většinou ani to není třeba, protože to "více času"
> platí obvykle na až na konci rámce a zde lze zůstat v tom přerušení i
> déle (pokud je protokol navržen pro tt. způsob činnosti např. -
> dotaz->odpověď) aniž by nějaké znaky utekly.
>
> Samosebou mohou existovat aplikace, kde je to DMA výhodou, ale
> nenapadá mě kde. Jedině pokud rámce mají pevnou délku, ale u UARTu je
> to dost iluzorní už kvůli tomu že je to asynchronní. Možná nějaký
> stream 8-bit dat, kde zase tak moc nezáleží na doručení (audio A-law,
> u-law apod.).
>
> Mrazík
>
> Dne 26.2.2015 v 09:25 Jan Waclawek napsal(a):
>> http://list.hw.cz/pipermail/hw-list/2014-November/465770.html
>>
>> "No to právě ne. Protože když použijete DMA, tak už se nedá
>> použít IRQ od příjmu znaku. Jinak by to totiž bylo moc jednoduché."
>>
>> Presiel som tucet RM od vsetkych pod-rodin STM32, a poznamku
>>
>> "If DMA is used for reception, do not enable the RXNEIE bit."
>>
>> som nasiel len u 'F4xx a 'F2xx. Podla mna to bude suvisiet s tym, ze tam
>> maju DMA jednotky na ich "perifernom porte" "skratku" cez AHB/APB
>> bridge,
>> v inych pod-rodinach to myslim ze nie je (nepozeral som vsade).
>>
>> Aj u 'F4xx/'F2xx by ta skratka mohla ist obist prinajmensom na DMA2
>> (t.j.
>> USART1 a USART6) neortodoxnym "opacnym" nastavenim, t.j. pristupovat do
>> USART cez "memory port" DMA jednotky a do pamate cez "periferny
>> port"; ale
>> diabol moze byt v detailoch, ktore su pre mna pochopitelne skryte.
>>
>> Nemam teraz moznost to vyskusat; ak o to ma niekto zaujem, mohol by to
>> prosim vyskusat ako na 'F4, tak aj ci sucasne DMA a IRQ idu bez
>> problemov
>> na inych pod-rodinach okrem 'F4/'F2.
>>
>> A, pochopitelne, privitam komentar od insiderov z ST.
>>
>> wek
>>
>>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com
Další informace o konferenci Hw-list