Bonjour,
Habitué à la programmation I2c en Arduino j'arrive à gérer tout les cas.
Mais pour une application j'utilise Raspberry Pi en python.
Mais il y a 2 cas de trame I2c que je ne sais programmer en python.

1er cas: Par exemple lire 8 octets d'un composant d'adresse I2c 0x48 mais qui n'a pas d'adresse de registre ?

Ecrire 0x48+R puis lire les 8 octets

En Arduino

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Wire.requestFrom(0x48, 8); 
 
  while (Wire.available()) 
    { 
    tab[0]= Wire.read(); 
    //8 fois    
    }

En Python ?

read_byte (adr)n'utilise pas de registre mais c'est seulement pour un octet.

read_bloc_data (adr, reg) utilise une registre et ne peu correspondre à la trame I2C nécessaire.

2eme cas: Par exemple lire 8 octets d'un composant d'adresse I2c 0x48 mais qui à un registre de 16 bit (par exemple lire à partir de 0x0F00)?

Ecrire 0x48+W / Ecrire 0xF0 / Ecrire0x00 / Ecrire 0x48+R puis lire les 8 octets

En Arduino :

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Wire.beginTransmission(0x48);
Wire.Wire(0xF0);
Wire.Wire(0x00);
Wire.endTransmission();
Wire.requestFrom(0x48, 8);
while (Wire.available()) 
    { 
    tab[0]= Wire.read(); 
    //8 fois
    }

En Python ?

read_bloc_data (0x48, 0xF000) de dois pas fonctionner?


Je ne sais command résoudre ces cas en python ?