Transmisja SPI między kontrolerami ATmega: pytania o połączenia, timing i tryby
ATmega i SPI - pare =?ISO-8859-2?Q?niejasno=B6ci?=
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: ATmega i SPI - pare =?ISO-8859-2?Q?niejasno=B6ci?=
Date: Thu, 14 Jul 2005 13:22:57 +0200
Witam!
Chciałbym sobie zrobić transmisję między dwoma kontrolerami po SPI. SPI
dlatego, że jest i załatwia mi wiele problemów.
1) zgodnie z pdfem połączenie między master a slave odbywa się
MOSI->MOSI oraz MISO->MISO. Troche to mnie dziwi, czy nie powinny być
krosowane ? Chyba że ma to umożliwiać zmianę ze slave na mastera.
2) Master generuje sygnał zegarowy i slave wypycha bit po bicie cały
bajt. Jak juz wypchnie, to zgłasza przerwanie, żeby nakarmić SPI
następnym. Hmmm... czy mam rozumieć, że jeśli master taktuje bardzo
szybko spi to slave w tym przerwaniu nie ma za bardzo czasu na
podejmowanie decyzji ? Oczywiście zakładam, że przerwanie będzie
pobierać dane z jakiegoś bufora w ram co powinno być szybkie, ale dalej
zastanawia mnie, czy operacja wpisania następnej wartości do rejestru
jest krytyczna czasowo (w końcu mówimy tutal o prędkościach max f/4
czyli 4 cykle zegarowe ?).
3) Data order - czy jest jakiś najczęsciej stosowany ?
4) Clock polarity - to samo, nie wiam jaki jest "popularny" ale
zakładam, że ten który ma bit o wartości 0 (Leading Edge: Rising)
5) clock phase - to samo
Pytania 4,5 zapewne dotyczą trybu SPI (0,1,2,3) i chciałbym znać
najczęsciej używany.
6) W jaki sposób master steruje /SS ? Czy on automagicznie jest aktywny
gdy coś wpisuje do rejestru danych czy mam go ręcznie sterować (ale
jeśli ręcznie to nie widze żadnego bitu w żadnym rejestrze) ?
Pytania 2 i 6 mogą nie mieć sensu jeśli da się przesyłać wyłącznie bajty
a nie grupy bajtów (jednak pdf wyraźnie wspomina o "end of packet" co
rozumiem jako grupę bajtów).
A może na sieci jest jakiś prosty turtorial z spi na atmega i nie tylko ?
--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl
From: "Sebastor" <brakadresu_at_nospam_onet.pl>
Subject: Re: ATmega i SPI - pare niejasności
Date: Thu, 14 Jul 2005 15:37:02 +0200
2) Master generuje sygnał zegarowy i slave wypycha bit po bicie cały
bajt. Jak juz wypchnie, to zgłasza przerwanie, żeby nakarmić SPI
następnym. Hmmm... czy mam rozumieć, że jeśli master taktuje bardzo szybko
spi to slave w tym przerwaniu nie ma za bardzo czasu na podejmowanie
decyzji ? Oczywiście zakładam, że przerwanie będzie pobierać dane z
jakiegoś bufora w ram co powinno być szybkie, ale dalej zastanawia mnie,
czy operacja wpisania następnej wartości do rejestru jest krytyczna
czasowo (w końcu mówimy tutal o prędkościach max f/4 czyli 4 cykle
zegarowe ?).
No tu jest problem bo tego czasu faktycznie jest bardzo malo. Przy
maksymalnej predkosci zdazysz jedynie zapisac/odczytac bufor do ramu i to
wszystko.
Sebastor
From: Andrzej Augustynowicz <august_at_nospam_csk.pl>
Subject: Re: ATmega i SPI - pare =?ISO-8859-2?Q?niejasno=B6ci?=
Date: Thu, 14 Jul 2005 22:19:21 +0200
1) zgodnie z pdfem połączenie między master a slave odbywa się
MOSI->MOSI oraz MISO->MISO. Troche to mnie dziwi, czy nie powinny być
krosowane ? Chyba że ma to umożliwiać zmianę ze slave na mastera.
...nie powinno Cie dziwic :)
MOSI czyli MasterOutputSlaveInput.
Innymi slowy to tryb pracy wynusza: jesli master to output, jesli slave
to input.
Pozdrawiam
AA
From: Andrzej Augustynowicz <august_at_nospam_csk.pl>
Subject: Re: ATmega i SPI - pare =?ISO-8859-2?Q?niejasno=B6ci?=
Date: Thu, 14 Jul 2005 22:22:18 +0200
http://www.ulrichradig.de/
W dziale avr jest obsluga kart mmc po spi - przeanalizuj to a wiele Ci
wyjasni.
Pozdrawiam
AA