Komunikacja w mikrokontrolerach Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com.
I2C a TWI Magistrala I2C wzięła swoją nazwę od skrótu: IIC : Inter Integrated Circuit bus. Zgodnie z tą nazwą, magistrala I2C służy do komunikowania się ze sobą układów scalonych w obrębie danego urządzenia. Właścicielem patentu na magistralę I2C jest koncern Philipsa, a I2C jest zastrzeżoną nazwą handlową. Producenci układów scalonych, których konstrukcja przewiduje komunikowanie się zgodne ze standardem I2C, robią to zazwyczaj w oparciu o licencję Philipsa.
TWI sterowanie Rejestry: TWCR (TWI Control Register) TWSR (TWI Status Register) TWBR (TWI Bit Rate Register) TWDR (TWI Data Register) TWAR (TWI Slave Address Register) 2 piny WE / WY Przerwanie: Gotowość Flaga TWINT (TWCR) Włączanie TWIE (TWCR) Wektor 0x011
TWI struktura sieci SDA SCL Magistrala I2C składa się z dwóch linii:
TWI struktura sieci Dwa typy układów: zarządzające (MASTER) - inicjuje cykl łączności, generuje przebieg zegarowy na linii SCL, zarządza transmisją podrzędne (SLAVE) - przyjmuje lub wysyła dane na polecenie MASTERA, w takt generowanego sygnału zegarowego SCL. Każdy SLAVE ma przypisany własny numer adresowy.
TWI w mikrokontrolerze ATmega8535 Simple yet Powerful and Flexible Communication Interface, only Two Bus Lines Needed Both Master and Slave Operation Supported Device can Operate as Transmitter or Receiver 7-bit Address Space Allows up to 128 Different Slave Addresses Multi-master Arbitration Support Up to 400 khz Data Transfer Speed Noise Suppression Circuitry Rejects Spikes on Lines Fully Programmable Slave Address with General Call Support Address Recognition Causes Wake-up when AVR is in Sleep Mode
Parametry elektryczne Rezystancja wejściowa wyprowadzeń SDA i SCL Ograniczenie Wyjścia gwarantują poprawną pracą Pojemność wejść poszczególnych układów I2C Długość linii SDA i SCL
Piny Piny SDA i SCL wszystkich układów mają konfigurację otwarty dren albo otwarty kolektor Stan na SDA / SCL PULL-UP
Protokół transmisji Dane przesyłane są w pakietach jedno bajtowych Liczba przesyłanych bajtów nie jest limitowana Transmisja od MSB Jeżeli odbiornik chwilowo nie może odebrać wysłanego bajtu danych może wymusić przejście nadajnika w stan oczekiwania (spowolnić transmisję) DANE - 8 bitów
Transmisja danych 1 2
Transmisja danych
Sygnały START/STOP DANE START: SDA z Hi na Low gdy na SCL jest Hi STOP: SDA z Low na Hi gdy na SCL jest Hi
Bity potwierdzenia - ACK Bit potwierdzenia generuje odbiornik Uzyskanie potwierdzenia upoważnia nadajnik do wysłania kolejnego bajtu Brak potwierdzenia od odbiornika: DANE 8 bitów
Bity potwierdzenia - ACK Potwierdzenie Stan wysoki
Adresowanie danych Każdy SLAVE MASTER bezpośrednio po zainicjowaniu transmisji MASTER Kierunek przesyłania danych nie może się zmienić aż do końca cyklu łączności ADRES 7 bitów DANE 8 bitów
Adresowanie danych
Adresowanie danych - adresy specjalne
Przykładowy cykl łączności: odczyt pojedynczego bajtu
Praca magistrali z kilkoma układami typu master Do jednej magistrali I2C może zostać podłączony więcej niż jeden układ master Synchronizacja WTEDY Arbitraż
Arbitraż
Synchronizacja
Budowa magistrali TWI (ATmega8535)
Rejestry magistrali TWI
TWI Control Register (TWCR) TWINT(7) praca zakończona; czekam na reakcję TWEA(6) Po wysłaniu TWI START Enable / REPEATED Ack wirtualnie START ON/OFF Po wysłaniu SLA + R/W TWSTA(5) Po wysłaniu generuje bajtu danych START TWSTO(4) Po odebraniu STOP bajtu (M) danych lub przerywa transmisję (S) Po przegraniu arbitrażu TWWC(3) Po wykryciu Write na magistrali Collision swojego (wpis do SLA TWDR / General przy (7)=0) Call TWEN(2) Po wykryciu fizyczne na magistrali ON/OFF STOP lub REPEATED START Sygnalizacja błędu związanego z nielegalnym TWIE(0) INT ON/OFF START lub STOP
TWI Status Register (TWSR)
TWI Status Register (TWSR)
TWI Bit Rate Register (TWBR)
TWI (Slave) Address Register (TWAR) 7-bitowy adres układu SLAVE TWGCE(0) ON/OFF
TWI Data Register (TWDR) Przechowuje Może być modyfikowany
Algorytm programu