Liczba magistral szeregowych jest imponująca RS232, i 2 C, SPI, 1-wire, USB, CAN, FireWire, ethernet... Równie imponująca jest różnorodność protokołow komunikacyjnych. Wiele mikrokontrolerów ma po kilka interfejsów komunikacyjnych. Łatwo dostępne są też kości obsługujące protokół jednego typu magistrali 'tłumaczące go na inny protokól. Np CAN-RS232. Każdy protokół (ale zwykle z ograniczeniami dotyczącymi szybkości transmisji) można zaprogramować. Zwykle ma to jednak jedynie wartość dydaktyczną. Zajmowanie jednostki centralnej do udawania układu peryferyjnego jest w większości wypadków pomyłką. Sprzętowy interfejs komunikacyjny poza realizacją protokołu ma z reguły szereg funkcji kontrolnych, których zaprogramowanie nie jest możliwe. JEDNĄ Z PODSTAWOWYCH REGUŁ MAŁO PODKREŚLANYCH W OPISACH WAŻNĄ DLA WIĘKSZOŚCI PROTOKOŁÓW JEST ZDOLNOŚĆ ( OBOWIĄZEK ) KAŻDEGO INTERFEJSU DO PERMANENTNEJ KONTROLI STANU LINII. 1/20
SPI Serial Peripheral Interface Wprowadzona przez MOTOROLĘ synchroniczna magistrala dla komunikacji typu master-slave. Nazywana czasem 4-wire: SCLK Serial Clock MOSI Master Output MISO Master Input SS Slave Select 2/20
Konwencja nazw nie jest ściśle przestrzegana Spotyka się SCK, CLK, SDI, DI, SI, SDO, DO, SO, ncs, CS, CSB CSN... BUS SPI MOŻE OPEROWAĆ Z POJEDYNCZYM MASTER I WIELOMA SLAVE MASTER ZAWSZE INICJUJE TRANSMISJĘ PRZEZ PRZYGOTOWANIE ZEGARA. JEGO CZĘSTOTLIWOŚĆ MUSI BYĆ MNIEJSZA LUB RÓWNA MAKSYMALNEJ CZĘSTOTLIWOŚCI AKCEPTOWANEJ PRZEZ ODBIORNIKI. ZWYKLE 1 70 MHz. NASTĘPNIE MASTER WYBIERA SLAVE'a PRZEZ LINIĘ SS ( ACTIVE LOW ) ZWYKLE POWINIEN ODCZEKAĆ NIM ZACZNIE NADAWAĆ CLOCK. W CZASIE KAŻDEGO CYKLU ZEGARA ODBYWA SIĘ TRANSMISJA FULL DUPLEX MASTER PRZESYŁA BITY LINIĄ MOSI, A SLAVE ODCZYTUJE JE Z TEJ SAMEJ LINII. RÓWNOCZEŚNIE SLAVE WYSYŁA BITY LINIĄ MISO, A MASTER CZYTA JE Z TEJ LINII. TAKA TRANMISJA WYMAGA ZWYKLE DWÓCH REJESTRÓW PRZESUWNYCH, JEDEN U MASTER'A JEDEN U SLAVE'A. TRANSMISJA ZWYKLE ZACZYNA SIĘ OD PRZESYŁANIA MSB. TRANSMISJA MOŻE TRWAĆ DOWOLNĄ LICZBĘ CYKLI. ZWYKLE KOŃCZY SIĘ, GDY MASTER WSTRZYMUJE ZEGAR (I ZDEJMUJE WYBÓR SLAVE'A 3/20
GDY WIĘCEJ NIŻ JEDEN SLAVE WYSTĘPUJE W SIECI TO MOŻNA ROZRÓŻNIĆ DWA TYPY POŁĄCZEŃ: - SIEĆ NIEZALEŻNYCH ODBIORNIKÓW - SIEĆ ODBIORNIKÓW POŁĄCZONYCH SZEREGOWO ( DAISY CHAIN ) 4/20
POZA WYBRANIEM CZĘSTOTLIWOŚCI ZEGARA MASTER KONFIGURUJE TAKŻE FAZĘ I POLARNOŚĆ ZEGARA MÓWIMY O CZTERECH TRYBACH TRANSMISJI SPI ZALEŻNIE OD KOMBINACJI CPOL I CPHA PRO I CONTRA... TRYB CPOL CPHA 0 0 0 1 0 1 2 1 0 3 1 1 5/20
I 2 C - BUS MAGISTRALA WPROWADZONA PRZEZ PHILIPS'a WYMAGA DWÓCH LINII AKTYWNYCH I MASY LINIE AKTYWNE TO SDA LINIA DANYCH SCL LINIA ZEGARA 6/20
KAŻDE URZĄDZENIE DOŁĄCZONE DO MAGISTRALI MA SWÓJ UNIKALNY ADRES. KAŻDE MOŻE BYĆ ODBIORNIKIEM LUB NADAJNIKIEM JEST TO MAGISTRALA MULTIMASTER CO ZNACZY, ŻE URZĄDZENIE STARTUJĄCE TRANSMISJĘ STAJE SIĘ MASTER'em. ALE, ZATYM, POJAWIA SIĘ PROBLEM ARBITRACJI CZASOWE RELACJE SCL I SDA DEFINIJJĄ ISTOTNE ELEMENTY PROTOKOŁU. SEKWENCJA START SEKWENCJA STOP DANE OK, GDY SCL HIGH DANE ZMIENIAMY, GDY SCL LOW 7/20
TRANSMISJA DANYCH POTWIERDZENIE --- ACKNOWLEDGE 8/20
9/20
10/20
KLASYCZNE I2C STOSUJE 7-MIO BITOWE ADRESOWANIE W WERSJI ROZSZERZONEJ ADRES JEST 10-BITOWY. ALE NAWET WTEDY PO PIERWSZYCH SIEDMIU BITACH ADRESU NADAWANY JEST 8-MY BIT KIERUNKU NASTĘPNEJ TRANSMISJI N.B. LSB KIERUNKU = 0 OZNACZA, ŻE MASTER BĘDZIE PISAĆ (NADAWAĆ) KOLEJNY BAJT = 1 OZNACZA, ŻE MASTER BĘDZIE CZYTAĆ NASTĘPNY BAJT SYNCHRONIZACJA ZEGARA I ARBITRACJA DOSTĘPU DO MAGISTRALI.. SYNCHRONIZACJA OPIERA SIĘ NA POMYŚLE 'WIRED-AND WSZYSTKICH LINII SCL. SCL LOW JEST WYZNACZONY PRZEZ URZĄDENIE O NAJDŁUŻSZYM OKRESIE LOW A STAN HIGH WYZNACZA URZĄDZENIE O NAKRÓTSZYM OKRESIE HIGH ARBITRACJA DOSTĘPNY DO LINII OPIERA SIĘ NA POMYŚLE DOMINANT LOW LINII SDA (I WSPOMNIANYM OBOWIĄZKU CZYTANIA STANU LINII 11/20
12/20
CAN BUS Control Area Network Magistrala wymyślona dla przemysłu samochodowego przez BOSCH'a 13/20
14/20
BARDZO BOGATA RAMKA 11-BITOWY LUB 29-BITOWY IDENTYFIKATOR IDENTYFIKOWANY JEST TYP KOMUNIKATU, NIE URZĄDZENIE! ROZWINĘTA DETEKCJA BŁĘDÓW TRANSMISJI DETEKCJĘ BŁĘDÓW MUSZĄ PROWADZIĆ STALE WSZYSTKIE URZĄDZENIA KAŻDE WYKRYCIE BŁEDU OZNACZA OBOWIĄZEK WYSŁANIA KOMUNIKATU BŁEDU BŁĘDNY KOMUNIKAT JEST SKASOWANY U WSZYSTKICH (WĘZŁÓW) STAN WSZYSTKICH KONTROLERÓW JEST ODNOWIONY co to oznacza... KOMUNIKAT JEST POWTARZANY, A JEŚLI JEST WIĘCEJ CHĘTNYCH DO NADAWANIA, TO ODBYWA SIĘ ZWYKŁA ARBITRACJA DOSTĘPU TYPY WYKRYWANYCH BŁEDÓW BŁĘDY BITÓW - BIT STUFFING ERROR - ZWYKŁA NIEZGODNOŚĆ NADAWANIA/ODCZYTU U NADAWCY BŁĘDY KOMUNIKATU - SUMA KONTROLNA - BŁĄD RAMKI - BŁĄD POTWIERDZENIA KAŻDY WĘZEŁ MOŻE BYĆ W JEDNYM Z TRZECH STANÓW: ERROR ACTIVE ERROR PASSIVE BUS OFF 15/20
CAN BUS LENGTH Bus length (metres) Maximum bit rate (bit/s) 40 1 Mbit/s 100 500 kbit/s 200 250 kpit/s 500 125 kbit/s 6 km 10 kbit/s 16/20
1-wire - magistrala szeregowa wprowadzona przez Dallas Semiconductor Corp. podobna do I2C. Protokół dopuszcza wyłącznie jedno nadrzędne urządzenie master. Jest nim zwykle mikro-kontroler lub PC. Do komunikacji potrzebny jest linia sygnałowa i wspólna masa. Rezystor podciąga linię sygnałową do + 5V. Dopuszcza się obciążenie linii sygnałowej odbiornikami. Transmisję rozpoczyna master sprowadzając poziom linii do 0V na 480 µs (pozbawiając zasilania te odbiorniki, które z niego korzystały, co jest też sposobem ich zerowania (reset). W odpowiedzi każdy czynny odbiornik slave zgłasza swoją obecność sygnałem presence, przywierając llinię do 0V na co najmniej 60µs. Aby wysyłać 1 master ustawia niski poziom (0V) na linii na 1 15µs. Aby wysłać 0 master ustawia niski stan linii na 60 µs. 17/20
1-wire - kontynuacja Przy odbieraniu danych master ustawia niski poziom (0V) na linii na 1 15µs. Jeśli slave zamierza wysłać 1, to niczego nie zmienia, jeśli zaś zamierza wysłać 0, to sprowadza stan linii do poziomu 0V na 60 µs. Magistrala może być dzielona przez wiele urządzeń, z których każde ma 64-bitowy identyfikator. Poszczególne bajty identyfikatora mają odrębne znaczenia. Np. najbardziej znaczący bajt identyfikatora to typ urządzenia. Najmniej znaczący bajt identyfikatora jest 8-bitową sumą kontrolną. Podstwową sekwencję transmisji stanowi wysłanie sekwencji reset, a po niej 8-bitowej komendy. 18/20
19/20
1-wire - cd Dla zidentyfikowania nawiązania łączności z odbiornikiem master rozsyła komendę enumeration, a następnie, bit po bicie identyfikator odbiornika sprawdzając stale stan linii. Dopóki bity identyfikatora zgadzają się z identyfikatorem danego urządzenia, to generuje ono niski stan linii. Brak potwierdzenia (brak niskiego stanu) po wysłaniu kolejnego bitu identyfikatora oznacza, że dalsze bity identyfikatora już są zbędne, bo adresowany odbiornik nie jest obecny. Protokół zawiera szereg standardowych komend rozgłaszanych do wszystkich urządzeń oraz komendy przeznaczone dla poszczególnych (grup) urządzeń. 20/20