STM32F103, USART RX - DMA

Michal Grunt michal.grunt na gmail.com
Pátek Únor 26 13:01:31 CET 2016


Oživuji toto téma (nyní to potřebuji řešit). Šlo by to nějak takto
(USART1, stm32f103c8t6)?
Inicializace DMA (periferie/pamět - DMA_M2M_Disable) a vyčitání z
kruhového bufferu.
http://pastebin.com/r8kb97MQ

Děkuji, MG


Dne 15. ledna 2016 10:04 Tomáš Hamouz <hamouz na divesoft.cz> napsal(a):
> Pokud si jste jistý, že stihnete data z bufferu vyčítat a nenastane
> overflow, dá se to zminimalizovat a vystačíte s jediným bufferem.
> Sice trochu "dirty" metoda, ale funguje.
>
> DMA nastavíte tak, aby se buffer cyklicky plnil. U některých procesorů
> na stačí zacyklená definice zřetězeného DMA, někde to budete muset
> ošetřit v přerušení od konce DMA přenosu. STM32 mám v plánu, ale
> zatím ho neznám.
>
> Counter přenesených dat v DMA kontroléru pak funguje jako ukazatel
> odzadu do bufferu, kde končí přijatá data. Druhý konec fronty si pak
> obsluhujete při vyčítání.
>
> Pokud by overflow nastal, přijdete o celý buffer a nemáte to nijak
> indikované. Dobré je mít nad tím nějakou přenosovou vrstvu která
> zajišťuje kontrolu integrity a opakování paketu při chybě.
>
> Tomáš
>
>
>
>
>> Zdravím, DMA jsem ještě nepoužíval tak se chci zeptat zda je nutné
>> používat i přerušení... Představa je taková, že mám dva buffery. Do
>> jednoho se kopírují data z RX USART z druhého se čte v hlavní smyčce
>> programu. Když se buffer z UARTu naplní začne se plnit druhý a ten
>> první se použije a naopak. Ale je nežádoucí hlavní smyčku programu
>> přerušovat, protože tam potřebuju mít stálý tok dat hlavně v úseku kde
>> se bude vyprazdňovat buffer... Bude to takto fungovat? Nebo je DMA
>> trochu komplikovanější?
>
>> Děkuji, MG
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list