STM32F103, USART RX - DMA

Jan Waclawek konfera na efton.sk
Pátek Leden 15 09:51:29 CET 2016


Rx USART je predsa zdroj dat, t.j. on ich zapisuje.
Citate ich na zaklade polohy head indexu, t.j. NDTR. Treba mat na pamati,
ze to nie je priamo index, ale "pocet prazdnych miest", t.j. je od 1 do N
nie od 0 do N-1.

Ak by ste implementovali opacny smer tak zase pisete na zaklade obsahu NDTR
a cita uz hardware.

Ma to take gotcha nuancy typu ze update NDTR neprebieha presne v tom poradi
ako pise appnote (co je bohuzial jediny zdroj podrobnejsich informacii),
ale ak pouzivate "kniznice" alebo neoptimalizovany kod, tak sa to
neprejavi. Detaily/okolnosti si nepamatam, ja som s tym problem nemal,
musel by som vyhrabavat z fora.

Nijako sa to nelisi od bezneho kruhoveho buffera, akurat ze jeden smer je
obhospodarovany hardwarom.

wek

----- Original Message ---------------

Subject: Re: STM32F103, USART RX - DMA
   From: Michal Grunt <michal.grunt at gmail.com>
   Date: Fri, 15 Jan 2016 09:37:31 +0100
     To: HW-news <hw-list at list.hw.cz>

>A jak zapí±u data do kruhového bufferu bez přeru±ení?
>
>Dne 14. ledna 2016 12:45 Jaroslav Buchta <jaroslav.buchta at hascomp.cz> napsal(a):
>> jde to, muzete periodicky cist, kolik znaku DMA preneslo. kdyz udelate
>> buffer kruhovy, nemusiite se jinak o nej uz starat vubec.
>> Dne 14.01.2016 v 11:52 Michal Grunt napsal(a):
>>>
>>> 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±í?



Daląí informace o konferenci Hw-list