STM32 SPI

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Středa Červen 23 10:36:44 CEST 2021


Asi nepouzivate HAL API? Mozna by se tam dalo inspirovat, pro SPi je tam 
tusim funkce TransmitDMA, ReceiveDMA a TransmitReceiveDMA
Ale ted jsem to nekonroloval.

Dne 23.06.2021 v 9:37 Martin Locker napsal(a):
> Zdravím,
>
> narazil jsem asi na moje nepochopení SPI s využitím DMA.
>
> Mám následující úlohu:
> 1. ze zařízení, kde je STM32 (STM32F103) jako SPI slave periodicky 
> vyčítám data (64B),
> z nadřízeného systému je vyžádání dat iniciované na jednom pinu 
> (vnější přerušení)
> 2. občas potřebuji poslat příkaz pro změnu chování (8B) do slave
>
> Protože to STM32 je docela zaměstnané, chtěl jsme využít DMA pro SPI.
> Pokud udělám jen to odesílání dat (DMA na TX, buffer 64B), tak to 
> funguje ok.
> Pokud zapnu DMA na RX (buffer 8B) i TX, tak pokud jen odesílám data - 
> ok, pokud ale přijde příkaz shora, tj. přijmu těch 8B, tak se 
> odesílání posune od těch 8B - očekávaný stav (zatím jsem to vyřešil 
> tím, že přijímám také 64B, ale to je plýtvání časem).
>
> Další pokus byl mít zapnuto DMA jen na příjem, pokud přijde požadavek 
> na data, tak vypnu DMA na přijmu a nastavím DMA na vysílání (po 
> odeslání to vrátím). Pokud pouze posílám data, tak ok. Jakmile však 
> něco přijmu, tak se to nějak posune a první vysílaný znak je 0 a pak 
> teprve následuje obsah tx bufferu.
>
> Asi se tam do odesílacího registru dostane při tom zapnutí něco z toho 
> přijmu.
> Jak toto řešit? Díky za připomínky.
>
> S přáním pevného zdraví
> 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


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210623/a0a266e1/attachment.html>


Další informace o konferenci Hw-list