Serial Peripheral Interface (SPI) to pełnodupleksowy synchroniczny interfejs szeregowy, który jest popularny w systemach wbudowanych. W przeciwieństwie do UART, SPI został zaprojektowany, aby umożliwić komunikację między dwoma lub większą liczbą urządzeń. SPI to protokół krótkiego zasięgu, który jest używany do komunikacji między układami scalonymi w systemie wbudowanym. Protokół wykorzystuje architekturę master/slave i obsługuje wiele urządzeń slave.4 W najprostszej formie SPI wymaga czterech pinów do komunikacji, co stawia go na równi z przykładem UART, ale z szybszą komunikacją (kosztem odległości). Ważne jest, aby pamiętać, że SPI nie jest standaryzowany,5 a arkusze danych będą musiały zostać sprawdzone, aby określić dokładne zachowanie każdego urządzenia. Cztery piny są następujące:
- SCK Serial Clock
- MOSI Master Out Slave In
- MISO Master In Slave Out
- SS lub CS Slave/Chip Select (wyjście z urządzenia master do adresu slave; aktywny niski)
W przypadku systemów z kilkoma urządzeniami slave, urządzenie master zazwyczaj adresuje każde urządzenie slave za pomocą dedykowanego wyboru układu. Ze względu na dodatkowe wybieranie układów wymaga to więcej pinów/ścieżek i zwiększa koszt systemu. Na przykład system z trzema urządzeniami podrzędnymi w tej konfiguracji wymaga sześciu pinów na mikrokontrolerze
Inną powszechną konfiguracją dla urządzeń z wieloma urządzeniami podrzędnymi jest układ szeregowy. Konfiguracja układu szeregowego, pokazana na rysunku, jest zwykle używana, gdy urządzenie nadrzędne nie musi odbierać danych do zastosowań takich jak diody LED lub gdy istnieje wiele urządzeń podrzędnych. Ponieważ wyjście układu scalonego 1 jest podłączone do wejścia układu scalonego 2 itd., występuje opóźnienie proporcjonalne do liczby układów scalonych między urządzeniem nadrzędnym a docelowym odbiorcą.
Typowym zastosowaniem protokołu SPI jest dostęp do pamięci EEPROM (elektrycznie kasowalnej programowalnej pamięci tylko do odczytu) i urządzeń flash. Używając Bus Pirate i flashrom (lub czegoś podobnego), powinieneś być w stanie wyodrębnić zawartość pamięci EEPROM lub urządzenia flash. Zawartość można następnie przeanalizować, aby zlokalizować system plików i polować na sekrety.