STM32, SPI daisy chain

Jan Waclawek konfera na efton.sk
Čtvrtek Květen 25 14:18:48 CEST 2023


>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)


Další informace o konferenci Hw-list