I²C-bus: verschil tussen versies
Regel 47: | Regel 47: | ||
== Latere versies == |
== Latere versies == |
||
In latere versies van de I<sup>2</sup>C-bus zijn er verschillende verbeteringen aangebracht. Zo is onder andere de maximale snelheid verhoogd naar 400 kbit/sec (Fast-mode) en weer later naar 3,4 Mbit/sec (High-speed mode), is de adresseringsruimte van aangesloten IC's vergroot van 7 naar 10 [[Bit (informatica)|bit]] en zijn er voorzieningen gekomen om I<sup>2</sup>C-bussen met verschillende voedingsspanningen te verbinden. |
In latere versies van de I<sup>2</sup>C-bus zijn er verschillende verbeteringen aangebracht. Zo is onder andere de maximale snelheid verhoogd naar 400 kbit/sec (Fast-mode) en weer later naar 3,4 Mbit/sec (High-speed mode), is de adresseringsruimte van aangesloten IC's vergroot van 7 naar 10 [[Bit (informatica)|bit]] en zijn er voorzieningen gekomen om I<sup>2</sup>C-bussen met verschillende voedingsspanningen te verbinden. |
||
In 2006 heeft Philips een afdeling afgesplitst onder de naam [[NXP]], die nu de I<sup>2</sup>C-standaard mee bewaakt. |
|||
== Externe links == |
== Externe links == |
Versie van 29 mrt 2014 21:18
De I2C-bus (spreek uit als: I kwadraat C bus), eertijds aangeduid met IIC-bus (Inter-IC-bus), is een synchrone, seriële bus, ontwikkeld voor datacommunicatie tussen microprocessoren en andere IC's, meestal op één enkele printplaat.
Geschiedenis
Ze werd in 1979 door Philips ontwikkeld en in 1980 gepatenteerd als betrouwbaar en goedkoop alternatief ter vervanging van een reeks van verschillende andere databussen die destijds werden toegepast in consumentenapparaten. Tegenwoordig valt deze divisie van Philips onder NXP. N.b. de algemene (niet door Philips/NXP gelicencieerde) term voor I2C is TWI (Two-Wire Interface).
Het I2C-systeem had aanvankelijk enkele nadelen, zoals een lage snelheid (100 kbit/sec) en een geringe storingszekerheid bij lange leidingen (in de praktijk mag de totale lengte van de bus zeker niet langer dan 1m zijn), maar later is de snelheid opgevoerd en zijn er speciale buffer-IC's ontwikkeld om de leidinglengte van de bus te vergroten.
Werking
I2C werkt op basis van twee bus lijnen, namelijk SDA (serial data) en SCL (serial clock). Over de SDA lijn wordt de data verzonden en over de SCL lijn wordt het kloksignaal verzonden.
Om de werking meer duidelijk te maken ziet u hier een timing diagram wel een voorbeeld van hoe de SDA en SCL samenwerken:
De werking van I2C dataoverdracht:
- Data verzenden wordt geïnitieerd met een START bit (S) welke de SDA het signaal geeft om laag getrokken te worden terwijl de SCL hoog blijft.
- SDA zet de eerste databit gelijk, terwijl SCL laag gehouden wordt (gedurende de blauwe tijdsbalk.). De data wordt ontvangen als SCL naar omhoog gaat (groen).
- Als de overdracht compleet is wordt een STOP bit (P) verzonden door de datalijn vrij te geven en deze zo in staat te stellen om hoog getrokken te worden terwijl SCL continu hoog gehouden wordt.
- Ten einde valse detecties te voorkomen, wordt het niveau van de SDA veranderd op zogenaamde falling edge (overgang van hoog naar laag) van SCL. Het uitlezen gebeurt op de rising edge (de overgang van laag naar hoog) van SCL.
Om te kunnen communiceren heeft I2C één master nodig en minimaal één slave. De master heeft de controle over de I2C bus en genereert het kloksignaal, startbit en stopbit. De slaves communiceren alleen nadat de master daartoe een verzoek stuurt.
Om te communiceren stuurt de master eerst een Start bit. Dit bestaat uit een hoog naar laag signaal op de SDA lijn (flankgestuurd) terwijl de SCL lijn hoog is. Vervolgens stuurt de master een adres + een read/write bit over de I2C lijn. Het read/write bit houdt in of de master data wil versturen of wil ontvangen. De slave die het aangeroepen adres heeft zal dan reageren met een Acknowledge zodat de master weet dat de aangeroepen IC actief is.
Nu kan de data worden verzonden. Er wordt één byte per keer verzonden + een Acknowledge van de ontvanger om te bevestigen dat de data is ontvangen. Nadat de data is verstuurd zal de master het stopbit verzenden: Een laag naar hoog signaal op de SDA lijn (flankgestuurd) terwijl de SCL lijn hoog is.
Om goed te kunnen werken is het verstandig om de beide bus lijnen hoog te houden door een Pull-up weerstand. De waarde van de weerstand is afhankelijk van het voltage van de bus (bij 3.3V systemen tussen ongeveer 1K8 en 2K7, maar bij 5V meestal 4K7). Dit heeft ook te maken met de snelheid waarmee men de bus wil laten werken.
Voordelen
De voordelen zijn echter al even belangrijk, wanneer aangewend in geschikte toepassingen. De belangrijkste voordelen zijn:
- Lage kostprijs.
- Eenvoudige bedrading (slechts twee signaalleidingen).
- Weinig soldeerpunten, kleine IC's.
- Uitgebreid gamma IC's met de I2C interface.
- Compatibele IC's van andere fabrikanten.
- Robuuste bouw.
- Langzame perifere chips kunnen wachtcycli afdwingen.
- Geïntegreerde multimastermogelijkheid, dat wil zeggen meerdere microcontrollers (masters) kunnen dezelfde bus gebruiken en zelfs onderling communiceren.
Nadelen
Naast de vele voordelen zijn er ook enkele nadelen:
- Als er één aangesloten chip (IC) niet goed functioneert in de I2C bus dan kan dit de hele lijn van I2C blokkeren zodat er helemaal geen communicatie meer op de I2C lijnen kan plaatsvinden.
- I2C wordt traag bij grotere hoeveelheden data.
Latere versies
In latere versies van de I2C-bus zijn er verschillende verbeteringen aangebracht. Zo is onder andere de maximale snelheid verhoogd naar 400 kbit/sec (Fast-mode) en weer later naar 3,4 Mbit/sec (High-speed mode), is de adresseringsruimte van aangesloten IC's vergroot van 7 naar 10 bit en zijn er voorzieningen gekomen om I2C-bussen met verschillende voedingsspanningen te verbinden.
Externe links
- (en) I2C Introductie
- (en) I2C Informatie
- (en) Application notes NXP
- (en) I2C-bus specification and user manual NXP
- (en) Arduino Wire library