poniedziałek, 15 sierpnia 2016

Opis interfejsu SPI

Tym razem chciałbym zaprezentować opis magistrali SPI.

SPI


SPI (ang. Serial Peripheral Interfejs) jest to magistrala szeregowa stosowana w systemach opartych głównie o mikrokontrolery. Pozwala on na stosowanie synchronicznej, dwukierunkowej transmisji danych (full-duplex). Prędkość transmisji dostosowywana jest do najwolniejszego ze stosowanych układów.

Magistrala jest zbudowana z trzech linii:

  • SCK - czyli linia sygnału taktującego
  • MISO - wyjście danych z układu podrzędnego
  • MOSI - wejście danych dla układu podrzędnego
  • CS, SS - pozwala na wybranie układu który będzie przeprowadzał transmisję
Linie danych podczas spoczynku przyjmują stan wysokiej impedancji. Transmisja jest rozpoczynana przez jedno urządzenie nadrzędne. Układ jest wybierany poprzez pin CS.

Rys. 1. Podłączenie układu do magistrali [wikipedia]

Co do linii SCK od układu nadrzędnego będzie to wyjście, natomiast dla układu podrzędnego będzie to wejście. Linia CS jest wejście dla układu podrzędnego, sterowana jest z portu GPIO pracującego jako wyjście, podawane są na niego dwa stany wysoki w celu zablokowania transmisji, niski w celu nawiązania komunikacji.

Transmisja poprzez standardowy interfejs SPI odbywa się po 8 bitach czyli po jednym bajcie. Jako pierwszy transmitowany jest najbardziej znaczący bit.

Sposób przesyłania danych oraz sposoby łączenia


Transmisja danych w tym interfejsie może odbywać się dwukierunkowo w trybie full duplex. Dzięki temu prędkość transmisji będzie znacząco zwiększona.

Taktowanie danych będzie się odbywać na narastającym zboczu sygnału. Transmisja rozpoczynana jest od wystawienia najbardziej znaczącego bitu na szynę danych. Jest on wstawiany razem z pojawieniem się zbocza opadającego na linii wybierającej układ. Po całej transmisji stan na linii wybierającej zostaje zamieniony na wysoki.

Rys. 2. Przebiegi na liniach

Co do łączenia wielu układów spotyka się dwa rozwiązania:

W pierwszej sieci SPI mogą pracować układy różnego typu.

Rys. 3. Połączenie standardowe [google.pl]

Drugi sposób pozwala na łączenie układów tego samego typu. Linie CS i SCK połączone są w standardowy sposób.

Rys. 4. Połączenie tych samych układów SPI [google.pl]

Jeśli chodzi o transfer danych pomiędzy układem master a slave to należy pamiętać o przesyłaniu bitów tzw. dummy, których wartość wynosi od 0 do FF, przy transmisji po dwóch liniach. Spowodowane jest to tym, że dla tego protokołu każdy odczyt wiąże się z zapisem danych. Czyli jeśli chce się odczytać dane to należy przesłać do układu śmieci, czyli wspomniane wcześniej dummy bytes aby włączyć sygnał zegarowy i przesłać dane.