I2C - De Geïntegreerde Circuit Bus

Alles over I2C Titelafbeelding

De I2C bus wordt zeer veel gebruikt in de embedded wereld. We leggen uit hoe het werkt en hoe het in te stellen op de Raspberry Pi met een voorbeeld.

I2C Kenmerken

De Inter-Integrated Circuit Bus is een synchrone seriële communicatiebus. Philips Semiconductors was verantwoordelijk voor de uitvinding in 1982, maar de interface won snel aan populariteit.

I2C Kenmerken
I2C Kenmerken

Veelgebruikte synoniemen zijn I2C, I2C of IIC. De interface maakt gebruik van een Controller-Target architectuur en stelt de controller in staat te communiceren met maximaal 112 apparaten met slechts twee draden.

De controller kan de bitsnelheid aanpassen aan de specifieke behoeften van het doel. Daarom is I2C compatibel met een groot aantal apparaten zoals sensoren, EEPROM-apparaten, klokken, motorstuurprogramma's en meer.

Bedrading

Het bedraden van de I2C bus kan echt niet eenvoudiger, aangezien je maar twee draden nodig hebt. Verbind de seriële klok (SCL) pen van de controller met de seriële klok pennen van de targets en verbind ook hun seriële data (SDA) pennen. De I2C software doet de rest.

I2C Bedrading
Bedrading

Als u uw I2C-apparaat van stroom moet voorzien, kunt u de 3V3, 5V en GROUND pennen van uw Raspberry Pi gebruiken.

Sommige apparaten zoals onze BME688 Breakout Raad hebben een I2C header, zodat je geen draden nodig hebt om ze aan te sluiten.

I2C-communicatie

De Inter-Intergrated Circuit Bus kan 128 apparaten verbinden met slechts twee draden. Dit is mogelijk dankzij het ingenieuze communicatieprincipe.

De draden (SDA en SCL) worden nooit actief hoog gestuurd. Als een apparaat een logische 1 wil sturen, laat het de draad zweven. Om een logische nul te sturen trekt het de draad naar massa.

De controller initieert de communicatie. Elk apparaat op het netwerk kan als controller en doelwit fungeren.

Onderstaande grafiek toont de afzonderlijke bits.

I2C-communicatie
I2C-communicatie

Om de communicatie te starten stuurt de controller een Start-bit gevolgd door het I2C-adres van het doel en de gewenste bedrijfsmodus (R - lezen of W - schrijven).

In I2C communicatie moet het doel elke 8 bits (na elke byte) een ACK-bit terugsturen. Aangezien de adresruimte gewoonlijk 7-bit is, zijn er 128 (0 tot 127) adressen. 16 daarvan zijn gereserveerd. Dan blijven er 112 mogelijke adressen over voor de apparaten.

Het adres van het doel en de bedrijfsmodus zijn één byte, zodat het doel een ACK-bit moet terugzenden. Vervolgens zendt de controller het (8-bit) registeradres, dat door het doel weer wordt bevestigd. Vanaf dat punt verschilt de lees- en schrijfcommunicatie.

Voor schrijven stuurt de controller de gegevens gewoon in 8-bit blokken. Het doel bevestigt elk blok. Als de controller klaar is met schrijven, stuurt hij het Stop-bit.

Voor lezen stuurt de controller opnieuw het Start-bit, gevolgd door het doeladres. De Target bevestigt en begint de data in 8-bit blokken te verzenden. Deze keer moet de controller elke byte bevestigen. Om het lezen te stoppen stuurt de controller het NACK-bit en tenslotte het Stop-bit.

Voordelen, nadelen en toepassingen

Voordelen

De voordelen van de I2C Bus zijn vrij duidelijk. Je kunt 128 apparaten verbinden met slechts twee draden en twee pinnen elk. Dat is echt krachtig. Bovendien heb je flexibele snelheden. Het opzetten van de hardware kan nauwelijks eenvoudiger. In tegenstelling tot SPI, weet de controller of het doel de data correct heeft ontvangen.

Voordelen
Voordelen

Nadelen

De Inter-Integrate Circuit Bus heeft meer ruimte en stroom nodig omdat hij gebruik maakt van pull-up-weerstanden. Hij is langzamer in vergelijking met SPI. U kunt in de problemen komen als twee apparaten hetzelfde I2C-adres gebruiken. Het adres wordt rechtstreeks op het apparaat opgeslagen. Bij sommige apparaten kunt u kiezen tussen twee mogelijke adressen door een jumper op een specifieke plaats op het apparaat te solderen.

Nadelen
Nadelen

Toepassingen

Als je zoekt naar Sensor in onze winkel zult u zien dat bijna alle sensoren die niet analoog zijn, de I2C Interface gebruiken. Het is heel gebruikelijk in de embedded ruimte. Er zijn dingen zoals I2C geheugen. Vaak gebruiken microcontrollers de bus voor communicatie. Daarnaast gebruiken veel DAC's (Digitaal Aanaloog Converter) en ADC's (Aanaloog Digitaal Converter) zijn compatibel met de interface.

I2C op de Raspberry Pi

Onze video laat zien hoe je de Inter-Integrated Circuit bus op je Raspberry Pi instelt.

6 Opmerkingen

  1. [...] Als je meer wilt weten over I2C, bekijk dan dit artikel. [...]

  2. [...] Wil je meer weten over I2C? Bekijk ons artikel erover hier. [...]

  3. [I2C - De intergeïntegreerde circuitbus [...].

  4. [...] Zoals Naveen uitlegt, is de verbinding tussen de Nano en het TFT-scherm gebaseerd op de Serial Peripheral Interface (SPI). De joystick en knoppen zijn verbonden via de Inter-Integrated Circuit Bus (I2C). [...]

Laat een reactie achter