STM32, SPI daisy chain

wek konfera na efton.sk
Středa Květen 24 23:34:17 CEST 2023


--- moj
Uloha znela, fixna dlzka spravy.

Variabilnu dlzku ste si vymysleli Vy, asi by to slo u mna riesit s nejakymi rozumnymi obmedzeniami ale naco.


> Jak daný slave pozná, že data, která mu lezou do vstupu, jsou pro něho? 

Posledna sprava je pre neho.

> Do vstupu mu jde celý vláčik, a on neví, kolik je slaves

Nepotrebuje to vediet, "posledna" je jednoznacne.


Medzikontinentalne rakety s hlavicami sa nestartuju cez SPI, ale  tak, ze dvaja tipkovia naraz otocia klucikom. 


--- Vas
Poziadavka znela, cela transakcia prebehne v hardware. Ten Vas postup v hardware date len za cenu pinov, timerov a DMA naviac, a mate obmedzenie na rychlost SPI (lebo master musi robit medzery medzi kazdym byte, kedze nevie, kedy nastava "prehodenie slave").

Ani verzia s fixnou dlzkou spravy nie je uplne jednoducha a asi bez pinu a timera naviac sa neda urobit v hw.

Vyhodou je mensia spotreba RAM, ale podla zadania ide o 64B (teda v mojom rieseni 72B).

wek



On 24 May 2023 22:51:46 CEST, Petr Labaj <labaj na volny.cz> wrote:
>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/5d745acb/attachment.htm>


Další informace o konferenci Hw-list