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 ?
Partager