Stap 2: I2C communicatie
I2C communicatie worden uitgevoerd met behulp van slechts twee draden: één voor gegevens (SDA) en één voor een klok (SCL). De data lijn is gedefinieerd als bidirectionele dus er moet een "meester" apparaat op de bus naar controle dingen. Elk apparaat "slave" zal zijn eigen uniek adres hebben. Zoals in het bovenstaande diagram, heeft de fundamentele reeks de kapitein signalering van het begin van een data-overdracht. Nadat de meester de overdracht start signalen, dan dooft het adres van de slaaf die het wil met praten. De slaaf neemt dan tijdelijk de controle over de data lijn te erkennen van het verzoek. De kapitein stuurt vervolgens een of meer gegevensbytes met de slaaf erkennen de ontvangst van elke byte. Wanneer het verzenden van de gegevens wordt gedaan, signalen de kapitein het einde van de reeks van de overdracht met een stopbit. De kapitein bestuurt de beweging van databits met de clock lijn. De gegevens wordt geacht geldig te zijn terwijl de clock lijn hoog is en moet worden vergrendeld wanneer de klok terug laag gaat.
In onze huidige applicatie met LCD de meester doet alle gegevens verzenden, maar dat is niet een beperking van de I2C-protocol. Bijvoorbeeld, de real-time klok module die ik heb op orde vereist gegevens van de meester, maar heeft ook gegevens die de meester wil ophalen. Dat is het onderwerp van een toekomstige aflevering, maar volstaan met te zeggen dat de meester bepaalt de richting van de gegevensoverdracht door instellen of wissen van de minst significante bits van de byte van het adres om aan te geven of een lees- of schrijfbewerkingen zijn. Zoals kan worden gezien in de software, verschoof de I2C adres is zeven bits en krijgt links door een beetje ruimte te maken voor de R/W-bit.