I2C - Buss för interintegrerade kretsar
I2C-bussen är mycket vanligt förekommande i inbyggda system. Vi förklarar hur den fungerar och hur man ställer in den på Raspberry Pi med ett exempel.
I2C-egenskaper
Inter-Integrated Circuit Bus är en synkron seriell kommunikationsbuss. Philips Semiconductors stod för uppfinningen 1982, men gränssnittet blev snabbt populärt.
Vanliga synonymer är I2C, I2C eller IIC. Gränssnittet utnyttjar en Controller-Target-arkitektur och gör det möjligt för styrenheten att kommunicera med upp till 112 enheter med bara två kablar.
Kontrollenheten kan anpassa bithastigheten för att passa det specifika målets behov. Därför är I2C kompatibelt med många enheter som sensorer, EEPROM-enheter, klockor, motorstyrningar med mera.
Ledningar
Att koppla upp I2C-bussen kan verkligen inte vara enklare, eftersom du bara behöver två kablar. Anslut den seriella klockan (SCL) på styrenheten till de seriella klockorna på målen och anslut även deras seriella datapinnar (SDA). I2C-programvaran kommer att göra resten.
Om du behöver strömförsörja din I2C-enhet kan du använda 3V3-, 5V- och GROUND-stiften på din Raspberry Pi.
Vissa enheter som vår BME688 Breakout Board har ett I2C-huvud så att du inte behöver några kablar för att ansluta dem.
I2C-kommunikation
Inter-Intergrated Circuit Bus kan ansluta 128 enheter med bara två kablar. Detta är möjligt tack vare den geniala kommunikationsprincipen.
Ledningarna (SDA och SCL) drivs aldrig aktivt högt. Om en enhet vill skicka en logisk 1 låter den ledningen vara flytande. För att skicka en logisk nolla drar den ledningen till jord.
Kontrollören inleder kommunikationen. Alla enheter i nätverket kan fungera som styrenhet och mål.
I diagrammet nedan visas de enskilda bitarna.
För att starta kommunikationen skickar styrenheten en Start-bit följt av målets I2C-adress och önskat driftläge (R - Read eller W - Write).
I I2C-kommunikation måste målet returnera en ACK-bit var 8:e bit (efter varje byte). Eftersom adressutrymmet vanligtvis är 7-bitars finns det 128 (0 till 127) adresser. 16 av dem är reserverade. Det lämnar 112 möjliga adresser för enheterna.
Måladressen och driftläget är en byte, så målet måste returnera en ACK-bit. Därefter skickar styrenheten registeradressen (8 bitar), som målet bekräftar igen. Därefter skiljer sig läs- och skrivkommunikation åt.
Vid skrivning skickar styrenheten bara data i 8-bitars block. Målet bekräftar varje block. När styrenheten har skrivit färdigt skickar den stoppbiten.
För läsning skickar styrenheten Start-biten igen, följt av måladressen. Målet bekräftar och börjar skicka data i 8-bitars block. Den här gången måste styrenheten bekräfta varje byte. För att avbryta läsningen skickar styrenheten NACK-biten och slutligen Stop-biten.
Fördelar, nackdelar och tillämpningar
Fördelar
Fördelarna med I2C-bussen är ganska tydliga. Du kan ansluta 128 enheter med bara två kablar och två stift vardera. Det är verkligen kraftfullt. Dessutom har du flexibla hastigheter. Hårdvaruuppställningen kunde knappast vara enklare. Till skillnad från SPI vet styrenheten om målet tog emot data korrekt.
Nackdelar
Interintegrate Circuit Bus kräver mer utrymme och ström eftersom den använder pull-up-motstånd. Den är långsammare än SPI. Du kan få problem om två enheter använder samma I2C-adress. Adressen lagras direkt på enheten. Vissa enheter låter dig välja mellan två möjliga adresser genom att löda in en jumper på en specifik plats på enheten.
Tillämpningar
Om du söker efter Sensor i vår butik kommer du att märka att nästan alla sensorer som inte är analoga använder I2C-gränssnittet. Det är mycket vanligt inom inbyggda system. Det finns saker som I2C-minne. Ofta använder mikrokontroller bussen för kommunikation. Dessutom är många DAC:er (Digital Analog Converter) och ADC:er (Analog Digital Converter) är kompatibla med gränssnittet.
I2C på Raspberry Pi
Vår video visar hur du ställer in den interintegrerade kretsbussen på din Raspberry Pi.
[...] Om du är intresserad av att lära dig mer om I2C kan du också läsa den här artikeln. [...]
[...] Vill du veta mer om I2C? Kolla in vår artikel om det här. [...]
[...] I2C - Buss för interintegrerade kretsar [...]
[...] I2C - Inter-Integrated Circuit Bus [...]
[...] I2C - Buss för interintegrerade kretsar [...]
[...] Som Naveen förklarar är anslutningen mellan Nano och TFT-skärmen baserad på Serial Peripheral Interface (SPI). Joysticken och knapparna är anslutna via Inter-Integrated Circuit Bus (I2C). [...]