STM32F103, USART RX - DMA

Jan Waclawek konfera na efton.sk
Pátek Leden 15 10:11:43 CET 2016


>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.


Vyhrabal som to

https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FUART%20Rx%20with%20DMA%20-%20missing%20bytes&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=329

http://www.efton.sk/STM32/ca.c

Mozete to brat aj ako navod, ako ten problem otestovat.

Mimochodom, DMA v 'F2/'F4 moze je vyrazne odlisny od DMA v inych modeloch,
najma 'F1; je otazne, ci aj v tomto ohlade.

wek





----- Original Message ---------------
>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