magistrala SPI(Serial Peripheral Interface)jest szybkim, 3-przewodowym, szeregowym protokołem komunikacyjnym (4 Jeśli zawiera SSn – patrz poniżej). Jego podstawowym celem jest zmniejszenie trasowania drutu na PŁYTCE DRUKOWANEJ poprzez zastąpienie tradycyjnej magistrali równoległej interfejsem szeregowym. (Możesz po prostu zarządzać 8-bitową magistralą trasującą ją przez kilkuwarstwową płytkę PCB, ale gdy dojdziesz do 16, 32 bitów i więcej, staje się to znacznie trudniejsze).,
połączenia to:
- MOSI (Master Out Slave In) .
- MISO (Master in Slave Out).
- SCK (Slave Clock).
- SS_n (Slave Select).
– oznacza nomenklaturę PIC
Uwaga: ostatni sygnał SS lub slave select jest oddzielony od protokołu i jest zwykle zaimplementowany jako włączający pin sterujący z mikrokontrolera. Jest to zawarte tutaj dla kompletności.
interfejs SPI PIC umożliwia podłączenie urządzeń peryferyjnych za pomocą szybkiego interfejsu szeregowego. SPI FlashMemory i SPI SRAM można łatwo dodać do dowolnego systemu., Inne typy urządzeń to:
- ADC.
- DAC.
- Flash.
- EEPROM.
- Akcellerometry.
- LCD.
- Temperatura& czujniki wilgotności.
- …i wiele innych.
jedyną prawdziwą konkurencją jest magistrala I2C, dlatego często można zobaczyć te interfejsy zarówno dostępne na procesorach, jak i mikrokontrolerach.
interfejs SPI został zaprojektowany w latach 70. przez Motorolę, która używała go w swoim procesorze 68000, i został szybko przyjęty przez wielu innych producentów jako standard defacto.,
jest przeznaczony do przesyłania danych z urządzenia głównego do jednego lub kilku urządzeń na krótkich dystansach i przy dużych prędkościach (MHz).
Jak to działa
działa poprzez przesyłanie danych jeden bit na raz między dwoma urządzeniami z urządzeniem głównym wysyłającym sygnał zegara (SCK). Zegar kontroluje czas transferu danych.
dane (MOSI )są wysyłane z rejestru zmian w urządzeniu Master SPI wraz z sygnałem zegara (SCK), podczas gdy inny Rejestr zmian odbiera dane z slave (MISO,).,
Master jest zawsze pod kontrolą i inicjuje transmisję danych za pomocą sygnału zegara. Urządzenia Slave są wybierane za pomocą oddzielnego sygnału Slave select, który jest sterowany programowo, tzn. sygnały te są oddzielone od modułu sprzętowego SPI.
Uwaga: liczba bitów nie jest określona przez protokół, więc nie ograniczasz się do używania tylko 8-może to być dowolna liczba bitów. Jest to przydatne podczas łączenia szeregowego niewolników SPI, ponieważ trzeba ustawić liczbę bitów na sumę wszystkich bitów wymaganych przez każde urządzenie.,
Uwaga: SPI definiuje pojedynczy system główny.
alternatywny protokół, IIC, umożliwia obsługę wielu magistral magistrali.
definicja zegara interfejsu SPI
zegar SPI nie jest w ogóle zdefiniowany – co oznacza, że różne urządzenia slave mogą przyjmować różne operacje zegara; jeden slave może wymagać bezczynnego zegara, który jest wysoki, podczas gdy inny może wymagać bezczynnego stanu niskiego. Inni reagują na rosnącą krawędź, podczas gdy inni reagują na spadającą krawędź!,
protokół interfejsu SPI radzi sobie z tym, pozwalając zaprogramować te szczegóły do modułu sprzętowego SPI.
poniższy obrazek pokazuje interfejs PIC dla SPI (wszystkie moduły sprzętowe SPI w innych mikrokontrolerach pozwolą na tę samą operację tylko przy użyciu różnych rejestrów).,
interfejs SPI sygnały PIC (wyciąg z arkusza danych pic DS39582B)
to do ciebie należy ustawienie właściwego zegara dla urządzenia, gdy jest on aktywowany przez sygnał select slave (lub w przypadku pojedynczego slave jest zawsze wybrany, więc nie będzie sygnału select slave).
połączenie Arduino SPI
poniższy schemat pokazuje interfejs do połączeń SPI, który również jest złączem programistycznym (ICSP), na płycie Arduino, który umożliwia bezpośrednie programowanie ATmega328p.,p>
5 – Reset
6 – GND
Location of the SPI connector on Arduino Uno R3
Photo Credit : kenming_wang (mod shows ICSP)
Different SPI Interface operational Modes
There are three ways of using the SPI interface
- Single Master – Single Slave.,
- Single Master-wiele niewolników-wybrany Chip.
- Single Master-Multiple Slaves-dasiy chained.
Single Master – Single Slave.
oto konfiguracja dla pojedynczego połączenia urządzenia SPI:
Uwaga: chip select signal SS jest opcjonalny dla pojedynczego systemu urządzenias Zwykle przywiązuje się SSinput na niskim poziomie slave (jeśli inne linie są dedykowane do użytku SPI).,
SIP Interface: Using chip selects
za pomocą tego schematu sterujesz każdym urządzeniem slave używając jego linii wyboru układu (Zwykle aktywne niskie czerwone strzałki pokazują kontrolki). Po wyłączeniu wyjście danych zlave przechodzi w stan wysokiej impedancji, dzięki czemu nie koliduje z aktualnie wybranym slave, a wejście danych slave jest ignorowane (checkdatasheet).,
zaletą tego schematu jest to, że można rozważyć (kontrolować) każde urządzenie osobno, porównując je z metodą daisy chain – umożliwiając podłączenie urządzeń SPI, które wymagają różnych schematów zegara.
Jeśli masz Slave SPI, które działają przy użyciu różnych zegarów (krawędzie/Stany bezczynności), możesz przeprogramować moduł sprzętowy master SPI przed włączeniem określonego CS, aby każdy slave miał odpowiednie sygnały wysyłane do niego.
Jeśli używasz metody Daisy chain, musisz upewnić się, że wszystkie żetony używają tej samej krawędzi zegara i bezczynnego stanu zegara.,
SPIInterface :Łańcuchowanie szeregowe
w tym schemacie wszystkie dane wysłane przez master są przenoszone do wszystkich urządzeń, a wszystkie dane wysłane z każdego urządzenia są przenoszone na następne (pokazane czerwoną kropkowaną strzałką). Aby ten schemat zadziałał, musisz upewnić się, że każdy slave używa zegara w ten sam sposób i musisz uzyskać odpowiednią liczbę bitów, więc jest więcej pracy w oprogramowaniu.
Uwaga: zaletą metody Daisy-Chain jest to, że zapisujesz sygnał wyboru Chipa dla każdego urządzenia slave SPI.
Więcej informacji na Wikipedii.,
interfejs SPI Daisy Chain
przykład SPI Daisy Chain
użyj kilku układów HC595, połączonych łańcuchowo, co daje łatwy wzrost liczby dostępnych wyjść bez użycia wielu pinów mikrokontrolera.
granice działania to prędkość HC, prędkość wyjścia SPI. Również rozważenie projektowania np. w przypadku prowadzenia zestawu diod LED, które muszą być aktualizowane co 20ms.
Parallel Versus Serial SPI
kompromis między używaniem interfejsu równoległego i interfejsu SPI jest szybkość np., if youread a parallel 12bit ADC at 200ksps then you could read the device ata 200kHz rate but if you want to get the same data rate using SPI thenyou need a serial speed of 200kHz x 12 = 2.4 MHz. Tak więc rzeczywistą wymianą jest prędkość i wynikający z niej szum wprowadzany do obwodu.
podsumowanie
interfejs SPI definiuje bardzo popularny protokół, który działa z dużą prędkością. Głównym problemem jest to, że urządzenia typu slave nie są związane żadnym konkretnym schematem taktowania, więc mogą działać inaczej, a to może utrudnić ich kontrolowanie, tj., zegar bezczynny i krawędź muszą być ustawione poprawnie dla każdego urządzenia.
zalety:
- wysoka prędkość.
- wyjątkowo prosty interfejs, który można łatwo replikować w oprogramowaniu.
wady:
- układy Slave mogą swobodnie przyjmować dowolny schemat taktowania, którego wymagają.