Serial Peripheral Interface
SPI (ang. Serial Peripheral Interface) – szeregowy interfejs urządzeń peryferyjnych. Jeden z najczęściej używanych interfejsów komunikacyjnych pomiędzy systemami mikroprocesorowymi a układami peryferyjnymi takimi jak: przetworniki ADC/DAC, układy RTC, pamięci EEPROM, pamięci flash, karty MMC/SD itp.
Transmisja danych
[edytuj | edytuj kod]Komunikacja poprzez SPI odbywa się synchronicznie za pomocą 3 linii:
- MOSI (ang. master output slave input) – dane dla układu peryferyjnego,
- MISO (ang. master input slave output) – dane z układu peryferyjnego,
- SCLK (ang. serial clock) – sygnał zegarowy (taktujący).
Do aktywacji wybranego układu peryferyjnego służy dodatkowo linia SS (ang. Slave Select – wybór układu podrzędnego) lub adresacja układów. W drugim przypadku, w przesyłanej wiadomości zawarty musi być adres urządzenia, które po jego rozpoznaniu przyjmuje pozostałe bajty. Adresowanie układów wykorzystywane jest szczególnie podczas pracy z rozbudowanymi systemami, których poszczególne części można programować niezależnie, także po zamontowaniu na płytce.
Interfejs SPI zbudowany jest na rejestrach przesuwnych, które składają się z przerzutników typu D. Synchronizacja każdego z nich odbywa się za pomocą sygnału zegarowego. Przerzutników jest 8, numerowanych liczbami od 0 do 7. Na wejście przerzutnika nr 0 wprowadzany jest stan logiczny, który uruchamia ramkę danych (ang. data frame)[1].
Każdy przerzutnik przechowuje jeden bit danych. Interfejs SPI MASTER generuje sygnał zerowy za pomocą generatora. Połączone linie MOSI i MISO tworzą zamknięty pierścień, dzięki czemu transfer danych jest ciągły, ale nie stały. Co osiem cykli zegarowych generatora wysyłany jest 1 bajt danych. Wartość rejestru można zmieniać co 8 cykli zegara[1].
Przesyłanie ramki danych przez interfejs SPI nie jest domyślnie nastawione. Może zostać nastawione poprzez wybór, czy wysyłanie ramek rozpocznie się od najstarszego, czy od najmłodszego bitu. Przesuwanie danych w rejestrach można również ustawić dla zbocza opadającego lub narastającego sygnału SCK[1].
Typy interfejsów SPI
[edytuj | edytuj kod]QSPI
[edytuj | edytuj kod]Interfejs QSPI (Quad SPI) jest rozwinięciem interfejsu SPI. Przeznaczony jest do współpracy z szybkimi pamięciami z interfejsem szeregowym. QSPI może pracować w trzech trybach, różniących się użyciem linii danych[2].
Dual SPI
[edytuj | edytuj kod]Interfejs Dual SPI ma podwójny interfejs wejścia/wyjścia. Linie danych MISO i MOSI działają w trybie half-duplex, wysyłając dwa bity na cykl zegara[3].
MicroWire
[edytuj | edytuj kod]Microwire jest poprzednikiem SPI opracowanym przez National Semiconductor. Jest to prosty interfejs umożliwiający szeregową komunikację trójprzewodową[4].
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ a b c y, SPI communication – How SPI works? [online], 911 Electronic, 11 maja 2020 [dostęp 2020-09-14] (ang.).
- ↑ STM32 - interfejs QuadSPI [online], ep.com.pl [dostęp 2022-10-10] (pol.).
- ↑ Single vs. Dual vs. Quad SPI | Differences & Similarities [online], evision-webshop.de [dostęp 2022-10-10] (ang.).
- ↑ Texas Instruments , AN-452 MICROWIRE Serial Interface [online], 2011 .