Arduino > I2C

1.  Description

Arduino est distribué avec la logithèque Wire  qui permet une communication I2C et Two Wire.

2.  Broches

ContrôleurBroches I2C/TWI
Uno et plus vieuxBroches analogiques A4 (SDA), A5 (SCL)
EthernetBroches analogiques Analog 4 (SDA), Analog 5 (SCL)
Mega2560Broches numériques 20 (SDA), 21 (SCL)
LeonardoBroches numériques 2 (SDA), 3 (SCL)
DueBroches numériques 20 (SDA), 21 (SCL), SDA1, SCL1

3.  Adressage 7bit

La logithèque Wire utilise un adressage à 7 bits pour l'écriture et la lecture.

Pour convertir une adresse I2C à 8 bist en adresse I2C à 7 bits, les bits doivent être décalés vers la droite ( >> 1 ).

Par exemple, le capteur TPA81 à l'adresse I2C 8 bits de 0xD0 (B11010000) par défaut. En décalant les bits vers la droite, l'adresse I2C devient 0x68 (B01101000):

TPA81HexadécimalBinaireDécimal
Adresse à 8 bits0xD0B11010000208
Adresse à 7 bits0x68B01101000104

4.  Circuit de base


Rp=1.8k

5.  Protocol

5.1  Écriture

// Set register and write data
Wire.beginTransmission(ADDRESS);
Wire.send(REGISTRE);
Wire.send(DATA);
[...]
Wire.endTransmission();

5.2  Lecture


// Set register
Wire.beginTransmission(ADDRESS);
Wire.write(REGISTRE);
Wire.endTransmission();
// Request data
Wire.requestFrom(ADDRESS, NUMBER_OF_BYTES);
// Wait for register's data
while(Wire.available() < NUMBER_OF_BYTES)
{
        ; // Do nothing
}

int i2c_data = Wire.read();

6.  Exemples

7.  Liens