Go Down

Topic: Conflit sur bus I2C (Read 1 time) previous topic - next topic

nathanv0

Jul 21, 2017, 08:09 am Last Edit: Jul 21, 2017, 08:17 am by 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 :

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

fdufnews

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

nathanv0

#2
Jul 21, 2017, 09:21 am Last Edit: Jul 21, 2017, 09:30 am by nathanv0
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 ?

68tjs

#3
Jul 21, 2017, 09:53 am Last Edit: Jul 21, 2017, 09:55 am by 68tjs
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 !

fdufnews

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

nathanv0

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

fdufnews

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

nathanv0

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

-Standby

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.
The Mind is like a parachute it works best when opened.

Artouste

#9
Jul 21, 2017, 09:47 pm Last Edit: Jul 21, 2017, 09:51 pm by Artouste
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"

icare

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.
:)
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

nathanv0

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.

nathanv0

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...

-Standby

Le dit LCD ne serait-il pas configuré en mode RS232 au lieu de l'i2c ?
The Mind is like a parachute it works best when opened.

nathanv0

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

Go Up