STM32F103 UART DMA

Martin Locker locker na vosrk.cz
Úterý Prosinec 26 13:13:02 CET 2023


Ten packet má vždy 48B, takže jsem si udělal kruhový buffer na 96B.
S tím, že po přerušení zpracuji ten přijatý packet. Jen jak to zasynchronizovat?
Průběžné zpracování jsem měl, ale chtěl jsem zkusit
trochu odlehčit procesoru (aby nebylo přerušení po každém znaku).

Martin

----- Původní zpráva -----
Odesilatel: Jaroslav Buchta (jaroslav.buchta na hascomp.cz)
Datum: 26/12/2023 13:05
Příjemce: hw-list na list.hw.cz
Předmět: Re: STM32F103 UART DMA

No to bude tim, ze je to cpp a funkce musi byt pojmenovana podle "C"
Prijem pres DMA moc nejde, pokud to neni pevne dany pocet B.
Ja si delam kruhovy buffer, preruseni v pulce a celem rozsahu a navic to ocmuchavam periodicky, znaky postupne stavovym automatem zpracovavam, jak prichazeji.
Dne 26.12.2023 v 13:00 Martin Locker napsal(a):

Tak už se mi to podařilo rozjet. Někde jsem vygůglil, že je nutné přidat:
extern "C" void DMA1_Channel6_IRQHandler(void);
Sice nechápu proč, ale už to běží.

Tak teď už jen vyřešit "zásadnější" problém. Jak se zachytit na začátek paketu.
Zařízení (lidar) kontinuálně odesílá data po paketech začínajících 0x54 0x2C.
Tak bych potřeboval odstartovat ten DMA přenos se začátkem packetu. 
Abych po dokončení přenosu, měl vždy jeden celý packet.

Martin Locker

----- Původní zpráva -----
Odesilatel: Jaroslav Buchta (jaroslav.buchta na hascomp.cz)
Datum: 26/12/2023 12:13
Příjemce: hw-list na list.hw.cz
Předmět: Re: STM32F103 UART DMA

Podival bych se, jestli neni nejaka zakernost v DigitalRead/Write v preruseni (nebo to rovnou nahradil)
A jestli neni potreba nulovat neco dalsiho v ISR, ze by se to v preruseni zacyklilo...
A nebo ladit v debuggeru.
Dne 26.12.2023 v 12:08 Martin Locker napsal(a):
>> tak to v obsluze přerušení zatuhne 

>Odial viete, ze to zatuhne *v* obsluhe prerusenia?
Po přijetí nastaveného počtu znaků se rozsvítí led, první příkaz v obsluze přerušení. 
Z toho vyvozuji, že se do obsluhy přerušení skočí. 

>Co presne znamena *zatuhne*?
Periodický výpis běžící v hlavní smyčce po rozsvícení led už nepokračuje. 
Když neposílám data (která by se přijala), tak periodický výpis běží.

>Dalo by sa zbavit veci z toho arduina?
Asi budu muset. To jsem použil abych nemusel ručně řešit ten seriák pro debug.
Martin

On 26 December 2023 10:34:47 CET, Martin Locker <locker na vosrk.cz> wrote:

Zdravím a přeji krásné pohodové svátky.

Zbylo mi i trochu času, a tak jsem si zase začal hrát s STM32, ale trochu jsem se zasekl.
Řeším příjem dat na Uartu, chtěl jsem to vyzkoušet přes DMA. Vypadá to, že to funguje, ale
pokud nechám generovat přerušení na konci přenosu, tak to v obsluze přerušení zatuhne 
(mám tam pro test rozsvícení led, jednou se do obsluhy IRQ skočí).
Když to nechám bez přerušení a testuji pouze příznak dokončení DMA přenosu, tak to běží.

Pokud by se někdo také "nudil", tak zdroják je:
https://robotika.vosrk.cz/_soubory/main.cpp

Díky za případné nakopnutí (správným směrem).

Martin Locker


_______________________________________________
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.czHw-list na list.hw.czhttp://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



_______________________________________________
HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20231226/050ac463/attachment.htm>


Další informace o konferenci Hw-list