Sprzężenie mikrokontrolera (nie tylko X51) ze światem zewnętrznym lokalne interfejsy szeregowe Ryszard J. Barczyński, 2009 2015 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego
Zwiększanie liczby wejść i wyjść Zdarza się, że liczba wyprowadzeń portów mikrokontrolera nie wystarcza do naszego zastosowania musimy wtedy odpowiednio zwiększyć ich liczbę. Mamy do dyspozycji: Standardowe układy cyfrowe (na przykład CMOS lub TTL) Specjalizowane układy rozszerzeń łączone z szyną procesora Układy łączone poprzez specjalny interface szeregowy (I2C, SPI, 1 Wire)
Lokalne interfejsy szeregowe Umożliwiają... połączenie sporej liczby układów peryferyjnych... przy niewielkiej liczbie użytych linii sterujących... przy małej liczbie dodatkowych elementów... zwykle nie potrzebują miejsca w przestrzeni adresowej Mają też wady... niezbędny specjalizowany hardware... albo skomplikowane (i wolno działające) oprogramowanie... ograniczoną prędkość transmisji danych
Lokalne interfejsy szeregowe Najczęściej spotyka się interfejsy I2C Inter Integrated Circuits... opracowany przez firmę Philips SMBus System Management Bus... podobny do I2C, utworzony przez firmę Intel SPI Serial Peripherial Interface... opracowany przez firmę Motorola Microwire... podobny do SPI 1 Wire... opracowany przez firmę Dallas (aktualnie Maxim)
Lokalny interfejs szeregowy I2C Zawiera dwie dwukierunkowe linie typu otwarty kolektor:... SDA (linia danych)... SCL (linia zegara) Transmisja jest synchroniczna... z prędkością maksymalną 3.4Mb/s (typowo 100 kb/s)... w trybie master slave (master steruje transmisją za pomocą SCL) Każdy układ slave ma swój unikalny identyfikator
Lokalny interfejs szeregowy I2C Zwykle system zbudowany jest z jednego mikrokontrolera... pracującego jako master... oraz szeregu układów slave Możliwe są jedna bardziej skomplikowane konfiguracje Każdy z układów slave ma adres unikalny dla typu układów... sprzętowo ustalany przez producenta... jednakoż użytkownik ma zwykle możliwość wpływu na część adresu... za pomocą wyprowadzeń układu scalonego
Lokalny interfejs szeregowy I2C hardware
Lokalny interfejs szeregowy I2C W przykładzie obok... połączono dwa przetworniki C/A... firmy Maxim
Lokalny interfejs szeregowy I2C Dane przesyłane są sformatowane w ramki o długości jednego bajtu Po każdym bajcie następuje potwierdzenie jego odbioru (ACK) Bajty przesyłane są od bardziej znaczących Transmisją danych steruje układ master za pomocą linii zegara SCL Odbiornik może chwilowo wstrzymać nadawanie... wymuszając stan niski na linii SCL Każdą transmisję rozpoczyna sekwencja START, a kończy STOP
Lokalny interfejs szeregowy I2C Przesyłanie danych z układu master do slave
Lokalny interfejs szeregowy I2C Odczyt danych z układu slave przez master
Lokalny interfejs szeregowy I2C Parametry czasowe:... transmisja może odbywać się dowolnie wolno Maksymalna prędkość transmisji... w trybie standard wynosi 100 kb/s... w trybie szybkim 400 kb/s... w trybie high speed 3.4 Mb/s W trybie standard pracują wszystkie układy... w trybie szybkim tylko niektóre... w trybie high speed bardzo nieliczne
Lokalny interfejs szeregowy I2 C Przykład sterownika wyświetlacza LED i klawiatury
Lokalny interfejs szeregowy I2 C System procesora telewizyjnego SAA56XX firmy Philips
Lokalny interfejs szeregowy I2C Szeregowe układy pamięci
Lokalny interfejs szeregowy I2C Interfejs z zastosowaniem separacji galwanicznej
Lokalny interfejs szeregowy I2C Firma Philips prowadzi bazę danych układów I2C... łatwiejsze jest zachowanie unikalności adresów... łatwiejsze zachowanie dobrej kompatybilności układów ze standardem... i powoduje to dosyć dużą cenę układów (potrzebna jest licencja)... Niektóre kontrolery posiadają wbudowane interfejsy I2C... w innych musimy interfejsy obsługiwać programowo : ( Na szczęście Philips na stronie... http://www.semiconductors.philips.com... umieścił procedury ich obsługi (w C i assemblerze 8051)
Lokalny interfejs szeregowy SMBus Jest uproszczeniem interfejsu I2C... wprowadza dolny limit czasu operacji (25 ms)... minimalną częstotliwość zegara (10 khz)... pracuje z maksymalną częstotliwością zegara 100 khz... istnieje jeszcze parę mało istotnych różnic Wprowadza też dodatkowe funkcje (alarm, general call) W praktyce układy z oboma interfejsami dają się łączyć jednocześnie
Lokalny interfejs szeregowy SMBus
Lokalny interfejs szeregowy SPI Jest to interfejs czteroprzewodowy, synchroniczny Jeden z układów (zwykle mikrokontroler) pełni rolę master... sterując transmisją Gwarantowana prędkość transmisji wynosi 2.1 Mb/s Układy nie mają unikalnych identyfikatorów... ale dodatkowe wejście wyboru (SS)... stan niski na tym wejściu wybiera aktywny układ slave
Lokalny interfejs szeregowy SPI Teoretycznie nie ma ograniczeń na liczbę układów W praktyce ograniczeniem jest suma pojemności montażowych... ograniczająca prędkość transmisji
Lokalny interfejs szeregowy SPI Co prawda SPI... jest prostszy niż I2C... ma za to cztery tryby pracy... różniące się zboczem zegara, na którym jest próbkowane wejście... oraz ustawiane wyjście Na szczęście mikrokontrolery radzą sobie ze wszystkimi trybami
Lokalny interfejs szeregowy SPI Przykład odczytu bajtowej danej z pamięci EEProm z interfejsem SPI... (X5323 firmy Xicor)
Lokalny interfejs szeregowy SPI w mikrokontrolerze AT98S8252
Lokalny interfejs szeregowy SPI w mikrokontrolerze AT98S8252 Transmisją steruje rejestr specjalnego przeznaczenia SPCR (96h) SPIESPE DORDMSTRCPOLCPHASPR1SPR0 Jego bity mają następujące znaczenie: SPIE zezwolenie na generację przerwań (adres wektora 23h) SPE załączenie interfejsu SPI DORD kolejność wysyłania bajtów (1 = starszy/młodszy) MSTR ustawienie trybu master CPOL, CPHA tryb (mod) pracy interfejsu SPR1, SPR0 bity prescalera zegara (f = fosc/n)
Lokalny interfejs szeregowy SPI w mikrokontrolerze AT98S8252 Rejestr statusu SPSR (AAh) SPF WCOL - - - - - Jego bity mają następujące znaczenie: SPF skompletowanie słowa nadawanego/odbieranego WCOL próba zapisu danych podczas trwania transmisji -
Lokalny interfejs szeregowy SPI izolacja galwaniczna
Lokalny interfejs szeregowy SPI Realizacja programowa interfejsu SPI jest prostsza niż I2C Zestaw istniejących układów jest również obfity... choć mniej jest układów specjalizowanych (na przykład TV) Wykorzystując rozszerzony interfejs SPI... firma Atmel stworzyła standard programowania procesora... ISP (In System Programming)
Lokalny interfejs szeregowy Microwire Został opracowany w firmie National Semiconductor Jest praktycznie identyczny z SPI pracującym w trybie 0 Masterem jest zawsze mikrokontroler (nie ma on lini SS)... interface jest więc w zasadzie trójprzewodowy Jest popularny
Lokalny interfejs szeregowy 1 Wire Został opracowany w firmie Dallas (aktualnie Maxim) Używa jednego przewodu do transmisji w obie strony... oraz opcjonalnie zasilania układów (!)... linia jest sterowana przez wyjścia z otwartym kolektorem Transmisja ma prędkość do 16.3kb/s (standard)... lub 115.2 kb/s (overdrive) Do pojedynczej linii można dołączyć wiele układów Każdy układ (egzemplarz!) ma swój unikalny identyfikator... do ich identyfikacji służy specjalna procedura wyszukiwania... przeprowadzana przez kontroler,... który zawsze pełni rolę nadrzędną (master)
Lokalny interfejs szeregowy 1 Wire W stanie spoczynkowym linia znajduje się na wysokim poziomie Każdy impuls niskiego poziomu o czasie dłuższym niż 480 us... jest traktowany jako reset... po którym układy slave... zgłaszają swoją obecność Następnie układ master... przeprowadza przeszukiwanie... identyfikując układy slave
Lokalny interfejs szeregowy 1 Wire Zapis przez mastera bitu 1 do rejestru wejściowego slave
Lokalny interfejs szeregowy 1 Wire Zapis przez mastera bitu 0 do rejestru wejściowego slave
Lokalny interfejs szeregowy 1 Wire Odczyt przez mastera bitu ze slave
Lokalny interfejs szeregowy 1 Wire Do budowy interface 1 Wire można wykorzystać dwa bity we/wy
Lokalny interfejs szeregowy 1 Wire 1 Wire to niewątpliwie interfejs bardzo ciekawy... i bardzo zaawansowany technologicznie Choć układy produkuje praktycznie jedna firma Maxim/Dallas... to są wśród nich różne propozycje o uniwersalnym zastosowaniu... niestety, nie są tanie Algorytm wyszukiwania układów jest skomplikowany... lecz producent dostarcza źródła gotowych procedur Interfejs nadaje się do budowy sporych sieci czujników pomiarowych
Lokalny interfejs szeregowy 1 Wire ibutton Interfejs 1 Wire jest również wykorzystywany w elementach ibutton Są to układy zamknięte w obudowach stalowych... i bardzo odporne na wpływy zewnętrzne Na przykład pamięci (również z szyfrowanym dostępem)... mogą być wykorzystywane w szeroko pojętym security Istnieją również autonomiczne (z własnym zasilaniem)... układy pomiarowe mierzące temperaturę i wilgotność... i magazynujące zmierzone wielkości