STM32, SPI daisy chain

Petr Labaj labaj na volny.cz
Středa Květen 24 22:51:46 CEST 2023


Váš:
Jak daný slave pozná, že data, která mu lezou do vstupu, jsou pro něho? 
Do vstupu mu jde celý vláčik, a on neví, kolik je slaves a jak dlouhé 
zprávy posílají.
Takže ve výstupních datech některého předchozího slave může být obsah, 
který on vyhodnotí jako příkaz "odstartuj mezikontinentální střely s 
jadernými hlavicemi".

Můj:
- každý slave testuje, kdy mu CS_IN spadne do neaktivního stavu, v té 
chvíli shodí své CS_OUT do neaktivního stavu a zapne své SPI
- start jednoho kola komunikace - master nahodí CS (předtím byl neaktivní)
- první slave přijímá a vysílá data, libovolně dlouho, podle své potřeby
- až dokončí svou komunikaci, nahodí CS_OUT a vypne své SPI (master má 
stále CS aktivní, teď už má trvale aktivní CS_OUT i tento první slave)
- druhý slave je teď naadresován (do jeho CS_IN jde CS_OUT toho předchozího)
- druhý slave přijímá a vysílá data, libovolně dlouho, podle své 
potřeby, až skončí, nahodí své CS_OUT a vypne své SPI, čeká až mu vstup 
CS_IN spadne do neaktivního stavu
- totéž pro 3. až N-tý slave
- až takto server obslouží všechny své slavesy, tak shodí svůj výstup CS 
a tím se celý řetězec připraví na další kolo

Dokonce by ani master nemusel vědět, kolik má slavesů. Stačilo by, kdyby 
do nějakého jeho GPIO vstupu vedl CS_OUT posledního slave v řetězci.
Pak podobně jako u ARCnetu. Když by obsloužil všechny, které si myslí že 
má v řetězci, ale nedorazil by mu signál na ten GPIO vstup (tj. někdo 
přidal do řetězce další slave nebo je porucha), tak by master poslal na 
sběrnici speciální zprávu "kdo tu je, ať se přihlásí".

PL

*********************

Dne 24.5.2023 v 22:01 wek napsal(a):
> --- moj
>
> Ocislujme master=0, slave=K=1..N, pricom maximalne moze byt slavov M, 
> N<=M.
>
> U mna master vysle vlacik sprav v opacnom poradi, t.j. prva sprava je 
> pre M, druha pre M-1, ..., posledna pre 1, oznacme (M)(M-1)...(2)(1).  
> Prvy slave na zaciatok vlacika prihodi svoju spravu pre mastra, 
> oznacme ju [1], a z konca si odstrihne spravu co posiela master jemu, 
> t.j.(1). Druhemu uz teda pride sprava [1](M)(M-1)...(2). Urobi to 
> iste, prida na zaciatok [2] a z konca sa necha (2), takze tretiemu 
> pride [2][1](M)(M-1)...(3), atd.
>
> Kazdy slave teda na konci vlacika najde spravu od mastra jemu, a 
> mastrovi pridu spravy od vsetkych slave v tvare 
> [N][N-1]...[2][1](M)(M-1)...(M-N).
>
> --- Vas
>
> > První slave dostane "peška" (token) a komunikuje po SPI tak dlouho, 
> jak potřebuje.
> > Až si vyřídí svoje, tak pošle peška dál.
>
> Problem je v tom, ze o tom, ako dlho komunikuje K-ty slave nerozhoduje 
> on, ale ten, kto ho drzi za CS=NSS, t.j. K-1. A pritom K ani nema 
> moznost povedat tomu K-1, ze hotovo, lebo K-1 ma vtedy neaktivne NSS, 
> cize nepocuva.
>
> wek
>
>
> On 24 May 2023 18:34:03 CEST, Petr Labaj <labaj na volny.cz> wrote:
>
>     Asi jsem natvrdlý, ale jak to bude umožňovat obousměrnou
>     komunikaci? Do vstupu dat jednoho slave přece vede výstup toho
>     předchozího. Takže Vaší metodou master nemůže poslat co chce kam
>     chce. Ano, u mě každý může používat různě dlouhá data, aniž o tom
>     ostatní ví. Tedy samozřejmě to musí vědět master, protože ten mu
>     ta data připravuje a posílá. Princip je jednoduchý a používá se
>     ledaskde (Token Ring, ARCnet, LEDky WS2812 atd.). První slave
>     dostane "peška" (token) a komunikuje po SPI tak dlouho, jak
>     potřebuje. Až si vyřídí svoje, tak pošle peška dál. PL
>     ******************** Dne 24.5.2023 v 18:14 Jan Waclawek napsal(a):
>
>             Zejména umoľňuje obousměrný provoz 
>
>         Aj tato metoda umoznuje obojsmernu prevadzku.
>
>             a kaľdý slave můľe pouľívat jinak dlouhá data. 
>
>         Bez toho aby o tom vsetci dopredu vedeli? Ak o tom vsetci
>         dopredu vedia, aj tato metoda moze pouzivat rozne dlhe data.
>         wek ----- Original Message --------------- Subject: Re: STM32,
>         SPI daisy chain From: Petr Labaj <labaj na volny.cz> Date: Wed,
>         24 May 2023 18:03:40 +0200 To: hw-list na list.hw.cz
>
>             Já nic neříkám. Já jenom říkám, ľe metoda, kterou jsem
>             navrhoval já (zřetězení jen signálu CS) je lepąí a
>             eliminuje vąechny nedostatky zde popisované metody.
>             Zejména umoľňuje obousměrný provoz a kaľdý slave můľe
>             pouľívat jinak dlouhá data. ;-) No co uľ. Ani větąím
>             frajerům neľ jsem já třeba kdysi nevěřili, ľe je Země fakt
>             kulatá a dokonce se točí. 
>
>     ------------------------------------------------------------------------
>     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 bywww.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/20230524/00323d7e/attachment.htm>


Další informace o konferenci Hw-list