W nowoczesnym sprzęcie AGD, elektronice przemysłowej i różnych urządzeniach telekomunikacyjnych często można znaleźć podobne rozwiązania, chociaż produkty mogą być praktycznie niepowiązane. Na przykład prawie każdy system zawiera następujące elementy:
- pewna "inteligentna" jednostka sterująca, która w zdecydowanej większości przypadków jest mikrokomputerem jednoukładowym;
- komponenty ogólnego przeznaczenia, takie jak bufory LCD, pamięć RAM, porty I/O, EEPROM lub dedykowane konwertery danych;
- specyficzne komponenty, w tym obwody strojenia cyfrowego i przetwarzania sygnału dla systemów wideo i radiowych.
Jak zoptymalizować ich aplikację?
Aby jak najlepiej wykorzystać te wspólne rozwiązania z korzyścią dla projektantów i producentów, a także poprawić ogólną wydajność różnych urządzeń i uprościć stosowane komponenty obwodów, firma Philips postanowiła opracować najprostszy dwuprzewodowy układ dwukierunkowy autobus, który zapewnia najbardziej produktywny inter-chipkontrola. Ta magistrala zapewnia transfer danych przez interfejs I2C.
Dziś asortyment producenta obejmuje ponad 150 CMOS, a także urządzenia bipolarne kompatybilne z I2C i zaprojektowane do pracy w dowolnej z wymienionych kategorii. Należy zauważyć, że interfejs I2C jest początkowo wbudowany we wszystkie kompatybilne urządzenia, dzięki czemu mogą one w łatwy sposób komunikować się ze sobą za pomocą specjalnej magistrali. Dzięki zastosowaniu takiego rozwiązania konstrukcyjnego udało się rozwiązać dość dużą ilość problemów związanych z interfejsami różnych urządzeń, co jest dość typowe dla rozwoju systemów cyfrowych.
Kluczowe korzyści
Nawet jeśli spojrzysz na krótki opis interfejsów UART, SPI, I2C, możesz podkreślić następujące zalety tych ostatnich:
- Do pracy wystarczą tylko dwie linie - synchronizacja i dane. Każde urządzenie, które łączy się z taką magistralą, może być następnie programowo zaadresowane na zupełnie unikalny adres. W dowolnym momencie istnieje prosta relacja, która pozwala urządzeniom master działać jako master-nadajnik lub master-odbiornik.
- Ta magistrala umożliwia jednoczesne korzystanie z kilku urządzeń nadrzędnych, zapewniając wszystkie niezbędne środki do określania kolizji, a także arbitraż zapobiegający uszkodzeniu danych w przypadku, gdy co najmniej dwa urządzenia nadrzędne zaczynają jednocześnie przesyłać informacje. W trybie standardowymzapewniana jest tylko szeregowa 8-bitowa transmisja danych z prędkością nie większą niż 100 kb/s, aw trybie szybkim próg ten można zwiększyć czterokrotnie.
- Czipy wykorzystują specjalny wbudowany filtr, który skutecznie tłumi przepięcia i zapewnia maksymalną integralność danych.
- Maksymalna możliwa liczba chipów, które można podłączyć do jednej magistrali, jest ograniczona jedynie jej maksymalną możliwą pojemnością 400 pF.
Korzyści dla konstruktorów
Interfejs I2C, jak również wszystkie kompatybilne chipy, mogą znacznie przyspieszyć proces rozwoju, od schematu funkcjonalnego do ostatecznego prototypu. Jednocześnie należy zauważyć, że ze względu na możliwość podłączenia takich mikroukładów bezpośrednio do magistrali bez stosowania wszelkiego rodzaju obwodów dodatkowych, przewidziano miejsce na dalszą modernizację i modyfikację układu prototypowego poprzez odłączanie i podłączanie różnych urządzeń z autobus.
Istnieje wiele zalet, które wyróżniają interfejs I2C. W szczególności opis pozwala dostrzec następujące korzyści dla konstruktorów:
- Bloki na schemacie funkcjonalnym w pełni odpowiadają mikroukładom, a jednocześnie zapewnione jest dość szybkie przejście od funkcjonalnego do podstawowego.
- Nie ma potrzeby opracowywania interfejsów magistrali, ponieważ magistrala jest już natywnie zintegrowana z dedykowanymi chipami.
- Zintegrowane protokoły komunikacyjne iadresowanie urządzeń pozwala systemowi być całkowicie zdefiniowanym programowo.
- W razie potrzeby te same typy mikroukładów mogą być używane w zupełnie różnych zastosowaniach.
- Całkowity czas rozwoju jest znacznie skrócony dzięki temu, że projektanci mogą szybko zapoznać się z najczęściej używanymi blokami funkcjonalnymi, a także różnymi mikroukładami.
- W razie potrzeby możesz dodawać lub usuwać chipy z systemu, a jednocześnie nie mieć większego wpływu na inne urządzenia podłączone do tej samej magistrali.
- Całkowity czas tworzenia oprogramowania można znacznie skrócić, udostępniając bibliotekę modułów oprogramowania wielokrotnego użytku.
Warto zwrócić uwagę między innymi na niezwykle prostą procedurę diagnozowania awarii i dalszego debugowania, która wyróżnia interfejs I2C. Opis sugeruje, że w razie potrzeby nawet niewielkie odchylenia w działaniu takiego sprzętu mogą być natychmiast monitorowane bez żadnych trudności i odpowiednio można podjąć odpowiednie środki. Warto również zauważyć, że projektanci otrzymują specjalne rozwiązania, które w szczególności są dość atrakcyjne dla różnych przenośnych urządzeń i systemów zapewniających zasilanie bateryjne za pomocą interfejsu I2C. Opis w języku rosyjskim wskazuje również, że jego użycie pozwala zapewnić następujące ważne zalety:
- Wystarczająco wysoki stopień odporności na wszelkie pojawiające się zakłócenia.
- Ostatecznieniskie zużycie energii.
- Najszerszy zakres napięcia zasilania.
- Szeroki zakres temperatur.
Korzyści dla technologów
Warto zauważyć, że nie tylko projektanci, ale także technolodzy zaczęli ostatnio dość często korzystać ze specjalistycznego interfejsu I2C. Opis w języku rosyjskim wskazuje na dość szeroki wachlarz zalet, jakie zapewnia ta kategoria specjalistów:
- Standardowa dwuprzewodowa magistrala szeregowa z tym interfejsem minimalizuje liczbę połączeń między układami scalonymi, co oznacza, że wymagana jest mniejsza liczba pinów i ścieżek, co sprawia, że płytki drukowane są tańsze i znacznie mniejsze.
- W pełni zintegrowany interfejs I2C LCD1602 lub jakaś inna opcja całkowicie eliminuje potrzebę stosowania dekoderów adresów i innej zewnętrznej małej logiki.
- Możliwe jest jednoczesne używanie kilku urządzeń nadrzędnych na takiej magistrali, co znacznie przyspiesza testowanie i późniejszą konfigurację sprzętu, ponieważ magistrala może być podłączona do komputera linii montażowej.
- Dostępność układów scalonych zgodnych z tym interfejsem w pakietach VSO, SO i niestandardowych DIL może znacznie zmniejszyć wymagania dotyczące rozmiaru urządzenia.
To tylko krótka lista zalet, które wyróżniają interfejs I2C LCD1602 od innych. Ponadto kompatybilne chipy mogą znacznie zwiększyć elastyczność używanego systemu, zapewniając:niezwykle prosta konstrukcja różnych opcji wyposażenia, a także stosunkowo łatwe aktualizacje, aby dalej wspierać rozwój na obecnym poziomie. W ten sposób możliwe jest opracowanie całej rodziny różnych urządzeń na podstawie pewnego podstawowego modelu.
Dalszą modernizację sprzętu i rozbudowę jego funkcji można przeprowadzić za pomocą standardowego podłączenia do magistrali odpowiedniego mikroukładu za pomocą interfejsu Arduino 2C lub dowolnego innego z dostępnej listy. Jeśli wymagana jest większa pamięć ROM, wystarczy wybrać inny mikrokontroler ze zwiększoną pamięcią ROM. Ponieważ zaktualizowane chipy mogą w razie potrzeby całkowicie zastąpić stare, możesz łatwo dodać nowe funkcje do sprzętu lub zwiększyć jego ogólną wydajność, po prostu odłączając przestarzałe chipy, a następnie wymieniając je na nowszy sprzęt.
ACCESS.bus
Ze względu na fakt, że magistrala ma charakter dwuprzewodowy, a także możliwość adresowania programowego, jedną z najbardziej idealnych platform dla ACCESS.bus jest interfejs I2C. Specyfikacja (opis w języku rosyjskim znajduje się w artykule) tego urządzenia sprawia, że jest ono znacznie tańszą alternatywą dla wcześniej aktywnie używanego interfejsu RS-232C do podłączania różnych urządzeń peryferyjnych do komputerów za pomocą standardowego złącza czteropinowego.
Wprowadzenie do specyfikacji
Dla nowoczesnych aplikacjiSterowanie 8-bitowe, które wykorzystuje mikrokontrolery, umożliwia ustawienie kilku kryteriów projektowych:
- kompletny system zawiera głównie jeden mikrokontroler i inne urządzenia peryferyjne, w tym pamięć i różne porty I/O;
- całkowity koszt łączenia różnych urządzeń w ramach jednego systemu powinien być maksymalnie zminimalizowany;
- system sterujący funkcjami nie przewiduje konieczności zapewnienia szybkiego przesyłania informacji;
- Całkowita wydajność zależy bezpośrednio od wybranego sprzętu, a także rodzaju łączącej magistrali.
Aby zaprojektować system, który w pełni spełnia wymienione kryteria, musisz użyć magistrali, która będzie korzystała z interfejsu szeregowego I2C. Chociaż magistrala szeregowa nie ma takiej przepustowości jak magistrala równoległa, wymaga mniejszej liczby połączeń i mniejszej liczby pinów chipowych. Jednocześnie nie zapominaj, że magistrala obejmuje nie tylko przewody połączeniowe, ale także różne procedury i formaty niezbędne do zapewnienia komunikacji w systemie.
Urządzenia, które komunikują się za pomocą emulacji programowej interfejsu I2C lub odpowiedniej magistrali, muszą mieć określony protokół, który pozwala zapobiegać różnym możliwościom kolizji, utraty lub zablokowania informacji. Szybkie urządzenia powinny być w stanie komunikować się z wolnymi, a system nie powinien być od nich uzależnionyz podłączonego do niego sprzętu, w przeciwnym razie wszelkie ulepszenia i modyfikacje nie będą mogły być wykorzystane. Niezbędne jest również opracowanie procedury, za pomocą której można realistycznie ustalić, które konkretne urządzenie aktualnie steruje magistralą iw jakim momencie. Dodatkowo, jeśli do tej samej magistrali podłączone są różne urządzenia o różnych częstotliwościach zegara, należy zdecydować o źródle ich synchronizacji. Wszystkie te kryteria spełnia interfejs I2C dla odbiornika AVR i wszystkie inne z tej listy.
Główna koncepcja
Magistrala I2C może obsługiwać dowolną stosowaną technologię chipową. Interfejs I2C LabVIEW i inne podobne do niego zapewniają użycie dwóch linii do przesyłania informacji - danych i synchronizacji. Każde podłączone w ten sposób urządzenie jest rozpoznawane po swoim unikalnym adresie, bez względu na to, czy jest to bufor LCD, mikrokontroler, interfejs pamięci czy klawiatury i może pełnić rolę odbiornika lub nadajnika, w zależności od tego, do czego jest przeznaczone dla tego sprzętu.
W zdecydowanej większości przypadków bufor LCD jest standardowym odbiornikiem, a pamięć może nie tylko odbierać, ale także przesyłać różne dane. Między innymi, zgodnie z procesem przenoszenia informacji, urządzenia można sklasyfikować jako podrzędne i nadrzędne.
W tym przypadku master jest urządzeniem, które inicjuje transfer danych, a także generujesygnały synchronizacji. W takim przypadku wszelkie adresowalne urządzenia będą w stosunku do nich traktowane jako urządzenia podrzędne.
Interfejs komunikacyjny I2C zapewnia obecność kilku urządzeń nadrzędnych na raz, co oznacza, że może się z nim połączyć więcej niż jedno urządzenie zdolne do sterowania magistralą. Możliwość korzystania z więcej niż jednego mikrokontrolera na tej samej magistrali oznacza, że w danym momencie można przesłać więcej niż jednego mastera. Aby wyeliminować potencjalny chaos, który może pojawić się w takiej sytuacji, opracowano specjalistyczną procedurę arbitrażową wykorzystującą interfejs I2C. Ekspandery i inne urządzenia umożliwiają podłączenie urządzeń do magistrali zgodnie z tzw. zasadą okablowania.
Za generowanie sygnału zegarowego odpowiada master, a każdy master generuje swój własny sygnał podczas przesyłania danych i może się on zmienić tylko później, jeśli zostanie „wyciągnięty” przez powolnego slave'a lub innego mastera w przypadku kolizji
Parametry ogólne
Zarówno SCL, jak i SDA są liniami dwukierunkowymi, które łączą się z dodatnim zasilaczem z rezystorem podciągającym. Kiedy opona jest całkowicie wolna, każda linia znajduje się wysoko. Stopnie wyjściowe urządzeń podłączonych do magistrali muszą być typu open-drain lub open-collector, aby można było zrealizować przewodową funkcję AND Informacje przez interfejs I2C mogą być przesyłane z prędkością nie większą niż 400 kbpstryb szybki, podczas gdy standardowa prędkość nie przekracza 100 kb/s. Całkowita liczba urządzeń, które mogą być jednocześnie podłączone do magistrali zależy tylko od jednego parametru. To jest pojemność linii, która nie przekracza 400 pf.
Potwierdzenie
Potwierdzenie jest obowiązkową procedurą w procesie przenoszenia danych. Master generuje odpowiedni impuls synchronizacji, podczas gdy nadajnik zwalnia linię SDA podczas tego impulsu synchronizacji jako potwierdzenie. Następnie odbiornik musi zapewnić, że linia SDA jest utrzymywana stabilnie podczas wysokiego stanu zegara w stabilnym stanie niskim. W takim przypadku należy wziąć pod uwagę czasy konfiguracji i wstrzymania.
W zdecydowanej większości przypadków adresowany odbiornik musi generować potwierdzenie po każdym odebranym bajcie, z wyjątkiem sytuacji, gdy początek transmisji zawiera adres CBUS.
Jeżeli odbiornik-slave nie ma możliwości wysłania potwierdzenia własnego adresu, linia danych powinna być pozostawiona na wysokim poziomie, a wtedy master będzie mógł wysłać sygnał "Stop", który przerwie wysyłanie wszystkie informacje. Jeśli adres został potwierdzony, ale slave nie może odbierać żadnych danych przez długi czas, master musi również przerwać wysyłanie. Aby to zrobić, urządzenie podrzędne nie potwierdza następnego odebranego bajtu i po prostu opuszcza linięwysoki, powodując, że urządzenie nadrzędne generuje sygnał stop.
Jeżeli procedura transferu przewiduje obecność urządzenia nadrzędnego-odbiornika, to w tym przypadku musi poinformować urządzenie podrzędne o zakończeniu transmisji, a odbywa się to bez potwierdzania ostatniego odebranego bajtu. W takim przypadku nadajnik podrzędny natychmiast zwalnia linię danych, aby urządzenie nadrzędne mogło wysłać sygnał „Stop” lub ponownie powtórzyć sygnał „Start”.
Aby sprawdzić czy sprzęt działa można spróbować wpisać standardowe przykładowe szkice dla interfejsu I2C w Arduino, jak na zdjęciu powyżej.
Arbitraż
Nadrzędne urządzenia mogą rozpocząć wysyłanie informacji dopiero po całkowitym zwolnieniu magistrali, ale co najmniej dwa urządzenia nadrzędne mogą generować sygnał startu w minimalnym czasie przetrzymania. To ostatecznie skutkuje specyficznym sygnałem „Start” w autobusie.
Arbitraż działa na magistrali SDA, gdy magistrala SCL jest na wysokim poziomie. Jeśli jeden z masterów zaczyna nadawać niski poziom na linii danych, ale jednocześnie drugi jest wysoki, to ten ostatni jest całkowicie odłączony od niego, ponieważ stan SDL nie odpowiada wysokiemu stanowi jego linii wewnętrznej.
Arbitraż może trwać przez kilka bitów. Ze względu na to, że najpierw przesyłany jest adres, a dopiero potem dane, arbitraż może trwać do końca adresu, a jeśli mistrzowie zaadresująto samo urządzenie, wówczas w arbitrażu wezmą udział również inne dane. Dzięki temu schematowi arbitrażu żadne dane nie zostaną utracone w przypadku wystąpienia kolizji.
Jeżeli master utraci arbitraż, może wysyłać impulsy zegarowe w SCL do końca bajtu, podczas którego dostęp został utracony.