STM32, SPI daisy chain

Petr Labaj labaj na volny.cz
Pátek Květen 26 01:47:20 CEST 2023


Teda pro menší počet pozic na backplane by to šlo i bez toho 74HC.., jen 
s tím odporem.
Jen by se sčítaly hodnoty těch odporů, pokud by tam nebyly zasunuté moduly.
To hradlo by případně stačilo dát třeba jen na každou 3. pozici nebo tak.

PL

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

Dne 26.5.2023 v 1:34 Petr Labaj napsal(a):
> Už jsem se tím nechtěl dál zaobírat, protože nikoho jiného už to 
> nezajímá a my dva tím akorát zabíjíme čas. Ani jeden z nás nemá snahu 
> a chuť se nechat přesvědčit na řešení toho druhého.
> Ale přece jen ještě jedno vyjasnění nedorozumění.
>
> Těch 20-30 řádků kódu je univerzální část, která zajišťuje ten princip 
> Token Passing.
> Samozřejmě v tom není zahrnut program, který daná data připravuje a 
> odesílá/přijímá. Ten je závislý na tom, o jaké zařízení jde, že.
>
> K té obousměrnosti: já to kdysi implementoval tak (klasicky, bez Token 
> Passing), že master poslal slavovi příkaz. Pak mu posílal nuly (jako 
> nosnou) tak dlouho, až mu slave odpověděl. A podle odpovědi buď zase 
> master něco poslal nebo naopak zpracovával obdržené výsledky. Prostě 
> běžná obousměrná síťová komunikace.
> Já tak měl udělanou komunikaci mezi procesory. Běžně tak ale přece 
> funguje komunikace s kdejakým HW. Tam je většinou prodleva mezi 
> příjmem a vysíláním fixní, protože ji realizuje HW. Já tam měl 
> vysílání nosné proto, abych simuloval tak trochu asynchronní provoz.
> Tohle by se klidně dalo tím Token-Passing režimem udělat úplně stejně. 
> Jen by tam přibylo těch 20-30 řádků pro předávání tokenu. Tehdy mě to 
> nenapadlo.
> Z realizačních důvodů jsem to nemohl udělat po UARTech (nebyly k 
> dispozici). A I2C jsem nikdy neměl moc rád (a stále nemám).
>
> K tomu backplane: jednoduše. Vyžadovalo by to jedno CMOS hradlo (jen 
> budič, třeba 74HC244 pro 8 pozic pro moduly) a jeden odpor pro každý 
> konektor.
> Pin CS_IN by byl přes velký odpor připojený na vstup toho 74HCxx. Tak 
> když by tam nebyl zasunutý modul, signál CS_IN by se kopíroval na 
> CS_OUT a kruh by se uzavíral.
> Zasunu desku, pak aktivní GPIO výstup CS_OUT snadno přemůže ten 
> překlenovací odpor a kruh je  na této pozici řízen a daný modul je 
> zařazen do sběrnice.
>
> S tím Schwarzeneggerem jste mě trochu rozhodil. Jako herec mi byl vždy 
> sympatický, jako politik-progresivista moc ne. Tak se to navzájem tak 
> vyvažovalo.
> Ale pokud píšete, že je SPI-kompatibilní, tak to by situaci zásadně 
> ovlivnilo do plusu.
>
> PL
>
> *********************
>
> Dne 25.5.2023 v 23:52 wek napsal(a):
>> > Rozumím, je třeba najít podpůrné argumenty pro své řešení a 
>> odsuzující pro ta ostatní. ;-)
>>
>> Iste. A prajem Vam, aby ste nejake nasli... :-D
>>
>> > implementace ve slave je triviální, na nějakých 20-30 řádků v C, 
>> možná i míň
>>
>> A ja sa na tych Vasich trivialnych 20-30 riadkov, mozno aj menej, 
>> tesim... :-)
>>
>> Okrem ineho aj preto, lebo mi to konecne objasni, ako presne sa 
>> dosiahne toto:
>>
>> > zřetězení tímto způsobem ponechává každému slave naprostou svobodu,
>> > jak a co bude s masterem komunikovat (nemá-li zrovna nic tak klidně 
>> i 0 byte),
>>
>> ... lebo si myslim, ze slave ma primalo moznosti aby o tychto veciach 
>> mohol rozhodovat.
>>
>> A ze ako sa da zrealizovat...
>>
>> > kam by se jen zasunutím destičky zařadil do busu další slave
>>
>> ...bez vlastnorucne skonstrovaneho speci konektora, tak to skutocne 
>> netusim. Nieto este...
>>
>> > (po zasunutí by následoval cyklus "ozvi se kdo jsi tu a řekni co 
>> umíš",
>> > automaticky vyvolaný masterem)
>>
>>
>> wek
>>
>> PS. '51 nie je ziadna vykopavka ale najlepsi mcu vsetkych cias.
>>
>> PS2. O nahradeni vojakov strojmi bol natoceny dobry dokumentarny film 
>> tak pred 30 rokmi. Ak sa lepsie prizriete, Arnold ma ma lavom bicepse 
>> vytetovane MOSI a na pravom MISO.
>>
>>
>>
>> On 25 May 2023 23:12:45 CEST, Petr Labaj <labaj na volny.cz> wrote:
>>
>>     Rozumím, je třeba najít podpůrné argumenty pro své řešení a
>>     odsuzující pro ta ostatní. ;-) Takže asi naposled, jen shrnutí: -
>>     metoda Token Passing není nic exotického, ale celkem běžně
>>     používaná metoda - zřetězení tímto způsobem ponechává každému
>>     slave naprostou svobodu, jak a co bude s masterem komunikovat
>>     (nemá-li zrovna nic tak klidně i 0 byte), jak dlouho,
>>     simplex/duplex, jak rychle atd. - klidně můžou být na sběrnici
>>     různí slavesové, třeba i velmi pomalé AVR a velmi rychlé STM32H a
>>     podobně (samozřejmě při ošetření napěťových úrovní), dokonce i
>>     něco se SW realizovaným SPI jako nějaká vykopávka (třeba nějaké
>>     x51) - implementace ve slave je triviální, na nějakých 20-30
>>     řádků v C, možná i míň (potřebuje jen umět povolit/zakázat SPI,
>>     testovat jednu GPIO linku a nastavit jednu GPIO linku) - není
>>     žádný důvod, proč by to nemělo fungovat na jakémkoli typu
>>     procesoru, starém i budoucím, tedy ochrana investic - snadno by
>>     se dal udělat nějaký backplane s řadou konektorů, kam by se jen
>>     zasunutím destičky zařadil do busu další slave (po zasunutí by
>>     následoval cyklus "ozvi se kdo jsi tu a řekni co umíš",
>>     automaticky vyvolaný masterem) Při implemetaci mého spolehlivého
>>     SPI pak létají mezikontinentální rakety přesně na čas podle
>>     jízdního (raketového) řádu. Tak na co tam živit nějaké zbytečné
>>     chlapy. SPI forever. ;-) PL ********************** Dne 25.5.2023
>>     v 14:18 Jan Waclawek napsal(a):
>>
>>             Pravidlo: žádný zákazník nikdy dopředu pořádně neřekne,
>>             co všechno dříve či později bude potřebovat. Takže vždy
>>             je třeba myslet na pozdější rozšiřitelnost. 
>>
>>         Premysliet mozno, ale urcite netreba robit prilis velke
>>         vylepsenia. A treba zacat s proof-of-concept vecami, aby sa
>>         zasadne problemy ukazali hned. Napriklad taka metoda
>>         zretazenia chipselectov... na papieri to vyzera dobre, ale ak
>>         sa to zacne robit, tak sa rychlo ukaze, aka blbost to bola...
>>         ;-) Ako vravim, zadanie bolo, ze transakcia ma prebehnut
>>         automaticky, bez nejakeho saskovania v software. Ak sa maju
>>         veci robit v software, tak to pokojne mozu byt vsetci
>>         postupne master, presne tak ako sa to pri odovzdavani tokenov
>>         robi, a vobec netreba riesit ziadne zretazovanie
>>         chipselectov. Tie chipselecty vlastne predstavuju aj tak
>>         viacmenej len metodu identifikacie poradia, to sa da riesit
>>         aj inak, pridelenim poradovych cisiel v software napriklad.
>>         Medzicasom som vymyslel metodu, ako so zretazenim MISO/MOSI
>>         dosiahnut volitelne dlzky sprav (ano, kvoli tomu som sa
>>         nevyspal). Je to uplne zbytocna komplikacia, ktoru zakaznik
>>         nechce a nikdy ani nebude chciet, vymyslam to ciste len kvoli
>>         Vam; a je to na dlhsie rozpravanie, mozno sa cez vikend k
>>         tomu dostanem. A tiez si to musim odskusat aj na druhom type
>>         STM32 DMA (single-port), s ktorym mam menej skusenosti, a to
>>         si vyzaduje robotu a cas a aj uplne sprosty fyzicky
>>         priestor... Ti chlapi, co odpaluju medzikontinentalne rakety
>>         s jadrovymi hlavicami, sedia v tych najlepsich protijadrovych
>>         bunkroch ktore su k dispozicii; a oni to vedia. V pripade
>>         potencialneho odvetneho utoku je to to najlepsie mozne
>>         miesto, kde by mohli byt, urcite odtial utekat nebudu.
>>         Navyse, dostavaju slusny plat a pritom vlastne nikdy nic
>>         nerobia (okej, obcas nejake smiesne cvicenie s cervenym
>>         telefonom a tymi klucami). Ziadne SPI. wek ----- Original
>>         Message --------------- Subject: Re: STM32, SPI daisy chain
>>         From: Petr Labaj <labaj na volny.cz> Date: Thu, 25 May 2023
>>         00:09:24 +0200 To: hw-list na list.hw.cz
>>
>>             Ad fixní délka: Pravidlo: žádný zákazník nikdy dopředu
>>             pořádně neřekne, co všechno dříve či později bude
>>             potřebovat. Takže vždy je třeba myslet na pozdější
>>             rozšiřitelnost. Ad vstup dat: Ale jak daný slave ví, co
>>             budou poslední data? Vy počítáte s tím, že on všechno
>>             pochytá do bufferu a teprve z něho to zpětně přečte? Můj
>>             způsob je zcela dynamicky. Posílej co chceš, kolik chceš,
>>             komunikuj jednosměrně nebo obousměrně, měj jednoho nebo
>>             20 slaves - prostě cool & free. Ad mezikontinentální
>>             rakety: Dva týpci s klíčema je starý způsob. Nejsou lidi,
>>             chlapi utíkají před odvodní komisí. A ti, co už tam jsou,
>>             utečou strachem před protiúderem. Takže rakety je třeba
>>             startovat přes SPI. Ad můj způsob: Timery netřeba. DMA
>>             jen tehdy, když bude komunikace rychlá. Ale to je stejné
>>             jako u Vás. Jediné, co je navíc, jeden výstupní GPIO pin.
>>             Odměnou za to je téměř neomezený systém. PL PS. ARCnet je
>>             (byl) moje srdeční záležitost. Psal jsem pro něho drivery
>>             ještě do komerčních Unixů, před érou Linuxu. Myslím, že
>>             jsem tehdy postavil největší ARCnetové sítě v tehdejším
>>             Československu. ********************** Dne 24.5.2023 v
>>             23:34 wek napsal(a):
>>
>>                 --- 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) 
>>
>>     ------------------------------------------------------------------------
>>     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
>
>
> _______________________________________________
> 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/20230526/18c4eeb8/attachment-0001.htm>


Další informace o konferenci Hw-list