Conflit sur bus I2C

Bonjour à tous,

J'ai fais un montage sur une carte Arduino M0, devant permettre de lire des données d'un capteur de champ magnétique et de les afficher sur un écran LCD, tout deux géré par un bus I2C. Cependant, quand je lance l'application sans avoir branché le capteur au montage, l'écran s'allume normalement et ça fonctionne bien, mais quand je branche le capteur, je n'ai plus rien qui s'affiche sur l'écran et tous ce qui était affiché s’efface...

J'ai d'abord pensé à un conflit d'adresse mais l'écran est à l'adresse 0x06 et mon capteur 0x0E.
J'ai essayé un scanner I2C, et quand le capteur n'est pas branché, je vois plein d'adresse apparaître, dont l'adresse du capteur :

I2C Scanner
Scanning...
I2C device found at address 0x02  !
I2C device found at address 0x06  !
I2C device found at address 0x0A  !
I2C device found at address 0x0E  !
I2C device found at address 0x12  !
I2C device found at address 0x16  !
I2C device found at address 0x1A  !
I2C device found at address 0x1E  !
I2C device found at address 0x22  !
I2C device found at address 0x26  !
I2C device found at address 0x2A  !
I2C device found at address 0x2E  !
I2C device found at address 0x32  !
I2C device found at address 0x36  !
I2C device found at address 0x3A  !
I2C device found at address 0x3E  !
I2C device found at address 0x42  !
I2C device found at address 0x46  !
I2C device found at address 0x4A  !
I2C device found at address 0x4E  !
I2C device found at address 0x52  !
I2C device found at address 0x56  !
I2C device found at address 0x5A  !
I2C device found at address 0x5E  !
I2C device found at address 0x62  !
I2C device found at address 0x66  !
I2C device found at address 0x68  !
I2C device found at address 0x6A  !
I2C device found at address 0x6E  !
I2C device found at address 0x72  !
I2C device found at address 0x76  !
I2C device found at address 0x7A  !
I2C device found at address 0x7E  !
done

Et quand le capteur est branché, je n'en vois plus que deux, le capteur et le RTC du shield que j'utilise :

Scanning...
I2C device found at address 0x0E  !
I2C device found at address 0x68  !
done

Quelqu'un saurait ce qu'il peut se passer ?

Merci d'avance

On peut supposer que dans un cas il manque les résistances de tirage au +5V.

J'ai essayé de rajouter des résistances de tirage de 4.7k entre les lignes SDA/SCL et le +5V, et en résultat l'écran affiche quelque chose mais seulement des morceau de ce que je veux, pas la totalité... De plus les données que je reçois de mon RTC sont faussées...

Apres, pour le capteur et le RTC, ma tension de référence est le 3.3V, ne faudrait-il pas que je mette les résistance de tirage au 3V ?

Oui obligatoirement au 3,3 V, jamais au + 5V. En espérant que le fait de les avoir reliée au 5V n'ai pas fait de dégats irréversibles.

Quelle est la raison du choix d'une carte équipée d'un micro ARM 32 ?
PS : Les micro Atmel ARM32 ne sont pas 5V tolérant sur les ports de communication, contrairement aux STM32 !

Ah oui, j'avais pas vu que c'était un M0

J'ai donc bien mis les résistances au 3.3V mais j'ai toujours le même résultat, l'affichage de l'écran ne fonctionne que si le capteur n'est ps branché...

Quelle est la raison du choix d'une carte équipée d'un micro ARM 32 ?
PS : Les micro Atmel ARM32 ne sont pas 5V tolérant sur les ports de communication, contrairement aux STM32 !

Sur le M0, le micro est un ATSAMD21G18. J'ai choisit cette carte qui est sensé etre une extension 32 bits du UNO puisque le UNO que j’utilisai avant n'avait pas une mémoire programme suiffisante

Les masses sont correctement reliées entre les différents sous-ensembles?
L'alimentation est commune?

Oui, il n'y a qu'une alimentation avec une masse commune sur tout le montage

Il faudrait un schéma (épargné moi Fritzing ), une photo du montage.

Autre chose : On trouve des analyseurs logiques à des prix dérisoires en possédé rend moins pénible ce genre de casse-tete.

nathanv0:
Bonjour à tous,

J'ai fais un montage sur une carte Arduino M0, devant permettre de lire des données d'un capteur de champ magnétique et de les afficher sur un écran LCD, tout deux géré par un bus I2C. Cependant, quand je lance l'application sans avoir branché le capteur au montage, l'écran s'allume normalement et ça fonctionne bien, mais quand je branche le capteur, je n'ai plus rien qui s'affiche sur l'écran et tous ce qui était affiché s’efface...

J'ai d'abord pensé à un conflit d'adresse mais l'écran est à l'adresse 0x06 et mon capteur 0x0E.
J'ai essayé un scanner I2C, et quand le capteur n'est pas branché, je vois plein d'adresse apparaître, dont l'adresse du capteur :

I2C Scanner

Scanning...
I2C device found at address 0x02  !
I2C device found at address 0x06  !
I2C device found at address 0x0A  !
I2C device found at address 0x0E  !
I2C device found at address 0x12  !
I2C device found at address 0x16  !
I2C device found at address 0x1A  !
I2C device found at address 0x1E  !
I2C device found at address 0x22  !
I2C device found at address 0x26  !
I2C device found at address 0x2A  !
I2C device found at address 0x2E  !
I2C device found at address 0x32  !
I2C device found at address 0x36  !
I2C device found at address 0x3A  !
I2C device found at address 0x3E  !
I2C device found at address 0x42  !
I2C device found at address 0x46  !
I2C device found at address 0x4A  !
I2C device found at address 0x4E  !
I2C device found at address 0x52  !
I2C device found at address 0x56  !
I2C device found at address 0x5A  !
I2C device found at address 0x5E  !
I2C device found at address 0x62  !
I2C device found at address 0x66  !
I2C device found at address 0x68  !
I2C device found at address 0x6A  !
I2C device found at address 0x6E  !
I2C device found at address 0x72  !
I2C device found at address 0x76  !
I2C device found at address 0x7A  !
I2C device found at address 0x7E  !
done




Et quand le capteur est branché, je n'en vois plus que deux, le capteur et le RTC du shield que j'utilise :



Scanning...
I2C device found at address 0x0E  !
I2C device found at address 0x68  !
done




Quelqu'un saurait ce qu'il peut se passer ?

Merci d'avance

Bonsoir
un prog scanner I²C ne devrait rien detecter sans compos I²C sur le bus
La progression arithmétique des adresses trouvées indique probablement du "gros bruit" sur le bus .

Mets pour test physiquement SCA et SCL à GND de ton arduino sans aucun compos I²C et regarde ce que que rend
"ton scanner I²C"

Bonjour,
Au siècle dernier, on arrivait même à tester les composants I2C avec 2 inters (SDA et SCL) et beaucoup de méthodes et patience.
:slight_smile:

Bonjour,

Pour le test j'ai donc raccorder SDA et SCL au GND et fais le test avec et sans le shield. Sans le shield, aucun appareil n'est détecté. Quand le shield est ajouter, le programme n'arrive pas à se finir, il reste en "scanning". Pour info j'ai juste fais un pont entre les lignes SDA et SCL et le GND par rapport au montage normal.

J'ai ensuite enlevé le pont entre les lignes SDA et SCL et le GND et fais le test du scanner sans l'écran et le capteur de raccordé au montage et je ne vois que l'adresse du RTC (0x68) qui apparait. Je rajoute ensuite le capteur et seul les adresse 0x68 et 0x0E (capteur) apparraissent, jusque là tous va bien.
Mais quand je branche l'écran LCD, c'est la que les ennuis commencent :

Scanning...
I2C device found at address 0x02  !
I2C device found at address 0x06  !
I2C device found at address 0x0A  !
I2C device found at address 0x0E  !
I2C device found at address 0x12  !
I2C device found at address 0x16  !
I2C device found at address 0x1A  !
I2C device found at address 0x1E  !
I2C device found at address 0x22  !
I2C device found at address 0x26  !
I2C device found at address 0x2A  !
I2C device found at address 0x2E  !
I2C device found at address 0x32  !
I2C device found at address 0x36  !
I2C device found at address 0x3A  !
I2C device found at address 0x3E  !
I2C device found at address 0x42  !
I2C device found at address 0x46  !
I2C device found at address 0x4A  !
I2C device found at address 0x4E  !
I2C device found at address 0x52  !
I2C device found at address 0x56  !
I2C device found at address 0x5A  !
I2C device found at address 0x5E  !
I2C device found at address 0x62  !
I2C device found at address 0x66  !
I2C device found at address 0x68  !
I2C device found at address 0x6A  !
I2C device found at address 0x6E  !
I2C device found at address 0x72  !
I2C device found at address 0x76  !
I2C device found at address 0x7A  !
I2C device found at address 0x7E  !
done

Je met la doc de l'écran LCD en pièce jointe si jamais ça peut servir...

CLCD.pdf (357 KB)

Le dit LCD ne serait-il pas configuré en mode RS232 au lieu de l'i2c ?

En théorie non puisque qu'il n'y a que le connecteur CUNET qui est branché et il n'y a rien physiquement que permet de choisir un mode ou l'autre

Essayes le scanner sur l'écran seul mais avec des résistances de tirage au +5V car lui n'en a pas d'intégrée.
As-tu noté que l'adresse programmée sur les interrupteurs doit être multipliée par 2?

@Standby: il n'y a pas de programmation de mode RS232/I²C. Les 2 interfaces sont actives en permanence par contre la doc dit de n'en utiliser qu'une à la fois.

Essayes le scanner sur l'écran seul mais avec des résistances de tirage au +5V car lui n'en a pas d'intégrée.

Euh que veux tu dire par là ? Avec juste l'écran relier au shield ? ou avec juste l'écran directement relié au M0 ? De plus mes résistance de tirage sont relié au +3.3V et non au 5V :

Oui obligatoirement au 3,3 V, jamais au + 5V. En espérant que le fait de les avoir reliée au 5V n'ai pas fait de dégats irréversibles.

As-tu noté que l'adresse programmée sur les interrupteurs doit être multipliée par 2?

J'ai mis les bouton de manière a avoir l'adresse 0x06 et je la vois bien dans la liste donc je ne suis pas sur de bien comprendre

C'est vrai j'oublie toujours que tu utilises un M0 néanmoins, d'après la notice que tu as mise en pièce jointe, l'écran fonctionne en 5V. Il n'est pas dit qu'il fonctionne correctement avec des lignes SCL et SDA tirées au 3,3V pour peu qu'elles soient légèrement bruitées.

Dans la même notice il est indiqué que lorsqu'on programme 6 sur les inter, l'adresse physique de la carte est 0x0C et comme dans les docs techniques la définition des adresses I²C est toujours assez ambiguë il vaut mieux vérifier avec le scanner qu'elle est l'adresse réelle.

Bon donc en gros, le soucis vient du fait que j'utilise un composant (l'écran) qui utilise du 5V sur un bus I2C basé sur le 3.3V, mais le RTC et la capteur fonctionnant au 3.3V, je ne peux pas passer au 5V...Génial...

Des idée pour me sortir de cette galère ?

Pour ce qui est des adresses j'ai tester avec l'adresse 6(0x06) et l'adresse 12(0x0C) et c'est bien l'adresse 0x06 qui fonctionne.

-snip-