SPI - upresnenie
Moderátori: psichac, Moderátori
-
- Ultimate člen
- Príspevky: 4417
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
SPI - upresnenie
Cavte.
Mam dilemu. Uz teoreticky viem vsetko o SPI, len stale nechapem prakticky ako funguje samotna komunikacia.
Jeden na youtube hovori ze sa z master posle do Slave 8 bitova instrukcia napr nacitaj byte 2 a ked sa buffer vyprazdni, tak sa potom sleduje sa RC flag bit a prijate data sa vycitajy z bufferu. Cize najprv sa posle ziadost co chce master vycitat zo slave a potom slave posle odpoved. Toto mi je logicke.
Lenze potom sa tam objavi druhy chlapik a ten tvrdi ze SPI je full duplex komunikacia a prebieha simultánne (naraz). Ze pri kazdom clock pulze jeden bit z master odide do slave a zaroven zo slave do master, nakolko buffer registre su prepojene. Teda po 8 clock pulzoch si bufre vymenili data. Aj toto chapem. Ale nechapem potom co mi slave posiela, ked este nevie o od neho chcem a ktory z tychto tvrdeni je skutocnost.
Takze ako to je? Vie mi to niekto vysvetlit? Dakujem.
Mam dilemu. Uz teoreticky viem vsetko o SPI, len stale nechapem prakticky ako funguje samotna komunikacia.
Jeden na youtube hovori ze sa z master posle do Slave 8 bitova instrukcia napr nacitaj byte 2 a ked sa buffer vyprazdni, tak sa potom sleduje sa RC flag bit a prijate data sa vycitajy z bufferu. Cize najprv sa posle ziadost co chce master vycitat zo slave a potom slave posle odpoved. Toto mi je logicke.
Lenze potom sa tam objavi druhy chlapik a ten tvrdi ze SPI je full duplex komunikacia a prebieha simultánne (naraz). Ze pri kazdom clock pulze jeden bit z master odide do slave a zaroven zo slave do master, nakolko buffer registre su prepojene. Teda po 8 clock pulzoch si bufre vymenili data. Aj toto chapem. Ale nechapem potom co mi slave posiela, ked este nevie o od neho chcem a ktory z tychto tvrdeni je skutocnost.
Takze ako to je? Vie mi to niekto vysvetlit? Dakujem.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
Re: SPI - upresnenie
Áno presne tak, je to full duplex. Celú komunikáciu si musíš vysledovať v DS od zariadenia s ktorým komunikuješ, lebo sa to kus od kusu líši.
Napríklad tuším CC1101 vysielala hneď ako prvé stavový bajt, takže ty si napríklad posielal inštrukciu ale spatne sa ti hneď vrátil stavový bajt ktorý si mohol použiť na kontrolu stavu... ale ako som písal, líši sa to od súčiastky k súčiastke...
Napríklad tuším CC1101 vysielala hneď ako prvé stavový bajt, takže ty si napríklad posielal inštrukciu ale spatne sa ti hneď vrátil stavový bajt ktorý si mohol použiť na kontrolu stavu... ale ako som písal, líši sa to od súčiastky k súčiastke...
0
-
- Ultimate člen
- Príspevky: 2564
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: SPI - upresnenie
Alebo častý prípad je ešte, že proste posiela nejaké dummy dáta, resp. ignoruje prichádzajúce dáta počas vysielania odpovede.
0
-
- Ultimate člen
- Príspevky: 4417
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: SPI - upresnenie
Takze ak ja dam v master do buffera 8bitovu instrukciu napr. read adresu 0x04 v slave, tak tak master vygeneruje 8 clk pulzov (tu sa naskyta otazka ako mi slave posle odpoved lebo pocas tych 8 clk pulzov mi posle dummy data) alebo 16 clk pulzov (druhych 8 na prijem odpovede os slave)?
Asi si to budem musiet odskusat a posledovat signaly ako sa to chova. Pozriem sa este raz aj do DS slave ako je to tam popisane. Vecer sa ozvem co som zistil.
Asi si to budem musiet odskusat a posledovat signaly ako sa to chova. Pozriem sa este raz aj do DS slave ako je to tam popisane. Vecer sa ozvem co som zistil.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
-
- Ultimate člen
- Príspevky: 2564
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: SPI - upresnenie
No keď pošlete jeden bajt, tak vygeneruje 8 pulzov. Kvôli príjmu bude treba poslať jeden dummy bajt.
Najlepšie neodhadovať a pozrieť konkrétny datasheet čo tam chce mať.
Najlepšie neodhadovať a pozrieť konkrétny datasheet čo tam chce mať.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: SPI - upresnenie
V tej tvojej prvej otázke. Ten prvý hovorí polopravdu. Ten druhý to popisuje presne. SPI je naozaj full duplex a každým CLK sa pošle jeden bit. Komunikácia sa zaháji tak že pán dá otrokovi CS do aktívneho stavu. To spôsobí to že interná logika otroka sa vynuluje do východiskového stavu a jeho SO sa prepne z vysokej impedancie do výstupného režimu. Potom sa každou hranou posúvajú bity súčasne od pána k otrokovi a samozrejme aj opačne. Či má ten prvý byte od otroka nejaký zmysel alebo nie je dané tým čo je to za bazmek a je to popísané v DS.
Samozrejme ak chce pán prijať nejaké data z otroka po nejakom úvodnom komande tak musí posielať tzv dummy data. V princípe je jedno čo sa pošle. Zvykom býva poslať samé jednotky.
Ono ak by pán nič neposlal tak nepošle nič ani otrok, lebo by tam neboli žiadne hodiny. Kto je pán ten cvičí s hodinami. Otrok sa nimi musí riadiť.
Na konci sa deaktivuje CS a tak otrok sklapne a už je ticho a zvyčajne aj v power down mode.
Samozrejme ak chce pán prijať nejaké data z otroka po nejakom úvodnom komande tak musí posielať tzv dummy data. V princípe je jedno čo sa pošle. Zvykom býva poslať samé jednotky.
Ono ak by pán nič neposlal tak nepošle nič ani otrok, lebo by tam neboli žiadne hodiny. Kto je pán ten cvičí s hodinami. Otrok sa nimi musí riadiť.
Na konci sa deaktivuje CS a tak otrok sklapne a už je ticho a zvyčajne aj v power down mode.
2
2
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Ultimate člen
- Príspevky: 4417
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: SPI - upresnenie
Super, teraz to uz chapem. Diki vsekym za info. Peterple za tym dal peknu bodku.
O tych dummy byte-toch nikde vacsinou nerozpravaju, tak mi to neako neslo do hlavy. To si pekne vysvetlil
Este jedna otazocka, Dummy bajt potom musi byt tiez nastaveny ako READ alebo tam je to uz jedno? Tu je READ definovany ako "0". Cize moj Dummy bajt musi byt 0111 1111 alebo mozu byt 1111 1111, nakolko E ostalo v "0" , prikaz uz dostal a teda mu je to jedno? Samozejme ak sa deaktivuje E tak zase treba poslat READ prikaz s adresou, to mi je jasne.
Len pre info dodavam aj WRITE. Toto mi bolo od zaciatku jasne.
O tych dummy byte-toch nikde vacsinou nerozpravaju, tak mi to neako neslo do hlavy. To si pekne vysvetlil
Momentalne som pozeral datashee RTC . Tu mi chybali pre pochopenie 1 Dummy a 2 Dummy. Cize v Masteri pre istoru vypazdnim buffer (obsah zahodim) a zapisem do buffera prvy bajt, co je 7bit-ova adresa adresa, kde sa 8-mi bit (MSB) nastavi na READ "0", a zacne sa o posiela. Zaroven prijmem od Slave Dummy data. Tieto Dummy data vycitam z Bufera (zahodim) a zapisem do buffera 1 Dummy (1111 1111). Po odoslani 1 dummy zaroven prijmen pozadovane data od slave kore vycitam z bufera, ulozim a zase zapisem 2 dummy (1111 1111) do buffera a takto pokracujem potom az kym sa prijmu vsetky pozadovane data a potom sa deaktivuje E. Tak je to?Samozrejme ak chce pán prijať nejaké data z otroka po nejakom úvodnom komande tak musí posielať tzv dummy data. V princípe je jedno čo sa pošle. Zvykom býva poslať samé jednotky.
Ono ak by pán nič neposlal tak nepošle nič ani otrok, lebo by tam neboli žiadne hodiny. Kto je pán ten cvičí s hodinami.
Este jedna otazocka, Dummy bajt potom musi byt tiez nastaveny ako READ alebo tam je to uz jedno? Tu je READ definovany ako "0". Cize moj Dummy bajt musi byt 0111 1111 alebo mozu byt 1111 1111, nakolko E ostalo v "0" , prikaz uz dostal a teda mu je to jedno? Samozejme ak sa deaktivuje E tak zase treba poslat READ prikaz s adresou, to mi je jasne.
Len pre info dodavam aj WRITE. Toto mi bolo od zaciatku jasne.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
Re: SPI - upresnenie
Peterple je macher, čo dodať
U Dummy bajte už na hodnote nezáleží, pokiaľ to teda v DSku neieje popísané inak. V tvojom prípade to je jedno, dôležitý je hodinový vstup, pomocou neho vysúva slave(otrok) na výstup požadované data...
U Dummy bajte už na hodnote nezáleží, pokiaľ to teda v DSku neieje popísané inak. V tvojom prípade to je jedno, dôležitý je hodinový vstup, pomocou neho vysúva slave(otrok) na výstup požadované data...
0
Naposledy upravil/-a Radus v 18 Aug 2021, 20:43, upravené celkom 2 krát.
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: SPI - upresnenie
To čítanie je tak ako si popísal. Dummy byte môže byť hocičo. Jediné s čím nesúhlasím sú tie vlčie zuby (červené) čo si dokreslil do obrázka. Ono tam bude to čo je tam nakreslené ak pošleš ako dummy 0xFF alebo 0x00. V prvom prípade platí tá horná čiara. V druhom prípade tá spodná. Impulzy by tam boli iba keby si posielal nejakú divočinu, napr 0x55.
Ešte poopravím jednu informáciu z môjho príspevku. Písal som že SO otroka sa dá do výstupného režimu ak sa dá CS (E) do aktívneho stavu. Ako je vidno z obrázka z DS môže toto nastať až po prijatí príkazu. O to zaujímavejšie potom je, čo prijme pán ako ten prvý byte, keďže nikto mu neriadi MISO. V takomto prípade je dobré aby MISO malo pull up aby to nebralo blbosti z luftu. Síce vieme že ten bajt treba ignorovať ale elektricky to nie je kóšer aj keď tam zrovna nič nehorí. Nezapojené vstupy v číslicovke by nemali byť. Je to značka amatérizmu autora obvodového návrhu.
Ešte poopravím jednu informáciu z môjho príspevku. Písal som že SO otroka sa dá do výstupného režimu ak sa dá CS (E) do aktívneho stavu. Ako je vidno z obrázka z DS môže toto nastať až po prijatí príkazu. O to zaujímavejšie potom je, čo prijme pán ako ten prvý byte, keďže nikto mu neriadi MISO. V takomto prípade je dobré aby MISO malo pull up aby to nebralo blbosti z luftu. Síce vieme že ten bajt treba ignorovať ale elektricky to nie je kóšer aj keď tam zrovna nič nehorí. Nezapojené vstupy v číslicovke by nemali byť. Je to značka amatérizmu autora obvodového návrhu.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: SPI - upresnenie
Teraz som sa zase stratil ja Komunikaciu zacnes aktivaciou CS, posles napr adresny bajt a dummy bajt na MOSI, a z MISO vycitas 2 bajty, prvy odignorujes, nasledne deaktivujes CS. Kedy bude linka neriadena?
//...docvaklo, myslis stav high impedance...ok, pravda...
//...docvaklo, myslis stav high impedance...ok, pravda...
0
-
- Ultimate člen
- Príspevky: 4417
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: SPI - upresnenie
Dakujem za upresnenie.
Tie vlcie zuby (Dummy1 a Dummy2) mala to byt kopia toho co je pred tym, dokeslil som to narychlo. Mali to byt tie sestuholnik, (hocico co sa posle).
Tie vlcie zuby (Dummy1 a Dummy2) mala to byt kopia toho co je pred tym, dokeslil som to narychlo. Mali to byt tie sestuholnik, (hocico co sa posle).
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje