Stap 2: Wat Is I2C - 2
Een meester kan ofwel verzoek te verzenden of Ontvangen van gegevens van een slaaf. Tijdens een Stuur, de meester schrijft gegevens naar de bus en de slaaf leest de gegevens uit de bus en slaat ze in het geheugen. Tijdens een ontvangtleest de kapitein de bus voor data verstuurd door de slaaf. In beide gevallen, de master biedt het kloksignaal op SCK.
Aan het einde van elke byte (dat is 8 bits) verzonden op de I2C-bus, dient de ontvangende apparaat een ontvangstbevestiging (ACK). De enige keer dat waar dit niet het geval is wanneer de kapitein gegevens van de slaaf ontvangt, waarin het eindigt de overdracht met een niet-acknowledgement (NACK of NAK) die aangeeft dat de slaaf moet stoppen met het verzenden van gegevens. Een ACK wordt vertegenwoordigd door een lage (getrokken-down of 0) staat, terwijl een NACK wordt vertegenwoordigd door een hoge (niet getrokken-down of 1) staat. Aangezien de standaardstatus van de bus hoog is, is een ACK een bevestiging dat het andere apparaat aanwezig is en de transmissie heeft verwerkt.
Naast de ACK en de NACK heeft I2C twee extra framing voorwaarden bekend als een conditie en een voorwaarde stoppen. Een start-voorwaarde wordt overgebracht door de kapitein aan het begin van een transmissie. Tijdens een start overgang, de SDA lijn eerste overgangen van hoog naar laag en vervolgens, na een aanzienlijke hoeveelheid tijd, doet de SCL hetzelfde. Een stop-voorwaarde, die is afgegeven door de kapitein aan het einde van een transmissie, is het omgekeerde. Eerst gaat de SCL-lijn van laag naar hoog, dan de SDA hetzelfde doet. Merk op dat de SDA en SCL lijnen beide hoog zijn, wanneer de bus inactief is.
De eerste byte in een I2C-transmissie is de byte van het adres. Dit is verzonden door de kapitein en wordt gebruikt om te bepalen wat slaaf om te praten met en of voor het uitvoeren van een verzenden of ontvangen (ook bekend als schrijven en lezen, respectievelijk). Het adres van een slaaf is 7 bits lang, en er zijn verschillende gereserveerde adressen. Één dergelijke gereserveerde adres is 0x00, die wordt vaak beschouwd als een wereldwijde schrijven (schrijven aan alle slaven). U configureren meestal de slave-apparaat adres door koppelverkoop adres selecteren pinnen hoog of laag, hoewel op een microcontroller u het adres via programmacode instellen als zullen wij op de ATTiny2313. De minst significante bits van de byte van het adres is de lees/schrijf-bits waarmee wordt aangegeven of u wilt uitvoeren een lezen of schrijven. Als men, de bediening is een lees, als nul een schrijven.