Arduino Forum

International => Français => Topic started by: nathanv0 on Jul 21, 2017, 08:09 am

Title: Conflit sur bus I2C
Post by: nathanv0 on Jul 21, 2017, 08:09 am
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 :

Code: [Select]
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 :

Code: [Select]
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
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 21, 2017, 08:43 am
On peut supposer que dans un cas il manque les résistances de tirage au +5V.
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 21, 2017, 09:21 am
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 ?
Title: Re: Conflit sur bus I2C
Post by: 68tjs on Jul 21, 2017, 09:53 am
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 !
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 21, 2017, 10:19 am
Ah oui, j'avais pas vu que c'était un M0
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 21, 2017, 10:25 am
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é...

Quote
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
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 21, 2017, 01:01 pm
Les masses sont correctement reliées entre les différents sous-ensembles?
L'alimentation est commune?
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 21, 2017, 01:03 pm
Oui, il n'y a qu'une alimentation avec une masse commune sur tout le montage
Title: Re: Conflit sur bus I2C
Post by: -Standby on Jul 21, 2017, 01:29 pm
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.
Title: Re: Conflit sur bus I2C
Post by: Artouste on Jul 21, 2017, 09:47 pm
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 :

Code: [Select]
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 :

Code: [Select]
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"
Title: Re: Conflit sur bus I2C
Post by: icare on Jul 22, 2017, 09:39 am
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.
:)
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 08:08 am
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.
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 08:24 am
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 :

Code: [Select]
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...
Title: Re: Conflit sur bus I2C
Post by: -Standby on Jul 24, 2017, 09:08 am
Le dit LCD ne serait-il pas configuré en mode RS232 au lieu de l'i2c ?
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 09:10 am
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
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 24, 2017, 09:11 am
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.
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 09:19 am
Quote
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 :
Quote
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.
Quote
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
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 24, 2017, 10:13 am
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.
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 10:31 am
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.
Title: Re: Conflit sur bus I2C
Post by: -Standby on Jul 24, 2017, 10:39 am
-snip-
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 10:44 am
Des microswitch permettant de choisir la tension de fonctionnement de l'écran ?
Où est ce que tu as vu ça dans la doc parce que je l'ai vu nulle part
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 24, 2017, 11:15 am
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...
Je dirais qu'il y a de fortes chances que le problème vienne de là. Le seul moyen de le confirmer serait d'intercaler des adaptateurs de bus entre la partie 5V et la partie 3,3V.

NXP préconise un montage comme celui-là
(http://forum.arduino.cc/index.php?action=dlattach;topic=490536.0;attach=220026)
On en trouve dans le commerce si tu ne disposes pas des composants pour le réaliser. Comme ici par exemple https://www.lextronic.fr/P28062-module-dinterface-i2c---5v--33v.html (https://www.lextronic.fr/P28062-module-dinterface-i2c---5v--33v.html)
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 11:17 am
Aurais tu un lien pour ces adaptateurs de bus ?
Title: Re: Conflit sur bus I2C
Post by: fdufnews on Jul 24, 2017, 11:21 am
Je viens de mettre à jour mon post précédent
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Jul 24, 2017, 11:28 am
Merci :)

J'ai vu dans la description que ce composant permettait d'interfacer un microcontrôleur (alimenté en +5 V) avec un périphérique I2C™ (alimenté en +3,3 V). Je vais partir du principe que ça marche dans les deux sens.

En tous cas merci pour votre aide et on verra pour la suite quand j'aurais reçu le composant.

En vous souhaitant une bonne journée.
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Aug 21, 2017, 08:19 am
Bonjour à tous,

Je reviens sur ce post après avoir testé le level shiffter sur mon montage.
Alors j'arrive bien à afficher sur l'écran LCD ce que je veux et je réceptionne des données correct du RTC mais quand je fais un scanner I2C avec l'écran LCD de branché j'ai plein d'adresse qui apparaissent :

Voilà ce que je vois sans l'écran de branché :
Code: [Select]
I2C Scanner
Scanning...
I2C device found at address 0x0E  !
I2C device found at address 0x68  !
done

0x68 étant mon RTC et 0x0E mon capteur

Et quand je rajoute l'écran:
Code: [Select]
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 du coup cela me pose quelque soucis au niveau des données que je récupère de mon capteur, le capteur et l'écran LCD se trouvant du coté 5V du bus I2C.

Quelqu'un aurait une idée de ce qu'il peut se passer ?
Cdt,
Nathan
Title: Re: Conflit sur bus I2C
Post by: nathanv0 on Aug 21, 2017, 09:16 am
J'ai essayé pour voir de changer l'adresse de l'écran de 0x06 à 0x05 et on peut voir avec le scanner I2C que les adresses "parasites" ont également baisser de 1:

Code: [Select]
Scanning...
I2C device found at address 0x01  !
I2C device found at address 0x05  !
I2C device found at address 0x09  !
I2C device found at address 0x0D  !
I2C device found at address 0x0E  !
I2C device found at address 0x11  !
I2C device found at address 0x15  !
I2C device found at address 0x19  !
I2C device found at address 0x1D  !
I2C device found at address 0x21  !
I2C device found at address 0x25  !
I2C device found at address 0x29  !
I2C device found at address 0x2D  !
I2C device found at address 0x31  !
I2C device found at address 0x35  !
I2C device found at address 0x39  !
I2C device found at address 0x3D  !
I2C device found at address 0x41  !
I2C device found at address 0x45  !
I2C device found at address 0x49  !
I2C device found at address 0x4D  !
I2C device found at address 0x51  !
I2C device found at address 0x55  !
I2C device found at address 0x59  !
I2C device found at address 0x5D  !
I2C device found at address 0x61  !
I2C device found at address 0x65  !
I2C device found at address 0x68  !
I2C device found at address 0x69  !
I2C device found at address 0x6D  !
I2C device found at address 0x71  !
I2C device found at address 0x75  !
I2C device found at address 0x79  !
I2C device found at address 0x7D  !
done