STM32, SPI daisy chain
Petr Labaj
labaj na volny.cz
Pátek Květen 26 01:34:37 CEST 2023
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
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230526/82095b27/attachment.htm>
Další informace o konferenci Hw-list