Forum » Elektrotehnika in elektronika » Komunikacija med procesorji z SPI
Komunikacija med procesorji z SPI
Microsoft ::
Mene pa zanima, če je možno s to komunikacijo povezat 4 procesorje? Kako naj vežem te štiri priključke vsakega procesoja, da bo možno pošiljati podatke od vsakega procesorja k vsakim procesorju?
by Miha
by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr
Brane2 ::
Kot vem, je SPI full enostaven vmesnik. Ima samo tri glavne pine:
-Data Out (izhod)
-Clock (urin signal)
-Data In
IIRC se urin signal da nastavit kot Master (chip ga generira drugim napravam) ali Slave(chip se ravna po signalu, ki ga generaira kak drug chip.
Najenostavnejsa vezava bi bila torej, da vsem stirim chipom povezes urine signale skupaj, nato pa DataOut enega chipa povezes z DataIn signalom naslednjega in tako naprej.
Tako si bodo cipi (ob ustreznem programju, ki je pa lahko simpl) pac podajali podatke v krogu. Vsak cip bo pac tisto, kar ni zanj, spustil na izhod k nalednjemu sosedu...
Seveda so mozne tudi druge vezave, samo tale se mi zdi najenostavnejsa...
-Data Out (izhod)
-Clock (urin signal)
-Data In
IIRC se urin signal da nastavit kot Master (chip ga generira drugim napravam) ali Slave(chip se ravna po signalu, ki ga generaira kak drug chip.
Najenostavnejsa vezava bi bila torej, da vsem stirim chipom povezes urine signale skupaj, nato pa DataOut enega chipa povezes z DataIn signalom naslednjega in tako naprej.
Tako si bodo cipi (ob ustreznem programju, ki je pa lahko simpl) pac podajali podatke v krogu. Vsak cip bo pac tisto, kar ni zanj, spustil na izhod k nalednjemu sosedu...
Seveda so mozne tudi druge vezave, samo tale se mi zdi najenostavnejsa...
Zgodovina sprememb…
- spremenil: Brane2 ()
slawc ::
tale imena so zlo triki ker je vec SPI vmesnikov. Eden od SPI ima tudi SS pin (to je Slave Select, in je aktiven na 0). Master ima vedno SS na 1, ko ga nekdo povlece na 0, pomeni, da nekdo zeli komunicirati. Od programa mikrota je odvisno kaj se zgodi v takem primeru. Ce pa ima slave SS na 1 je neaktiven in ce je na 0 je aktiven. (IMHO)
Master, Slave se nastima v internih registrih. Torej rabis stiri signalne linije, pomaga ti 2to4 encoder (74hc139). bolj pomaga, ce poves kateri mikro imas.
Master, Slave se nastima v internih registrih. Torej rabis stiri signalne linije, pomaga ti 2to4 encoder (74hc139). bolj pomaga, ce poves kateri mikro imas.
LP,
Slawc
Brane2 ::
IIRC so vsi ostali pini SPIja poleg teh treh bolj ali manj neobvezna sminka. Npr Analog Devicesovi ADSPji imajo na ISPju lahko poleg teh signalov se dodatne pine za framing itd (kateri bit zacenja novi byte itd).
Dosti tega lahko resis tudi drugace, pa tudi dostikrat so dolocene stvari penaljene na periferijo istega proizvajalca.
Skupni imenovalec prakticno vseh ISPjev so tisti trije pini. "Slave select" itd se da, kot vidim pac izvesti tudi z dodatkom enega univerzalnega pina, ce je potreben.
Kar se uporabe dekoderja tice (73HC139) pa mislim, da je uporabna resitev samo, ce je samo en od cipov lahko master, ostali so pa Slavei.
Ce pa hoce tip povezat 4 enakopravne CPUje, ki lahko kadarkoli inicirajo komunikacijo, potem se mi zdi moja resitev enostavnejsa. Dalo bi se sicer sklumpat nekaj v CPLDju in tako povezat vse CPUje na CPLD, ki bi delal prakticno tako kot mrezni switch, samo to se ne zdi izplacljivo pri samo 4 CPUjih...
Dosti tega lahko resis tudi drugace, pa tudi dostikrat so dolocene stvari penaljene na periferijo istega proizvajalca.
Skupni imenovalec prakticno vseh ISPjev so tisti trije pini. "Slave select" itd se da, kot vidim pac izvesti tudi z dodatkom enega univerzalnega pina, ce je potreben.
Kar se uporabe dekoderja tice (73HC139) pa mislim, da je uporabna resitev samo, ce je samo en od cipov lahko master, ostali so pa Slavei.
Ce pa hoce tip povezat 4 enakopravne CPUje, ki lahko kadarkoli inicirajo komunikacijo, potem se mi zdi moja resitev enostavnejsa. Dalo bi se sicer sklumpat nekaj v CPLDju in tako povezat vse CPUje na CPLD, ki bi delal prakticno tako kot mrezni switch, samo to se ne zdi izplacljivo pri samo 4 CPUjih...
Zgodovina sprememb…
- spremenil: Brane2 ()
Microsoft ::
No, stvar je takela. Trenutno mal študiram, kako bi naredil neko 2 kanalno mešalno mizo. Mal pač razmišljam, kako bi stvar delala pa to.
Idejaj je takela: En provcesor bi skrbel za to, da bi posredoval ukaze (potenciometri in tipke) in prikazoval informacije (LCD zaslon). Drug procesor bi skrbel za A/D pretvorbo, ki bi jo dobil od dveh stereo ADC. Tretji procesor bi skrbel, da bi se zvočni signal, zapisan v digitalni obliki, pretvoril v analogno. Za to bi uporabil dva mono DAC, ki bi jih krmilil ta procesor. Četrti procesor bi pa bil nek main procesor. Ta procesor bi dobil podatke o tem, kak je zvočni signal in kakšni so ukazi. Nato bi ta zvočni signal obdelal in ga poslal na tretji procesor. Drugemu procesorju pa bi poslal informacijo o ojačanju v dB.
Procesorju bi bli od Atmel.
Trenutno jst zdej rišem tiskano vezje za drug procesor, ostali pa šele sledijo. Sam rad bi pa vedel, kaki so kej pogoji za to SPI komunikacijo, da bo ta tiskanina temu tudi prilagojena.
No, moja ideja je takela. Ko bi en procesor hotel nekaj "povedati", bi ga vsi naenkrat poslušali. Privi podatek, ki bi ga poslal, bi bila npr. ena številka. In ta številka bi se ujemala s številko procesorja, s katerim misli komunicirati. Vsi ostali procesorji bi se pa "izločili" in nebi "poslušali" kaj "govori" tisti procesor.
Edino, kar mi ni tu všeč je to, da bi pri vsaki komunikaciji vsi procesorji skočili v nek potprogram (pač, da bi brali, kaj se dogaja na SPI komunikaciji) in bi s tem zgubiljali nepotrebni čas. Sploh me skrbi za main procesor, ki bo imel vlko za delat.
No, kak se vam zdi tale ideja?
by Miha
Idejaj je takela: En provcesor bi skrbel za to, da bi posredoval ukaze (potenciometri in tipke) in prikazoval informacije (LCD zaslon). Drug procesor bi skrbel za A/D pretvorbo, ki bi jo dobil od dveh stereo ADC. Tretji procesor bi skrbel, da bi se zvočni signal, zapisan v digitalni obliki, pretvoril v analogno. Za to bi uporabil dva mono DAC, ki bi jih krmilil ta procesor. Četrti procesor bi pa bil nek main procesor. Ta procesor bi dobil podatke o tem, kak je zvočni signal in kakšni so ukazi. Nato bi ta zvočni signal obdelal in ga poslal na tretji procesor. Drugemu procesorju pa bi poslal informacijo o ojačanju v dB.
Procesorju bi bli od Atmel.
Trenutno jst zdej rišem tiskano vezje za drug procesor, ostali pa šele sledijo. Sam rad bi pa vedel, kaki so kej pogoji za to SPI komunikacijo, da bo ta tiskanina temu tudi prilagojena.
No, moja ideja je takela. Ko bi en procesor hotel nekaj "povedati", bi ga vsi naenkrat poslušali. Privi podatek, ki bi ga poslal, bi bila npr. ena številka. In ta številka bi se ujemala s številko procesorja, s katerim misli komunicirati. Vsi ostali procesorji bi se pa "izločili" in nebi "poslušali" kaj "govori" tisti procesor.
Edino, kar mi ni tu všeč je to, da bi pri vsaki komunikaciji vsi procesorji skočili v nek potprogram (pač, da bi brali, kaj se dogaja na SPI komunikaciji) in bi s tem zgubiljali nepotrebni čas. Sploh me skrbi za main procesor, ki bo imel vlko za delat.
No, kak se vam zdi tale ideja?
by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr
slawc ::
veliko procesorjev, mogoce celo prevec. Napisal si, da bos uporabil Atmele, verjetno mislis na AVRje - AT90S in ATmega (nekako mi mozgani signalizirajo, da si enkrat ze spraseval o teh procesorjih, al pa tud ne). No ce jih bos, ti povem, da so zelo hitri.
Se nekaj vprasanj:
Cemu bos delal A/D pretvorbo? Namen je...
Zakaj bi vsi vse poslusal, ce jim pa nekaj ni namenjeno?
Zakaj si napisal potprogram? Stari ej, tale beseda pa seka!
Se nekaj vprasanj:
Cemu bos delal A/D pretvorbo? Namen je...
Zakaj bi vsi vse poslusal, ce jim pa nekaj ni namenjeno?
Zakaj si napisal potprogram? Stari ej, tale beseda pa seka!
LP,
Slawc
Microsoft ::
--> Cemu bos delal A/D pretvorbo? Namen je...
Ja to zato, ker je muska v analogni obliki, želim pa jo spravt v digitalno obliko, da jo bom pol lahka poljubno odeloval. No, to jo bo procesor.
--> Zakaj bi vsi vse poslusal, ce jim pa nekaj ni namenjeno?
No, sej ne bi skosk poslušal, sam na začetku bi, ko bi se edn hotel pogovarjat z enim drugim. Pol tistih podatkov pa ne bi dobivali vsi proci, ampak samo eden.
-->Zakaj si napisal potprogram? Stari ej, tale beseda pa seka!
Ka še nisi slišal za to besedo? Ja tja gre procesor vsakič, ko se zgodi kakšna prekinitev; recimo zaradi komunikacije, časovnika, števca,... Pa s potprogrami se stvari poenostavljajo.
by Miha
Ja to zato, ker je muska v analogni obliki, želim pa jo spravt v digitalno obliko, da jo bom pol lahka poljubno odeloval. No, to jo bo procesor.
--> Zakaj bi vsi vse poslusal, ce jim pa nekaj ni namenjeno?
No, sej ne bi skosk poslušal, sam na začetku bi, ko bi se edn hotel pogovarjat z enim drugim. Pol tistih podatkov pa ne bi dobivali vsi proci, ampak samo eden.
-->Zakaj si napisal potprogram? Stari ej, tale beseda pa seka!
Ka še nisi slišal za to besedo? Ja tja gre procesor vsakič, ko se zgodi kakšna prekinitev; recimo zaradi komunikacije, časovnika, števca,... Pa s potprogrami se stvari poenostavljajo.
by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr
slawc ::
za poljubno obdelavo digitalnih signalov bi rabil DSP. Katerega pa imas namen uporabiti?
poTprogram no ... poDprogram
poTprogram no ... poDprogram
LP,
Slawc
Microsoft ::
Pismo, sploh nisem poštudiral, da bi pa lahka blo potprogram narobe. Eh, ka češ, slovenščina mi ne gre glih kej fajn.
Tist ker procesor bo za obdelavo signalov pride pol, hm, čez kaki 2 leti. Drgač pa bom menda uporabil FPGA, če se bo dalo, ker se na FE uči te vrste procov in ne DSP, ki se jih uči na FERI.
No, sam s tem se dele ne obremenjujem kej preveč.
Zdele je navrsti teorija, kak povezat te procesorje med sabo, da bodo kolker se dal fajn pa hiter komunicirali med sabo. Se prav, da bom že sedaj pripravil tiskanino, da pol ne bo treba spreminjati stvari.
by Miha
Tist ker procesor bo za obdelavo signalov pride pol, hm, čez kaki 2 leti. Drgač pa bom menda uporabil FPGA, če se bo dalo, ker se na FE uči te vrste procov in ne DSP, ki se jih uči na FERI.
No, sam s tem se dele ne obremenjujem kej preveč.
Zdele je navrsti teorija, kak povezat te procesorje med sabo, da bodo kolker se dal fajn pa hiter komunicirali med sabo. Se prav, da bom že sedaj pripravil tiskanino, da pol ne bo treba spreminjati stvari.
by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr
EjTi ::
Đimi, Đimi ... a si ti prepričan da si nisi prezahtevnega projekta lotu. Kuko pa tista stvar z led prikazovalnikom napreduje ...
A ti mislš ADC sprogramirat al kaj?
A ti mislš ADC sprogramirat al kaj?
slawc ::
res zahteven projekt madona, ampak bo nas vrli đimi da batn ze kj ustimu
hja, FPGA pa res ni tip procesorja
hja, FPGA pa res ni tip procesorja
LP,
Slawc
int47 ::
V PDF-ju od npr mega103 (če sem prav prebral) piše, da lahko SPI deluje z največ 1/4 sistemskega takta. Za pretok 1,408 Mbit/s (44K *16bit * 2kanala) bi torej potreboval sistemski takt > 5,632Mhz
Če bi rad imel 44Khz 16bit stereo vzorčenje, to pomeni 44000KHz*2byta*2kanala = 176000 vzorcev/s.
Recimo, da se prekinitev SPI vmesnika izvede v 20 ciklih. V tem primeru bi procesor za komunikacijo porabil 3,52M ciklov /s.
Glavni procesor, ki naj bi signal obdeloval, bi moral preko (istega ?) SPI vmesnika prebaviti dvakratno količino podatkov, za kar bi porabil 2x več ciklov.
Nisem čisto prepričan, da bi ostalo dovolj časa za realizacijo kakšnega FIR filtra, ali česa podobnega.
Če bi rad imel 44Khz 16bit stereo vzorčenje, to pomeni 44000KHz*2byta*2kanala = 176000 vzorcev/s.
Recimo, da se prekinitev SPI vmesnika izvede v 20 ciklih. V tem primeru bi procesor za komunikacijo porabil 3,52M ciklov /s.
Glavni procesor, ki naj bi signal obdeloval, bi moral preko (istega ?) SPI vmesnika prebaviti dvakratno količino podatkov, za kar bi porabil 2x več ciklov.
Nisem čisto prepričan, da bi ostalo dovolj časa za realizacijo kakšnega FIR filtra, ali česa podobnega.
slawc ::
hja, mikrokrmilniki niso primerni za digitalno procesiranje signalov.
(novejse mege, recimo 162, katere datasheet ravno obdelujem ima SPI fclk/2, fclk = 16MHz, ce overclockas pa se vec )
(novejse mege, recimo 162, katere datasheet ravno obdelujem ima SPI fclk/2, fclk = 16MHz, ce overclockas pa se vec )
LP,
Slawc
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Atmel 90S8535 --> kako ugotoviti, ali je skurjen ali ne?Oddelek: Elektrotehnika in elektronika | 1482 (1208) | Microsoft |
» | FPGA vs. DSPOddelek: Elektrotehnika in elektronika | 1526 (1476) | Microsoft |
» | ATMEL at8535Oddelek: Elektrotehnika in elektronika | 1381 (1160) | Brane2 |
» | UARTOddelek: Strojna oprema | 1369 (1277) | Microsoft |
» | Par problemčkov (sinhronizacija, if stavek)Oddelek: Elektrotehnika in elektronika | 2130 (1994) | Zzzzzzz |